Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
1.3.Obsługaprzerwańiwyjątków
41
określającytrybpracyprocesoraprzyobsłudzeprzerwań(dlaD=0tryb16-bitowypro-
cesorów80286,dlaD=1tryb32-bitowyprocesorów80386oraznowszych),atakżebitW
określający,czydeskryptordotyczyfurtkiprzerwania(W=0),czyfurtkipułapki(W=1).
Skokdoproceduryobsługiprzerwanialubpułapkizwykorzystaniemodpowiedniej
furtkimożebyćzwiązanyzezmianąpoziomuuprzywilejowania.Podczaswykonywa-
niainstrukcjiprzerwańprogramowychINTn,INT3orazINT0procesorsprawdzawar-
tośćpolaDPLwdeskryptorzefurtki.Skokdoproceduryobsługijestwykonywanytylko
wtedy,gdywartośćwpisanawpolepoziomuuprzywilejowaniaprogramuwykonującego
powyższerozkazyjestmniejszalubrównawartościwpisanejdopoziomuuprzywilejo-
waniafurtki:DPLprog
r<=DPLfurtki(najwyższypoziompriorytetujestokreślonyprzez
wartość0).WtensposóbDPLfurtkiokreśla,jakieprogramymogąwywoływaćpodane
wyżejprzerwaniaprogramowe.Podczasobsługiinnychprzerwańorazwyjątkówproce-
sorignorujepoleDPLfurtki.
Poziomuprzywilejowaniasegmentu,wktórymjestumieszczonaproceduraobsłu-
giprzerwaniapowinienbyćmniejszylubrównypoziomowiuprzywilejowaniasegmen-
tu,wktórymznajdujesiębieżącyprogram.Naruszenietejzasadypowodujegenerację
wyjątkuogólnegonaruszeniamechanizmuochrony.Ztegopowoduzalecasię,abypro-
ceduryobsługiprzerwańiwyjątkówznajdowałysięwsegmencieopoziomieprzywileju
DPL=0.Wtensposóbunikasięmożliwościwywoływaniaprzerwańprogramowychprzez
programyoniższympoziomieuprzywilejowania.
Rysunekl.l6.Wykorzystaniestosupodczasobsługiprzerwańiwyjątkówwtrybiechronionym