Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
28
1.Architekturaprocesorówrodzinyx86
1.2.1.Segmentacjapamięciwtrybiechronionym
Podczaspracyprocesorawtrybiechronionymkażdyzsegmentówprogramu,danych
czystosujestopisanyzbioremparametrów,określającychlokalizacjędanegosegmen-
tuwprzestrzeniadresowejpamięciorazzasadydostępudotegosegmentu.Parametry
segmentuprzedstawionewpostaci8-bajtowejstrukturydanych,nazywanejdeskryp-
torem.Podczaswyznaczaniaadresu,procesorwykorzystujedeskryptor,abyokreślić,
czyjestdopuszczalneodwołaniedotegosegmentu,wyznaczyćadreskomórkipamię-
ci(tzw.adresliniowy),atakżesprawdzić,czyadresmieścisięwzakresietegosegmen-
tu.Deskryptorysegmentówprzechowywanewpamięciwpostacitablicdeskryptorów.
Tablicetemogąmiećrozmiaryod8bajtów(deskryptoropisującyjedensegment)do
64kB(8192deskryptory).Występujątrzytypytablicdeskryptorów:
GDT
(ang.GlobalDescriptorTable)globalnatablicadeskryptorów;
LDT
(ang.LocalDescriptorTable)lokalnatablicadeskryptorów;
IDT
(ang.InterruptDescriptorTable)tablicadeskryptorówprzerwań.
TablicaGDTzawieradeskryptory,któremogąbyćstosowaneprzezsystemopera-
cyjnypodczaswykonywaniaswoichzadań.TabliceLDT,którychmożebyćmaksymalnie
8192,zawierajądeskryptorysegmentówużywanychprzezposzczególnezadania(każde
zadaniemawłasnątablicęLDT).TablicaIDTzawieradeskryptorysegmentówwykorzy-
stywanychprzezproceduryobsługiprzerwań.Wtymrozdzialeskupimysięnaopisie
adresowaniapamięciwtrybiechronionymprzeztabliceGDTorazLDT.
Odwołaniedoodpowiedniegodeskryptorawtablicydeskryptorówjestwykonywa-
nezapomocąselektora,zapisanegowjednymzrejestrówsegmentowych:CS,DS,SS,ES,
FS,GS.Selektorjest16-bitowymrekordem,zawierającymtrzypola(rys.1.7).
Rysunekl.7.Formatselektora
Zkażdymzrejestrówsegmentowychjestzwiązany8-bajtowyukrytyrejestrdeskryp-
tora,będącykopiąodpowiedniegodeskryptoraztablicydeskryptorów.PoleRPL(ang.
Requestor’sPrivilegeLevel)określapoziomprzywilejuprogramuwywołującego(mecha-
nizmfunkcjonowaniasystemuochronybędzieomówionywdalszejczęści),poleTI(ang.
TableIndicator)wskazuje,czyselektordotyczytablicyglobalnej(TI=0)czylokalnej
(TI=1),natomiast13-bitowepoleINDEXzawieranumerpozycjiwtablicydeskryptorów.
Dookreśleniaadresubazowegoposzczególnychtablicorazichrozmiaruwprocesorze
przewidzianoodpowiednierejestry:GDTR,IDTR,LDTR.48-bitowerejestryGDTRiIDTR
zawierają32-bitowyadresbazowyodpowiedniejtablicydeskryptoróworaz16-bitowy
rozmiartablicy.Natomiast16-bitowyrejestrLDTRzawieraselektor,określającynumer
pozycjiwglobalnejtablicydeskryptorów,wktórejdeskryptoropisujeumieszczenie