PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : NachOS und VM


gentoo
2004-12-10, 14:04:03
Hallo,

wir müssen für ein Fach (Betriebssysteme) ein Virtual Memory Managment System implementieren.
Dazu gehört leider auch ein copy-on-write, bei einem Systemcall Clone (ähnlich zu fork() unter Linux). Wir haben allerdings das Problem, dass bei einem Clone vielleicht noch nicht alle Pages geladen sind (load on demand). Wenn nun das Kind eine Page nachlädt, sollte dem Vater auch mitgeteilt werden, dass diese Page in den Hauptspeicher geladen wurde, sodass sie der Vater nicht mehr laden muss.
Nun zu meiner Frage:
Mit welcher Datenstruktur könnte man sich merken, welche Address Spaces an welchen Pages interessiert sind?

Interessant wäre noch, wie macht das Linux?

mfg,
eine verzweifelte Gruppe von Studenten.

del_4901
2004-12-10, 15:25:34
Du studierst nicht zufälligerweise mit an der tu-Cottbus bei Prof Nolte?
Weil wir haben das auch als Aufgabe, ich setzt mich da aber erst morgn ran :/

Du könntest einen Mark & Sweep Algo nehmen bzw. den etw. abwandeln.
Um aber echtzeitfähig zu bleiben, würde ich jedes Kind auf seinen Vater zeigen lassen, und beim Vater einfach einen Flag setzten.
Als Datenstruktur tuts auch eine verketteListe, wo die Segmente/Pages nach Adressen sortiert verkettet sind.

Gast
2004-12-10, 15:31:35
Hallo,

auch Studenten in Österreich müssen sich mit NachOS herumschlagen. *fg*
Bei uns heißt der Prof. P. Lipp.

Wir werden uns mal deinen Vorschlag anschauen und uns ein kleines Konzept überlegen.

mfg,
Eine Guppe von Telematik Studenten der TU Graz.

PS:
Falls dir/uns noch was einfällt könnten wir uns ja übers 3DCenter Forum austauschen.

del_4901
2004-12-10, 15:41:08
wenn das suchen in der liste zu lange dauert, dann würde ich einen AVL oder BSP-Baum nehmen. Dann sucht es sich schneller, nach den Adressen.

domineushanas
2004-12-10, 15:46:55
wir finden, dass std::map eine unkomplizierte Loesung ist.

p.s.: fuer meh infos kannst du unser angaben unter http://www.iaik.tu-graz.ac.at/teaching/01_betriebssysteme/uebungen/Assignment_3/index.php finden. waere auch nett wenn du eure Angebe posten wuerdest

NachOS sucks!! :P

del_4901
2004-12-10, 16:00:16
ich glaube das ihr std::map nicht nehmen könnt, weil NachOS ja noch keine Speicherverwaltung hat. wenn map den new Operator benutzt habt ihr ein kleines Problem. (und ich glaube das macht map bzw. vektor) man kann zwar den globalen new Operator umschreiben, aber das sollte man erst machen, wenn die Speicherverwaltung läuft.



Mehr infos:
http://www-bs.informatik.tu-cottbus.de/index.php?id=40

domineushanas
2004-12-10, 16:08:11
Mh...
du scheinst da was mizuverstehen.
Bei uns wird der "Kernel" mit g++ kompiliert, nicht aber die Userprogramme (im test directory).
Du hast ja einen Linux Prozess und das bessere OS (Linux) uebernimmt ja die Speicherverwaltung.
Es kann durchaus pasieren, dass du keine STL includes in NachOS verwenden kannst (bei uns).
Das kommt aber auf die Version an,
Falls du tatsaechlich keine STL includes verwenden kannst, schicken wir dir gerne unseren source, der inzwischen ohne warnings und ohne errors kompiliert.

Trap
2004-12-10, 16:40:47
Man kann std::map auch einen allocator übergeben, man muss nicht das globale new ersetzen.

Der allocator wird für alle internen Speicheranforderungen benutzt.

Stone2001
2004-12-10, 23:01:27
OT: LOL, hättet ihr nicht letztes Jahr NachOS machen können? Dann hätte ich mitgemacht. So bleibt mir nur euch viel Spass mit NachOS zu wünschen. *eg*