Ontwerp en bouw een besturingssysteem/Foutenopsporing/Segmentatie

Uit Wikibooks
Naar navigatie springen Naar zoeken springen
Dit artikel is een beginnetje. U wordt uitgenodigd op bewerk te klikken om uw kennis aan dit artikel toe te voegen. Crystal txt.png

In real mode heeft elk programma de beschikking over maximaal 1 MiB (220 bytes). Om de laatste byte hiervan te adresseren, zou je 20 bits op 1 moeten zetten. Maar omdat in real mode de processor maar kan rekenen met 16 bits, moest er een manier worden gevonden om die laatste 4 bits te kunnen uitdrukken. Daarvoor is het geheugen opgedeeld in segmenten van 64 KiB (16-bits segmenten, 216 bytes). Elk segment begint op een veelvoud van 16 bytes, en ze kunnen elkaar dus overlappen. Dit gebruik van segmenten heet segmentatie.

De x86 processoren hebben een aantal registers gereserveerd voor deze segmenten. Deze registers zijn onafhankelijk van elkaar:

Register Naam Beschrijving
CS Code Segment Voor uitvoerbare code.
DS Data Segment Voor gegevens.
SS Stack Segment Voor de stack.
ES Extra Segment  
FS - Voor algemeen gebruik.
GS

Veel instructies hebben al een 'favoriet' segment register dat ze gebruiken als je niet expliciet wat anders aangeeft.

Protected Mode[bewerken]

In protected mode gebruik je segmenten net als in real mode, maar ze werken anders. De 32-bits segment selector is een offset in de Global Descriptor Table, of GDT. De GDT bevat een aantal 'descriptors'. Elke descriptor beschrijft een deel van het geheugen, en de bijbehorende attributen.

...

 

Informatie afkomstig van http://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.