Seitentabelle - wie Aktualisieren?

Benutzeravatar
Tigger
Kernelcompilierer
Kernelcompilierer
Beiträge: 404
Registriert: 26. Okt 2007 17:35
Wohnort: Hofheim
Kontaktdaten:

Seitentabelle - wie Aktualisieren?

Beitrag von Tigger »

Ich frage mich gerade eins: Wenn ein Prozess auf eine Adresse zugreift, deren Seite sich noch nicht im Arbeitsspeicher befindet, dann schreibt er ja die Seite in den Arbeitsspeicher und aktualisiert seine Seitentabelle. Aber: Was ist mit dem überschriebenen Block. Er weiß ja nicht zu wem (zu welchem Prozess) dieser gehört. Werden dann die Seitentabellen sämtlicher Prozesse, nach dieser Adresse durchsucht, um das v-bit zu setzten? Wenn ich mir vorstelle, das auf einem normalen System dutzende von Prozessen laufen, und jeder ne Seitentabelle von mehreren MB hat, stelle ich mir das ziemlich aufwändig vor.

Benutzeravatar
itportal2
Sonntagsinformatiker
Sonntagsinformatiker
Beiträge: 236
Registriert: 25. Jan 2008 15:34
Wohnort: Darmstadt

Re: Seitentabelle - wie Aktualisieren?

Beitrag von itportal2 »

Ich glaube in der Wirklichkeit arbeitet ein System ein bisschen unterschidelich mit virtuellen Adressen. Da weiß das BS zu welchem Prozess eine virt. Adress gehört.

Steven
Kernelcompilierer
Kernelcompilierer
Beiträge: 425
Registriert: 2. Sep 2008 10:00
Wohnort: Frankfurt am Main

Re: Seitentabelle - wie Aktualisieren?

Beitrag von Steven »

Das BS (bzw. seine Speicherverwaltung) muss sowieso über den Arbeitsspeicher Buch führen. Wenn du Prozess A laufen lässt, dieser die Blöcke 1 - 10 benutzt und anschließend terminiert, stehen in diesen Blöcken immer noch (ab jetzt nutzlose) Daten. Fordert ein neuer Prozess B jetzt Speicher an und bekommt z.B. Block 5 zugeteilt, weiß das BS aber, dass es dort nichts mehr auszulagern gibt.
Der Prozess kümmert sich um so etwas nicht selbst, das kann er auch gar nicht.

Antworten

Zurück zu „Archiv“