Ich beschäftige mich mit Betriebssystemen und der x86-Architektur, und während ich über Segmentierung und Paging las, war ich natürlich neugierig, wie moderne Betriebssysteme mit Speicherverwaltung umgehen. Nach meinem Dafürhalten meiden Linux und die meisten anderen Betriebssysteme im Wesentlichen die Segmentierung zugunsten von Paging. Einige der Gründe, die ich dafür fand, waren Einfachheit und Portabilität.
Welche praktischen Anwendungen gibt es für die Segmentierung (x86 oder anders) und werden wir jemals sehen, dass robuste Betriebssysteme sie verwenden, oder werden sie weiterhin ein Paging-basiertes System bevorzugen?
Jetzt weiß ich, dass dies eine geladene Frage ist, aber ich bin gespannt, wie die Segmentierung mit neu entwickelten Betriebssystemen gehandhabt wird. Macht es so viel Sinn, Paging zu bevorzugen, dass niemand über einen "segmentierten" Ansatz nachdenken wird? Wenn ja warum?
Und wenn ich Segmentierung meide, impliziere ich, dass Linux sie nur so weit nutzt, wie es muss. Nur 4 Segmente für Benutzer- und Kernelcode / Datensegmente. Beim Lesen der Intel-Dokumentation hatte ich gerade das Gefühl, dass die Segmentierung mit Blick auf robustere Lösungen entwickelt wurde. Andererseits wurde mir bei vielen Gelegenheiten gesagt, wie überkompliziert das x86 sein kann.
Ich fand diese interessante Anekdote, nachdem ich mit Torvalds ursprünglicher Ankündigung für Linux verlinkt war. Er sagte dies ein paar Beiträge später:
Ich würde einfach sagen, dass Portierung unmöglich ist. Es ist meistens in C, aber die meisten Leute würden nicht nennen, was ich schreibe C. Es verwendet alle erdenklichen Funktionen des 386, die ich finden konnte, da es auch ein Projekt war, um mich über den 386 zu unterrichten. Wie bereits erwähnt, verwendet es eine MMU , sowohl für Paging (noch nicht auf Festplatte) als auch für Segmentierung. Es ist die Segmentierung, die es WIRKLICH 386 abhängig macht (jede Aufgabe hat ein 64-MB-Segment für Code und Daten - maximal 64 Aufgaben in 4 GB. Jeder, der mehr als 64 MB / aufgabenfeste Cookies benötigt).
Ich denke, meine eigenen Experimente mit x86 haben mich dazu veranlasst, diese Frage zu stellen. Linus hatte kein StackOverflow, also hat er es einfach implementiert, um es auszuprobieren.