ich wollte mal fragen wer von euch welches benutzt und vor allem weshalb?
damit dieser thread nicht verschoben wird noch ne frage dazu:
wenn ich segmentierung nehmen möchte und nun in einer datei 2 data segmente habe, wie wird dass ganze gemanaged? sollte ich ein eintrag in der ldt für beide zusammen machen, oder sie trennen? wenn ich sie trenne, wie kann gcc wissen, was er inst ds laden muss? mit 2 data segmenten meine ich data und bss, oder auch rodata
damit dieser thread nicht verschoben wird noch ne frage dazu:
wenn ich segmentierung nehmen möchte und nun in einer datei 2 data segmente habe, wie wird dass ganze gemanaged? sollte ich ein eintrag in der ldt für beide zusammen machen, oder sie trennen? wenn ich sie trenne, wie kann gcc wissen, was er inst ds laden muss? mit 2 data segmenten meine ich data und bss, oder auch rodata

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
. Aber mal Spaß bei Seite, es kommt doch drauf an was man damit macht. Paging wird ja benutzt um jedem Programm einen eigenen virtuellen Speicherbereich zu verschaffen und so die einzelnen Programme voneinander und vom Kernel abzuschotten. Dazu "hebelt" man die Segmentierung aus indem man alle Segmente über den gesamten Adressraum setzt, und nur das Minimum an Segmenten, sprich Kernel-Code, Kernel-Daten, User-Code und User-Daten setzt. Wenn man jedoch aus irgendwelchen Gründen kein Paging implementieren möchte, kann man die virtuellen Adressbereiche und die damit verbundene Sicherheit auch mit Segmentierung simulieren, indem man jedem Programm ein Code und Daten Segment gibt. Diese zeigen jedoch für jedes Programm auf denselben Speicherabschnitt. Also findet aus Sicht des Programmes garkeine Segmentierung statt. Aus Sicht des Kernels müssen halt nur beim Taskwechsel andere Segmente geladen werden und es ist ein wenig mehr Verwaltungsaufwand für die Segmente nötig.
, daher rührt warscheinlich auch diese Meinung
, ...