Professional Documents
Culture Documents
Tartalomjegyzk
Tartalomjegyzk............................................................................... 3
1.fejezet: Kompatibilits az x86-os architektrkkal ................... 10
1.1. Hardware kompatibilits ........................................................ 10
1.1.1. Software kompatibilits .................................................. 10
1.2. Konkurens tdik genercis x86-kompatibilis
architektrk ........................................................................... 12
1.2.1. Az INTEL Pentium processzora..................................... 12
1.2.1.1. INTEGER egysg ................................................... 13
1.2.1.2. Cache-ek, memria kezels..................................... 15
1.2.1.3. Programg elrejelzs............................................. 17
1.2.1.4. Beptett lebegpontos egysg................................ 18
1.2.1.5. "Bogaras" a koprocesszor ?..................................... 19
1.2.1.6. Sebessgnvel technikk a Pentium osztly
szmtgpeknl..................................................... 19
1.2.1.7. Multiprocesszoros rendszerek................................. 22
1.2.1.8. Adatvdelem........................................................... 23
1.2.2. A Cyrix M1-es processzor csaldja ............................ 24
1.2.2.1. Pipeline vagy szuperpipeline ?................................ 24
1.2.2.2. 32 regiszter jobb mint 8 ! ....................................... 26
1.2.2.3. Cskkentett fggsg - nagyobb sebessg.............. 28
1.2.2.4. Kiegyntett terhels -gyorsabb programfuts ....... 29
1.2.2.5. Kiugrs lehetsge a vgrehajtsi sorrendbl......... 29
1.2.3. A NexGen Nx 586-os processzor csaldja .................... 31
1.2.3.1. Hogyan lehet RISC processzorbl CISC avagy
fbl vaskarika ? .................................................... 31
1.2.3.2. x86 - RISC86 .......................................................... 33
1.2.3.3. Szuperskalr vgrehajts-javul hatsfok............... 35
1.2.3.4. Az utasts-elrejelzsi CACHE (BPC).................. 35
1.2.3.5. Cache hierarchia...................................................... 36
2. fejezet: Processzor erforrsok................................................... 39
Landmark 2.00............................................................................... 40
CHECKIT 3.0................................................................................ 43
MIPS 1.20: (MIPS)........................................................................ 46
3
Tartalomjegyzk
CPUTEST 1.1 (MIPS)................................................................... 48
3. Fejezet: ltalnos CPU programozsi informcik ................. 62
3.1. A memria felptse.............................................................. 62
3.1.1. Nemszegmentlt vagy "lapos" modell ............................ 63
3.1.2. Szegmentlt modell ........................................................ 64
3.2. Regiszterek ............................................................................. 65
3.2.1. ltalnos regiszterek ...................................................... 65
3.2.2. Szegmensregiszterek....................................................... 67
3.2.3. Utastsmutat ................................................................ 69
3.2.4. A verem felptse s hasznlata .................................... 69
3.2.5. Flagregiszter ................................................................... 70
3.2.5.1. llapotbitek............................................................. 71
3.2.6 Rendszer-regiszterek........................................................ 73
3.2.6.1. Rendszer-flagek ...................................................... 74
3.2.6.2. Vezrlregiszterek ................................................. 77
3.2.6.3. Nyomkvet regiszterek ......................................... 82
3.3. CPU zemmdok.................................................................... 84
3.3.1. Vals zemmd ("vals md")....................................... 84
3.3.2. Vdett zemmd............................................................. 84
3.3.3.Rendszermenedzsel zemmd....................................... 84
3.4. Inicializls s az zemmdok kztti tkapcsols ............... 86
3.4.1. A processzor inicializlsa ............................................. 86
3.4.1.1. A processzor llapota reszetels utn ..................... 87
3.4.1.2. Az els vgrehajtott utasts ................................... 90
3.4.1.3. A cache engedlyezse............................................ 91
3.4.2. Software inicializls vals zemmdban...................... 92
3.4.2.1. Rendszertblzatok ................................................. 92
3.4.2.2. Az NMI megszakts............................................... 92
3.4.3. Software inicializlsa vdett zemmdban................... 93
3.4.3.1. Rendszertblzatok ................................................. 93
3.4.3.2. Megszaktsok......................................................... 94
3.4.3.3. Lapozs ................................................................... 94
3.4.3.4. Taszkok................................................................... 96
3.4.3.5. A TLB, BTB s cache tesztelse............................. 97
3.4.4. zemmdvlts .............................................................. 97
3.4.4.1. tkapcsols vdett mdba ...................................... 97
3.4.4.2. Visszakapcsols vals zemmdba ........................ 98
4
Tartalomjegyzk
3.4.5. Plda inicializlsra s zemmd tkapcsolsra............. 99
3.4.5.1. A plda clja............................................................ 99
2.4.5.2. A memria elrendezse a reset-elst kveten ....... 100
3.4.5.3. Az algoritmus.......................................................... 100
3.4.5.4. Eszkzk hasznlata ............................................... 102
3.4.5.5. A STARTUP.ASM listja....................................... 104
3.4.5.6. A MAIN.ASM forrskdja ..................................... 113
3.4.5.7. llomnyok tmogatsa.......................................... 116
3.5. A vals zemmd felptse, mkdse ................................ 119
3.5.1. Cmek lefordtsa............................................................ 119
3.5.2. Regiszterek s utastsok................................................ 120
2.5.3. Megszakts s kivtel kiszolgls ................................ 121
3.5.4. Vals zemmd kivtelek............................................. 122
3.6. A Vdett zemmd felptse, mkdse .............................. 124
3.6.1. Memriaszervez regiszterek. ........................................ 125
3.6.2. Rendszer utastsok ........................................................ 126
3.6.3. Vdett zemmd memriaszervezs ............................ 128
3.6.3.1 A szegmentlsi modell kivlasztsa....................... 131
3.6.3.1.1. A sk modell .................................................... 131
3.6.3.1.2. Vdett sk modell ............................................ 133
3.6.3.1.3. Multiszegmens modell .................................... 134
3.6.3.2. Szegmensfordts .................................................... 136
3.6.3.2.1. Szegmensregiszterek ....................................... 138
3.6.3.2.2. Szegmensszelektorok ...................................... 139
3.6.3.2.3. Szegmens deszkriptorok.................................. 141
3.6.3.2.4. Szegmensdeszkriptor-tblzatok..................... 148
3.6.3.2.5. Deszkriptortblzat bzisregiszterek............... 149
3.6.3.3. Lapfordts .............................................................. 150
3.6.3.3.1. Lapozsi opcik............................................... 151
3.6.3.3.2. Lineris cm..................................................... 152
3.6.3.3.3. Laptblzatok .................................................. 152
3.6.3.3.4. Laptblzat bejegyzsek.................................. 153
3.6.3.3.5. Lapkeret cm.................................................... 154
3.6.3.3.6. A Present (betlttt, jelenlev) bit .................. 154
3.6.3.3.7 Hozzfrt (accessed) s "piszkos" (dirty)
bitek................................................................. 156
3.6.3.3.8. rs/olvass illetve felhasznl/felgyel
bitek................................................................. 156
5
Tartalomjegyzk
3.6.3.3.9. Lapszint cache-vezrl bitek......................... 157
3.6.3.3.10. Fordtsi segdpufferek................................. 157
3.6.3.4. Szegmens- s lapfordts keverse.......................... 158
3.6.3.4.1. A sk modell .................................................... 158
3.6.3.4.2 Tbb lapot tfog szegmensek......................... 159
3.6.3.4.3. Tbb szegmenst tfog lapok.......................... 159
3.6.3.4.4. Nem illeszked lap- s szegmenshatrok........ 159
3.6.3.4.5. Illeszked lap- s szegmenshatrok ................ 159
3.6.3.4.6. Egy laptblzat elhelyezse
szegmensenknt............................................... 161
3.7. Vdelemi mechanizmusok...................................................... 162
3.7.1. Szegmens szint vdelem............................................... 162
3.7.2. A szegmens deszkriptorok s a vdelem........................ 163
3.7.2.1. Tpusellenrzs ....................................................... 164
3.7.2.2. Hatr (limit) ellenrzs ........................................... 167
3.7.3. Privilgium szintek......................................................... 169
3.7.4. Az adathozzfrsek korltozsa.................................... 171
3.7.4.1. Kdszegmensekbeli adatok elrse......................... 173
3.7.5. Vezrlstadsok korltozsa ......................................... 174
3.7.6. Kapudeszkriptorok.......................................................... 176
3.7.6.1. Veremvlts ............................................................ 181
3.7.6.2. Visszatrs egy procedrbl ................................. 185
3.7.7. Az opercis rendszer szmra lefoglalt utastsok ....... 188
3.7.7.1. Privilegizlt utastsok............................................ 188
3.7.7.2. rzkeny utastsok................................................. 189
3.7.8. Mutatk rvnyessgt ellenrz utastsok .................. 189
3.7.8.1. Deszkriptor rvnyessgnek ellenrzse............... 192
3.7.8.2. Mutatk integritsa s az RPL................................ 193
3.7.9. Lapszinti vdelem........................................................... 194
3.7.9.1. A laptblzat bemenetek ltal tartalmazott
vdelmi paramterek.............................................. 194
3.7.9.1.1. A megcmezhet tartomnyt rint
megszortsok.................................................. 195
3.7.9.1.2. Tpusellenrzs................................................ 196
3.7.9.1.3. A vdelem kombinlsa a laptblzatok
mindkt szintjn .............................................. 197
3.7.9.1.4. A lapvdelem fllri .................................... 197
3.7.9.2. Lap- s szegmensvdelem kombinlsa ................. 198
6
Tartalomjegyzk
3.8. Vdett zemmd multitaszking............................................ 200
3.8.1. Taszk-llapot-szegmens................................................. 201
3.8.2. A TSS deszkriptor........................................................... 204
3.8.3. Taszkregiszter ................................................................. 205
3.8.4. Taszk kapudeszkriptorok................................................ 208
3.8.5. Taszkkapcsols ............................................................... 209
3.8.6. Taszkok visszafel kapcsolsa (LINKING) ................... 214
3.8.6.1. A Busy (foglalt) bit megelzi a hurkok
kialakulst ............................................................ 216
3.8.6.2. A taszk visszakapcsolsok mdostsa ................... 217
3.8.7. Taszkok cmtartomnya.................................................. 218
3.8.7.1. Taszkok ltal linerisrl- fizikai cmre vgzett
lekpzs.................................................................. 218
3.8.7.2. A taszkok logikai cmtartomnya .......................... 219
3.9. Vdett zemmd kivtelek s megszaktsok ...................... 222
3.9.1. Kivtel- s megszaktsvektorok................................... 223
3.9.2. Utastsok jraindtsa.................................................... 225
3.9.3. Megszaktsok engedlyezse s letiltsa ..................... 225
3.9.3.1. Tovbbi NMI megszaktsok maszkolsa.............. 226
3.9.3.2. INTR megszaktsok maszkolsa .......................... 226
3.9.3.3. Debug hibk maszkolsa az RF bit segtsgvel .... 227
3.9.3.4. Egyes kivtelek s megszaktsok maszkolsa....... 228
3.9.4. Szimultn kivtelek s megszaktsok kztti
priorits........................................................................ 228
3.9.5. A megszaktsdeszkriptor-tblzat ................................. 230
3.9.6. IDT deszkriptorok........................................................... 231
3.9.7. Megszakts taszkok s megszakts-kezel
procedurk ................................................................... 233
3.9.7.1. Megszakts-kezel procedrk.............................. 233
3.9.7.1.1. A megszakts-kezel eljrs verme .............. 234
3.9.7.1.2. Visszatrs egy megszakts-kezel
eljrsbl ......................................................... 235
3.9.7.1.3. A megszakts-kezel eljrs flag-
hasznlata ........................................................ 236
3.9.7.1.4. Vdelem a megszakts-kezel
eljrsokban..................................................... 236
3.9.7.2. Megszakts-kezel taszkok.................................... 237
3.9.8. Hibakdok....................................................................... 239
7
Tartalomjegyzk
3.9.9. Kivtel felttelek............................................................ 240
3.9.9.1. 0-s szm megszakts - Osztshiba (Divide
Error)...................................................................... 241
3.9.9.2. 1-es szm megszakts - Debug kivtel ................ 241
3.9.9.3. 3-as szm megszakts - Trspont
(Breakpoint) ........................................................... 241
3.9.9.4. 4-es szm megszakts - Tlcsorduls
(Overflow) ............................................................. 242
3.9.9.5. 5-s szm megszakts - Hatrsrts (Bounds
Check) .................................................................... 242
3.9.9.6. 6-os szm megszakts - rvnytelen utasts
(Invalid Opcode) .................................................... 243
3.9.9.7. 7-es szm megszakts - nem elrhet eszkz
(Device Not Available).......................................... 243
3.9.9.8. 8-as szm megszakts - Ketts hiba, dupla
hiba (Double Fault)................................................ 244
3.9.9.9. 9-es szm megszakts - (az Intel ltal
fenntartott, hasznlata nem ajnlott)...................... 246
3.9.9.10. 10-es szm megszakts - rvnytelen TSS
(Invalid TSS).......................................................... 246
3.9.9.11. 11-es szm megszakts - Szegmens nincs
jelen, (Segment Not Present) ................................. 247
3.9.9.12. 12-es szm megszakts - verem kivtel
(Stack Exception)................................................... 249
3.9.9.13. 13-as szm megszakts - ltalnos vdelmi
hiba (General Protection)....................................... 250
3.9.9.14. 14-es szm megszakts - Laphiba (Page
Fault)...................................................................... 252
3.9.9.14.1. Taszkkapcsols alatti laphiba........................ 253
3.9.9.14.2. Laphiba sszefrhetetlen veremmutatval .... 254
3.9.9.15. 16-os szm megszakts - Lebegpontos
egysg hiba, Floating-Point Error) ........................ 255
3.9.9.15.1. Numerikus kivtelek kezelse....................... 257
3.9.9.15.2. Szimultn kivtelekre adott vlaszok............ 258
3.9.9.16. 17-es szm megszakts - Illeszkeds
ellenrzs ellenrzsi hiba (Alignment Check) ..... 259
3.9.9.17. 18-as szm megszakts - Processzortpus
ellenrzs (Machine Check) .................................. 261
8
Tartalomjegyzk
3.9.10. A kivtelek sszefoglalsa............................................ 261
3.9.11. Hibakdok sszefoglalsa ............................................ 263
3.10. Rendszermenedzsel zemmd........................................... 264
3.10.1. Az SMI megszakts ..................................................... 265
3.10.2. Az SMM kezdeti llapota ............................................. 267
3.10.2.1. Az SMM vgrehajtsa........................................... 268
3.10.3. Az SMRAM processzor-llapot trol formtuma....... 269
3.10.3.1. Az SMM revzi-azonost (FEFCH ofszet) ........ 271
3.10.3.2. I/O trap-jraindts (FF00H ofszet) ...................... 272
3.10.3.3. Felfggesztett llapotbl val automatikus
jraindts (FF02H ofszet) ..................................... 273
3.10.3.4. Az llapottrol bzisa (FEF8H ofszet)................ 273
3.10.4. Az SMRAM relokcija............................................... 274
3.10.5. Visszatrs az SMM-bl............................................... 275
3.11. 8086-os virtulis zemmd .................................................. 276
3.11.1. 8086 CPU kd vgrehajtsa.......................................... 277
3.11.1.1. Regiszterek s utastsok ...................................... 277
3.11.2.1. Lapozs a 8086-os virtulis taszkok esetben ...... 278
3.11.2.2. Vdelem egy 8086-os virtulis taszkon bell ....... 279
3.11.3. Belps a 8086-os virtulis zemmdba s az
abbl val kilps ........................................................ 279
3.11.3.1. Taszktkapcsolsok ltali tranzcik..................... 282
3.11.3.2. tmenet trap- s megszaktskapukon
keresztl ................................................................. 282
3.11.4. rzkeny utastsok ...................................................... 285
3.11.5. Virtulis megszaktsok tmogatsa............................. 286
3.11.6. A 8086 opercis rendszerhvsok emulcija............. 286
3.11.7. Virtulis I/O.................................................................. 287
3.11.7.1. I/O-ra lekpezett I/O............................................. 288
3.11.7.2. Memriba lekpezett I/O..................................... 288
3.11.7.3. Klnleges I/O pufferek........................................ 289
3.11.8. Klnbsgek a 8086 CPU-hoz kpest .......................... 289
3.11.9. Klnbsgek a 286 CPU-hoz kpest ............................ 294
3.11.9.1. Privilgiumszint .................................................... 294
3.11.9.2. A busz lezrsa...................................................... 295
3.11.10. Klnbsgek a 386 s 486 CPU-hoz kpest ............... 296
bra- s pldajegyzk...................................................................... 297
9
Tartalomjegyzk
Elzetes a msodik ktet tartalmbl ............................................ 301
10
Hardware kompatibilits
1.fejezet: Kompatibilits az x86-os
architektrkkal
1.1. Hardware kompatibilits
Az INTEL a Pentium processzort (80502, 80503) gy tervezte,
hogy a mr meglv x86-os architektrkkal "fellrl" kompatibilis
legyen. A gyrtk kztti hardware kompatibilitsra kr lenne szt
vesztegetni, ugyanis a hardware felpts szksgkppen elkell hogy
trjen, a jogi vitk elkerlse miatt. Azonban a fejlesztknl, s a
gyrtknl (bzzunk benne hogy nem csak ez) nem ez a f szempont.
Szeretnnek minl gyorsabb, s hatkonyabb tpusokat kifejleszteni e
gyorsul szmtstechnikai piac korltlan "szmtsi hsgnek"
kielgtse rdekben.
1.1.1. Software kompatibilits
Nagyon lnyeges krds azonban a software kompatibilits. A
software kompatibilits megrzse rdekben az alkalmazsok
fejlesztsekor szemeltt kell azokat a bit-eket, Byte-okat amelyek
klnbz hardware architektrk esetn vltozhatnak. Erre a sokfle
processzor verzi, s chip-gyrt miatt kell gyelnnk. Az tdik
genercis x86 kompatibilis processzorok gyrtsa tern sok gyrt s
fejleszt indult csatba. Minden egyes processzornl a kompatibilits
krdst kln meg kell vizsglni. Ma mr vannak neves cgek, amelyek
csak ezen krdsek vizsglatra kteleztk el magukat, pl.: az XXCAL
laboratrium. A tovbbiakban ezen nemzetkzileg elismert "laborcgek"
vizsglati eredmnyeire, vagy a software fejlesztjnek kompatibilitsi
nyilatkozatra fogunk hivatkozni.
Szmos regiszter s memriaszerkezet lersakor egyes bitek
"fenntartott"-knt vannak jellve. Abban az esetben, amikor egy bit
meghatrozatlannak vagy fenntartottnak van jellve, alapvet
kvetelmny az, hogy az jvbeni processzorokkal val kompatibilits
rdekben a software ezeket a biteket gy kezelje, mintha a jvben (br
ismeretlen) hatsuk lenne a processzor mkdsre. A fenntartott bitek
11
Kompatibilits az x86-os architektrkkal
mkdst clszer nemcsak meghatrozatlannak, hanem
kiszmthatatlannak is tekinteni. Ajnlatos, hogy a fenntartott biteket
figyelembe vev software kvesse a kvetkez irnyvonalakat:
A fenntartott biteket tartalmaz regiszterek tesztelsnek eredmnye
ne fggjn az emltett bitek llapottl. Ezrt tesztels eltt ezeket a
biteket maszkolni kell.
A memriba vagy regiszterbe val trols ne fggjn egyetlen
fenntartott bit llapottl sem.
Ne alapozzunk a fenntartott bitekben trolt informci
visszanyersnek lehetsgre.
Egy regiszter feltltsekor a fenntartott biteket mindig a
dokumentciban kzlt rtkekkel tltsk fel. Ha ez nincs
feltntetve, akkor vissza kell tlteni az elzleg onnan kiolvasott
rtkeket.
12
Hardware kompatibilits
1.2. Konkurens tdik genercis x86-kompatibilis
architektrk
1.2.1. Az INTEL Pentium processzora
Az X86-os csald legfiatalabb tagja a Pentium processzor, amelyet
az INTEL gy tervezett, hogy "lefel" 100 %-ban kompatibilis legyen az
X86-os csald elz tagjaival.
Hardware-es
Utasts-
elrejelzs
64 bites
Kd-cache
Busz interface
Prefetch
Buffer-ek
Adat-cache
Regiszter
kszlet
Hardware-es
szorzs
Hardware-es
oszts
Hardware-es
sszeads
FPU
ALU ALU
Pipeline-olt
32 bit 64 bit
64 bit
64 bit
: A Pentium processzor blokkvzlata
uperskalr architektrval pl fl, teht
tt egynl tbb utastst tud vgrehajtani.
egysggel, a processzorlapkra integrlt kln
32 bit
256 bit
64 bit
256 bit 256 bit
32 bit 32 bit
32 bit 32 bit
Integer
Egysg
64 bit
1.1. bra
or sz A Pentium processz
la egyetlen rajel ciklus a
Beptett lebegpontos
13
Konkurens tdik genercis architektrk
kd- s write-back adatcache-sel,
in mkd Intel486 chip-
ez kpest.
ine t utasts vgrehajtsi
zintre tagozdik:
Cmgenerls
Vgrehajts
WriteBack
Utastsok el-betltse
(Instruction Prefetch): Az utastsok
kdjnak a magasabb cmekrl
trtn elzetes beolvassa a
64 bit-es kls adatbusszal, az
jabb 90-100MHz-es tpusok
integrlt MP (Multi Processor)
vezrlvel rendelkeznek.
1.2.1.1. INTEGER egysg
A Pentium processzor szve
a kt beptett utasts pipeline,
amelyek egymstl fggetlenl
mkdnek. Ezek a pipeline-ok
teszik kpess a Pentium
processzort, hogy egy raciklus
alatt kt integer utastst
vgrehajtson. Ez kzel ktszeres
chip sebessget jelent az azonos
frekvenc
h
A Pentium processzor
pipeline-jai azonosak az Intel486
CPU egyszer pipeline-jval, de
magasabb sebessghez
optimalizltk ket. Mindegyik
pipel
s
Prefetch
Utasts dekdols
U V
Pipeline Pipeline
Utasts
dekdols
Cm Cm
generls generls
Vgrehajts Vgrehajts
Write-Back Write-Back
Utasts
dekdols
PREFETCH
1.2. bra: Az INTEGER egysg
14
Az INTEL Pentium processzora
processzorba, a vgrehajtst megelzen; az utastsok vgrehajtsnak
tfedsre hasznlt technika. Amikor egy utasts a prefetch-bl az
utastsdekderbe kerl, a pipeline ksz egy msik, j utasts vgre-
hajtsnak elkezdsre. Sok esetben a Pentium processzor kt utastst is
el tud vgezni egyszerre - egy utastst mindegyik pipeline-ban - ez a
mdszer "utasts prosts" nven ismert.
A prosts felttele, hogy mindkt utastsnak "egyszernek" kell
lennie. Mindegyik pipeline sajt ALU-val (aritmetikai logikai egysg),
cmgenerl egysggel, s adatcache interface-szel rendelkezik.
VGREHAJT EGYSG
MIKROKD ROM
SZEKVENCIA
VEZRL
LIMIT
EGYSG EGYSG EGYSG EGYSG
SZORZ SSZEAD ELTOL REG.
KSZLET
UTASTS
DEKDER
UTASTS
SOR
VEZRLS
CMEK
ROM
BRANCH VEZRLS
VEZRLS
PIPELINE
BELS
ADATBUSZ
BYTE MUX. S
ADATBUSZ
MEMRIA
I/O REGISZTEREK
MEMRIA
MANAGER
1.3. bra: A PIPELINE-ok bels felptsnek blokkvzlata
15
Konkurens tdik genercis architektrk
1.2.1.2. Cache-ek, memria kezels
Az elbb emltett cache egysgek 8 kByte kapacitsak, s az
egyik csak adatokat, a msik csak utastsokat trol. Az elbb emltett
cache-ek ktutas csoport-asszociatv szervezsek s tmogatjk a direct-
map eljrst. A csoport-asszociatv szervezs a cache-felpts olyan
formja, mely egy adattmb helyt a fmemriban leszkti ugyan, de
ennek helye a cache-ben nincs teljes mrtkben meghatrozva. A csoport-
asszociatv felpts a kzvetlen lekpezst megvalst felpts
elyben a fmemria egy adott cmnek csak egyetlen hely felelhet meg
cache-ben), s a teljes mrtkben asszociatv felpts (mely az adatot a
melyik rszbl a cache brmelyik rszbe helyezheti) kzt
k rom n z e
l i, hogy fmemria a ott cmrl az adat n helyen legyen
cache-elve, mely brhol lehet a cache-ben. A cache-vonalak 32 Byte-os
(256 bit) szervezsek, gy a cache ramkrknek elg csak 2* 32 Byte-
os vonalon keresni adatot a teljes cache helyet. Ezen 32 Byte-os vonalak
(a 486DX-ben csak 16 Byte-os vonalak vannak) segtsgvel pl fel a
Pe cesszor 6 bit szles bus a.
proces ak adat-, utaststrolsra van szksge s a
c teljesen fel van tltve, akkor a legrgebben hasznlt
elhagyja, s az gy teremtett res helyet az aktulis
inform cival rja fel l. Az adatcach -nek kt van - m degyik
pipe z eg og ikl t
k velet is feltudja hasznlni ugyanazt az adatot. Ha az adat
mr ppen kikerl az adatcache-bl (s csak akkor), a processzor
visszarja az adatot a f memriba. Ez a technika WRITE-BACK cache
kezels
n
p o
ltal cache-elt adatot prbl elrni.
(m
a
fmemria br
pez komp isszumot. Egy "n-szerese csoport-ass ociatv" cach
ehetv tesz a d
ntium pro
Ha a
ache mr
informcikat
4 z
szorn vagy
e interface-e
y egy rac
in
uson bell k line-ho
lnbz m
y-egy, amely azt biztostja, h
nven ismert.
Abban az esetben ha a processzor az adatot egyidejleg a
fmemriba s a cache-be is berja (a Pentium processzor dinamikusan
tmogatja a Write-Through cache kezelst), WRITE-THROUGH cache
kezelsrl beszlhetnk. A fent emltett eljrsok biztostjk a fmemria
s a cache konzisztencijt. (A konzisztencia klnse
multiprocesszoros rendszerekben fontos, s azt biztostja hogy a
r cesszor ne helytelen rtket kapjon meg, amikor egy msik processzor
Ha a cache-elt adatot megvltoztatja,
16
Az INTEL Pentium processzora
akk
felh koll
ESI szabvnyknt ismert. (MESI= Modified, Exclusive, Shared,
von
ala
pro
em
pro
Ca
, gyorsabb FPU
A hardware reszetet kveten a processzor egy jlmeghatrozott
alapllapotba kerl annak rdekben, hogy megkezdhesse a softwar
v
kapcsolatos informcikat nyjt annak meghatrozsra,
le
azsok a rendelkezskre ll lehetsgeket futsidben
pezik, egy ksbbi fejezet trgyalja, egy plda ksretben. Ez a
l s vdett zemmd konfigur
d kzti tkapcsols folyamatt, mely normlis esetb
in
pldaprogram mutatja be.
1. A processzor inicializlsa 3
Az inicializlst a processzor RESET bemenete idzi el. A
ET aktivlst kveten a processzor egyes regiszterei egy jl
m
p P regiszter tartalma, elegendek ahhoz, hogy a software
sa megkezddjn. A software ez
ban z olyan adatstruk kat, mi t
lyeket a rendszer- s z alkalm e
T aktivlsakor a bels cache-ek, fordtst gyorst pufferek
A gp bekapcsolsakor a RESET jelet a hardware aktivlja. E jelet
a hardware ms esetekben is aktivlhatja; pldul a reszet ltali
inicializls manulisan is elidzhet, egy billentygomb segtsgvel.
Reszetels lehet a hardware v
felf gesztsre vagy a kikapcsolsra.
A Pentium processzornak egy INIT bemenete is van, mely a
RESET-hez hasonlt, azzal a klnbs
b
88
Inicializls s az zemmdok kztti tkapcsols
leb pontos llapotot. Az INIT leh eg etsget nyjt a vdettbl a vals
zemmdba val tkapcsolsra gy, hogy a cache-ek tartalma megmarad.
3.4.
eszt-krs
egvalstsa a hardware-tervez feladata, amennyiben az ntesztre
(Az us, ezrt az Intel
nntartja a jogot magnak az rajelek pontos szmnak bejelents nlkli
gv
regiszter tartalma nulla lesz. Ha a teszt utn az EAX regiszterben nulltl
lnbz rtk van, ez azt mutatja, hogy a processzor hibs. Ha nem
olt nteszt krve, inicializls utn az EAX regiszter tartalma nulla.
Inicializls utn az EDX regiszter a processzor azonostjt s a
3H. Ezt a
mot az inicializl software kivlasztsra felhasznlva a binris
rgykd kompatibiliss tehet ms Intel processzorokkal is. A DL
nostszmt tartalmazza. Reszetels utn az
DX regiszter fels szava fenntartott.
r mutat
pointer
vissza-
trs
utn
Osztsi hiba 0 DIV s IDIV utastsok van
Nyomkvets 1 Akrmi (1.megj)
NMI 2 Nem maszkolhat megszakts van
Trspont 3 INT utasts nincs
Tlcsorduls 4 INTO utasts nincs
Hatr ellenrzs 5 BOUND utasts van
Hibs mveleti kd 6 Fenntartott mveletkdok s van
helytelen LOCK prefix
hasznlat
Eszkz nem elrhet 7 ESC vagy WAIT utastsok van
Dupla hiba 8 Interrupt tbla tl kicsi, hiba
elfordulsa egy msik hiba
kezelse kzben
van
Fenntartva 9
123
ltalnos CPU programozsi informcik
rvnytelen TSS
(3.megjegyzs)
10 JMP, CALL, IRET utastsok,
megszaktsik s kivtelek
van
Szegmens nincs 11 Akrmilyen mvelet, amelyik
jelen (3.megjegyzs) cserli a szegmenseket
van
Stack kivtel 12 Stack ofszet tl nagy van
CS, DS, ES, FG, GS
szegmens tlfuts
13 Ofszet tlnylik a 64K-s
hatron, kd vgrehajtsi
ksrlet a CS hatrn tl
van
Laphiba
(3.megjegyzs)
14 Akrmilyen mvelet, amelyik
hivatkozik a memrira
van
Fenntartva 15 van
Lebegpontos hiba 16 ESC vagy WAIT utastsok van
(2.megj)
Illeszkeds
ellenrzs
(3.megjegyzs)
17 Akrmilyen adat hivatkozs nincs
Fenntartva 18-31
Software
megszakts
0-255 INT n utastsok nincs
Maszkolhat
megszakts
32-255 van
3.19. bra: Kivtelek s megszaktsok
Megjegyzsek:
1. Egyes nyomkvet kivtelek a hibt okoz utastsra mutatnak,
msok az azt kvet utastsra. A kivtel kezel tesztelheti a DR6-os
regiszter tartalmt, hogy megllaptsa, melyik helyzet ll fennt.
2. A lebegpontos hibkat az els olyan ESC illetve WAIT utasts
alatt jelenti, amely a kivtelt elidz ESC utastst kveti.
3. A 10-es, 11-es, 14-es s 17-es kivtelek vals zemmdban nem
jelentkeznek, viszont virtulis 8086-os mdban elfordulhatnak.
124
A vdett zemmd felptse, mkdse
3.6. A Vdett zemmd felptse, mkdse
t inkbb a ksbbi, vdett
zemmdrl s rendszer-programozsrl szl informcik elrevettse.
A processzor architektrlis tulajdonsgainak jelents hnyadt
kizrlag rendszer programozk veszik ignybe. Ebben a rszben ezen
tulajdonsgok ttekintsre kerl sor. A felhasznli programok ri
szmra szksgesnek bizonyulhat e fejezet tolvassa, csakgy mint az
ezt kvet fejezetek, amelyekben a fenntemltett tulajdonsgok
felhasznlsi mdjai kerlnek bemutatsra, annak rdekben, hogy
megrthessk a rendszer programozk rendelkezsre ll hardware
knlta lehetsgeket, amelyekkel az alkalmazi programok szmra
megbzhat s biztonsgos krnyezeteket (environment) hozhatnak ltre.
Ezenkvl, a rendszerszinti architektra hatkony hibaelhrt
(debugging) lehetsgeket is tmogat, amelyeket az alkalmazi
programrk valsznleg szvesen beptennek fejleszts alatt ll
programjaikba.
Az architektra rendszerszinti lehetsgei kz tartoznak a kvetkezk:
memriaszervezs
vdelem
multitaszking
kivtelek s megszaktsok
ki- s beviteli mveletek (Input/Output)
inicializls s zemmdvlts
a lebegpontos egysg (FPU) menedzsmentje
hibaelhrts, nyomkvets
cache szervezs
multiprocesszls
A felsorolt tulajdonsgokat regiszterek s utastsok tmogatjk,
ezek sorra bemutatsra kerlnek a kvetkez rszben. A jelen rsz clja
nem annyira a rszletes bemutatsuk, min
3
A 3.37. bra egyesti a 3.36 s 3.34 brkat, s
c
engedlyezse esetben. A cmfordts mindkt stdiumban ltez
opcik szmtalan klnbz memria szervezsi md tmogatsra
alkalmazhatk.
3.6.3.4.1. A sk modell
futtat, szksges lehet a processzor szegment
k
zem dot kapcsol bitje, de ugyanaz a hats rhet el a verem-, kd- s
tomnyok ugyanazon lineris cmtartomnyr
A
nyi lineris cmtartomnyt takarnak le.
cmt omnyra lekpezhetk. Ha egyszerre, egynl tbb program fut, a
mechanizmus segtsgvel minden egyes programnak nll
omny biztosthat.
160
A vdett zemmd felptse, mkdse
3.6.3.4.2 Tbb lapot tfog szegmensek
A processzor architektrja megengedi olyan szegmensek
hasznlatt, amelyek hossza meghaladja egy lap mrett. Pldul egy
kiterjedt adatsruktra lapok ezreit foghatja t. Ha a lapozs nem lenne
engedlyezett, az adatstruktra brmely rszhez val hozzfrs
megkveteln a teljes adatstruktra jelenltt a fizikai memriban.
Lapozs esetn csak a hozzfrt rszt tartalmazlapnak kell a memriban
lennie.
3.6.3.4.3. Tbb szegmenst tfog lapok
A szegmensek ugyanakor lehetnek a lapoknl rvidebbek is. Ha
egy ilyen szegmens egy, ms szegmensekkel nem megosztott lapon kap
helyet, a fennmarad trterlet "parlagon marad". Pldul egy kis mret
adatstruktra, mint amilyen egy 1 Byte-os szemafor, elfoglal 4 kByte-nyi
helyet, ha egy lapra egyedl kerl elhelyezsre. Ha tbb szemafort
hasznlunk, sokkal gazdasgosabb ugyanarra az egy lapra pakolni ket.
3.6.3.4.4. Nem illeszked lap- s szegmenshatrok
Az architektra nem tesz ktelezv a lapok s a szegmensek
hatra kzt semmilyen megfeleltetst. Egy lap tartalmazhatja egyik
szegmens vgt, illetve egy msik szegmens elejt. Hasonlan, egy
szegmens tartalmazhatja egy lap vgt, illetve egy msik lap elejt.
.6.3.4.5 3 . Illeszked lap- s szegmenshatrok
A memria szervez software egyszerbb s hatkonyabb lehet,
ha bizonyos mrtkben megkveteli a lapok illetve a szegmenshatrok
kzti illeszkedst. Pldul, ha egyetlen lapra elfr szegmens kt lapra
kerl elhelyezsre, ktszer tbb lapozsi mveletre lehet szksg a
egmens elrshez. sz
161
ltalnos CPU programozsi informcik
Szelektor Ofszet
LOGIKAI CM
15 0 31 0
Deszkriptor tblzat
Szegmens
deszkriptor
OR
Tartalomjegyzk Tblzat Ofszet
4k-s Lapkeret
Tartalomjegyzk Ofszet
Lineris cm
Lineris cm (4k-s lapoknl)
Operandus
Laptblzat
Laptblzat
bejegyzs
Lapcmtr
4k-s tartalomjegyzk
bejegyzs
4M-s tartalomjegyzk
bejegyzs
4M-s Lapkeret
Operandus
CR3
(4M-s lapoknl)
lapcm fordts 3.37. bra: Kombinlt szegmens- s
162
A vdett zemmd felptse, mkdse
3.6.3.4.6. Egy laptblzat elhelyezse szegmensenknt
A lapozs s szegmentls egyttes hasznlatnak egyik
lehetsges megkzeltse - amely leegyszersti a memria szervez
software-t - az, hogy minden egyes szegmensnek sajt laptblzata legyen
iztostva, ahogyan azt a 3.38. bra mutatja. Ez a megolds a
egme
b
sz nsnek egyetlen lapcmtr bejegyzst biztost, amely a szegmens
lapozshoz szolgltatja a hozzfrst ellenrz informcikat.
Loklis
deszkriptor
tblzat Laptblzatok
Lapkeretek
Lapcmtr
Lapcmtr
Laptblzat
bejegyzs
Laptblzat
bejegyzs
bejegyzs
Deszkriptor
Deszkriptor
Laptblzat
bejegyzs
Laptblzat
bejegyzs
Lapcmtr
bejegyzs
bejegyzs
Laptblzat
Laptblzat
bejegyzs
3.38. bra: minden egyes szegmensnek biztostani kell sajt laptblzatot
163
ltalnos CPU programozsi informcik
3.7. Vdelemi mechanizmusok
A vdelem egy megbzhat multitaszking szmra
elengedhetetlen. A vdelem clja az, hogy a taszkok egymsba trtn
beavatkozst kikszblje. Pldul, a vdelem megakadlyozhatja az
egyik taszkot abban, hogy egy msik taszk utastsait vagy adatait
fellrja.
Programrs kzben a vdelmi mechanizmus egy tisztbb kpet
megjelenst.
vdelmi mechanizmus
megvhat a feldertetlen program hibk ltal okozott hiba lehetsgtl (a
rejte
vdeni lik a diagnosztizls s
egksrelhet az automatikus helyrellts.
meghatroz bit, amellyel a vdelmi mechanizmust ki lehetne
apcsolni, ugyanaz a hats rhet el azzal, hogy minden egyes szegmens
, illetve azok adataira gyakorolt
eavatkozsnak mennyisgt korltozni lehessen. A vdelem egy rtkes
adhat a program sszeakadsairl. Ha egy program vratlan hivatkozst
tesz egy nem megfelel trterletre, a vdelmi mechanizmus
meggtolhatja az esemnyt, illetve visszajelezheti annak
A vgfelhasznli rendszerekben a
tt hibk sosem maradnak rejtve). Az opercis rendszert meg lehet
a srlsektl, ezltal lehetv v
m
A vdelem lapokra s szegmensekre alkalmazhat. A processzor
egyik regiszterben tallhat kt bit meghatrozza az aktulisan fut
program privilegizlsi szintjt (ms nven aktulis privilgium szint,
vagy CPL). A CPL ellenrzse a szegmentlsi s lapozsi cmfordts
ideje alatt trtnik.
Annak ellenre, hogy nem ltezik egy vezrlregiszter vagy egy
zemmd
k
szelektorhoz, szegmens deszkriptorhoz, illetve laptblzat bejegyzshez
nulls privilgium szintet (a legmagasabb privilegizltsgi szintet)
rendelnk
3.7.1. Szegmens szint vdelem
A vdelem biztostja annak lehetsget, hogy egy helytelenl
mkd program ms programokra
b
164
Vdelmi mechanizmusok
segteszkze a software rsnak, mivel megengedi klnbz software
akeres, stb.) szmra, hogy srtetlenl
egmaradjanak a memriban. Mikor egy felhasznli program elakad, a
a helyrellt eljrsok elindtsra.
en egyes memriahivatkozs esetn ellenrzdik, hogy
a vdelmi feltteleknek. Minden ellenrzs a memriaciklus
be; brmely szablytalansg meggtolja a ciklus
s kivtelt eredmnyez. Minthogy az ellenrzsek a
mfordtssal prhuzamosan trtnnek, nincs teljestmnykiess. t
delm
artomnyt rint megszortsok
4. Az procedrk bemenpontjait rint megszortsok
5. Az utastskszletet rint megszortsok
A vdelem megszegse kivtelt eredmnyez. A kivtel
mechanizmus magyarzatt lsd a fejezet ksbbi rszben Ezen rsz
azokat a vdelem megszegseket rja le, amelyek kivtelekhez vezetnek.
3.7.2. A szegmens deszkriptorok s a vdelem
A 3.39. bra a szegmens deszkriptor azon mezit mutatja be,
melyeket a vdelmi mechanizmus hasznl. A "Tpus" mez klnbz
bitjei az ltaluk elltott funkcikkal vannak elnevezve.
trehoz egy deszkriptort, belltja
nnak vdelmi paramtereit is. ltalnos esetben a felhasznli
terekkel trdnik.
szegme szor betlti mind a szegmens bziscmt,
eszkzk (opercis rendszer, hib
m
rendszer kpes diagnzis zeneteket megjelenteni, illetve a hida esetleges
helyrelltsra. A gyrtsi fzisban a vdelem megbzhatbb teszi a
software-eket azzal, hogy lehetsget biztost az opercis rendszer
szmra
Mind
eleget tesz-e
kezdete eltt indul
elkezdst
c
v i ellenrzs tpus ltezik:
1. Tpus ellenrzs
2. Hatr (limit) ellenrzs
3. A megcmezhet t
a
Amikor az opercis rendszer l
a
programok rinak nem szksges a vdelmi param
Amikor egy program betlt egy szegmensregiszterbe egy
ns szelektort, a proces
165
ltalnos CPU programozsi informcik
mind a vdelmi informcikat. Minden szegmensregiszter lthatalan
rszben hely van biztostva a bziscm, limit, tpus s privilgium szint
trolsra. Amg ez az informci a szegmensregiszterben rezidens, az
ugyanarra a szegmensre irnyul, egymst kvet vdelmi ellenrzsek
teljestmny kimarads nlkl vgezhetk.
3.7.2.1. Tpusellenrzs
A felhasznli kd- s adatszegmensek deszkriptorain kvl, a
processzornak rendszerszegmens- s kapudeszkriptorai is vannak. Ezek
olyan adatstruktrk, amelyek taszkok, illetve kivtelek s megszaktsok
szervezsre hasznlatosak. A 3.40. bra felsorolja a rendszer szegmensek
s kapuk minden definilt tpust. Megjegyzend, hogy nem minden
deszkriptor hatroz meg egy szegmenst; a kapudeszkriptorok a
procedrk bemenpontjaira mutat pointereket tartalmaznak.
Tpus Meghatrozs
Decimlis Binris
0 0000 Fenntartva
1 0001 Hozzfrhet 16 bites TSS
2 0010 LDT
3 0011 Foglalt 16 bites TSS
4 0100 16 bites Call kapu
5 0101 Taszk kapu
6 0110 16 bites megszakts kapu
7 0111 16 bites csapda kapu
8 1000 Fenntartva
9 1001 Hozzfrhet 32 bites TSS
10 1010 Fenntartva
11 1011 Foglalt 32 bites TSS
12 1100 32 bites Call kapu
13 1101 Fenntartva
14 1110 32 bites megszakts kapu
15 1111 32 bites csapda kapu
3.40. bra: Rendszer szegmens- s kapu tpusok
166
Vdelmi mechanizmusok
Az adat- s kdszegmens deszkriptorok tpus mezi olyan biteket
tartalmaznak, amelyek meghatrozzk a tovbbiakban a szegmens cljt
(lsd 3.39. bra)
Az rhat (Writable) bit egy adatszegmens deszkriptorban
meghatrozza, hogy a programok rhatnak-e a szegmensbe.
Az Olvashat (Readable) bit egy kdszegmens deszkriptorban
iszterekbe) olvasva a deszkriptor egy szelektort.
A tpusellenrzs felhasznlhat olyan programozsi hibk
feldertsre, amelyek megksrelnk a szegmenseket a programr
szmra nemkvnatos mdon alkalmazni. A processzor kt alkalommal
ellenrzi a tpusinformcit:
1. Mikor egy deszkriptor szelektora betltdik egy
szegmensregiszterbe. Bizonyos szegmensregiszterek csak
meghatrozott deszkriptorokat tartalmazhatnak; pldul:
A CS regisztert csak vgrehajthat szegmens szelektorval
szabad feltlteni.
A vgrehajthat de nem olvashat szegmensek szelektorai
nem tlthetk be az adatszegmens regiszterekbe.
Csak rhat adatszegmensek szelektorai tlthetk az SS
regiszterbe.
meghatrozza, hogy a programok olvashatnak-e egy szegmensbl
(pldul a kdtartomnyban trolt konstansokat). Egy olvashat
kdszegmens ktflekppen olvashat:
1. A CS regiszter segtsgvel, a CS fllr prefixet
hasznlva
2. Az adatszegmens regiszterbe (DS, ES, FS, vagy GS
reg
167
ltalnos CPU programozsi informcik
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G B
A
V
L
Szegmens
hatr
19-16
1 1 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G D
A
V
L
Szegmens
hatr
19-16
1 1 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0
Tpus
Szegmens hatr 15-0
G
Szegmens
hatr
19-16
1 0 DPL
+4
+0
0
0 1 C R A
0 E W A 0
A - Hozzfrhet
B - Nagy
C - Illeszked
D - Alapbellts
DPL - Deszkriptor privilgium szint
E - lefel nvekv
G - Szemcszettsg
R - Olvashat
W - rhat
3.39. bra: Vdett mdban hasznlt deszkriptor mezk
168
Vdelmi mechanizmusok
2. Mikor az utastsok olyan szegmensekhez frnek hozz, amelyek
deszkriptorai mr be vannak tltve a szegmensregiszterekbe.
Egyes szegmenseket az utastsok csak bizonyos elre
atnak; pldul:
Egyetlen utasts sem rhat egy vgrehajthat szegmensbe.
m olvashat egy vgrehajthat
ashat (Readable) bit nincs
belltva.
.7.2.2. Hatr (limit) ellenrzs
Egy szegmens deszkriptor limit mezje meggtolja a programokat
bban, hogy a szegmensen kvlre cmezhessenek. A hatr gyakorlati
it llapottl. Adatszegmensek esetn a
s. Az E bit a Tpus mez egyik
ens deszkriptorra vonatkozik.
zegmens Byte-okban
meghatrozott mdon hasznlh
Egyetlen utasts sem rhat egy adatszegmensbe ha az
rhat (Writable) bit nincs belltva.
Egyetlen utasts se
szegmensbl, ha az Olv
3
a
rtke fgg a G (Granularity) b
hatr fgg az E (Expansion) bit rtktl i
bitjnek megnevezse, ha adatszegm
Ha a G bit trlve van, a hatr a deszkriptor 20 bites Limit
mezjnek rtke. Ebben az esetben a hatr a 0-tl F_FFFFH rtkig
terjed (2
20
- 1 vagy 1 MByte). Ha a G bit rtke 1, a processzor
beszorozza a limit mez rtkt egy 2
12
sklatnyezvel. Ebben az
esetben a hatr a 0FFFH-tl (2
12
- 1 vagy 4 kByte) egszen
FFFF_FFFFH-ig (2
32
-1 vagy 4 GByte) terjed. Jegyezzk meg, hogy a
sklatnyez hasznlatakor a cm als tizenkt bitje nem kerl limit
ellenrzs al; ha a G bit 1-re van lltva s a szegmenshatr rtke 0, a
szegmensen belli rvnyes ofszetek 0-tl 4095-ig terjednek.
Minden szegmenstpus esetn, kivve a lefele bvl
szegmenseket, a limit rtke egyel kevesebb mint a s
169
ltalnos CPU programozsi informcik
kifejezett hossza. A processzor ltalnos vdelmi hibt idz el a
kvetkez esetek brmelyikben:
Egy olyan memriabeli Byte elrsre tett ksrlet, amelynek a
cme > limit
Egy olyan memriabeli sz elrsre tett ksrlet, amelynek a
cme > (limit-1)
Egy olyan memriabeli duplasz elrsre tett ksrlet,
amelynek a cme > (limit-3)
Egy olyan memriabeli ngyes sz elrsre tett ksrlet,
amelynek a cme > (limit-7)
A lefele bvl adatszegmensek esetben a hatrnak ugyanaz a
funkcija van, csak mskppen van rtelmezve. Ebben az esetben az
rvnyes ofszetek tartomnya a (limit+1)-tl a 2
32
-1 -ig terjed, ha B=1,
illetve 2
16
-1-ig, ha B=0. Egy lefele bvl szegmensnek akkor van
maximlis hossza, ha a szegmenshatr rtke 0.
A limit ellenrzs olyan programhibkat "fedez fel", mint
milyenek a "kiszalad" indexek, illetve az rvnytelen mutat
szmtsok. ktldnak,
zltal a kivlt ok megtallsa egyszerbb. Limit ellenrzs nlkl ezek
tani, s jelezni forrsukat.
amely nem hasznlatos. Annak ellenre, hogy ezt a
a
Ezek a hibk a megjelensk pillanatban dete
e
a hibk fellrhatnnak kritikus trterleteket egy msik modul
belsejben, s az emltett hibk ltezse mindaddig nem lenne
kimutathat, amg a srlt modul ssze nem esne, ez egy olyan esemny
lvn, amely jval a tulajdonkppeni hiba utn kvetkezne be. A vdelem
kpes ezeket a hibkat elhr
A szegmenshatr ellenrzs mellett ltezik mg a
deszkriptortblzatok limit ellenrzse is. A GDTR, LDTR, s az IDTR
regiszterek tartalmaznak egy-egy 16 bites limit rtket. Ezeket a
processzor arra hasznlja, hogy meggtolja a programokat abban, hogy
egy deszkriptortblzaton kvl es szegmens deszkriptort szelektljanak.
A deszkriptortblzat hatrrtke a tblzat utols rvnyes Byte-jt
hatrozza meg. Minthogy minden deszkriptor 8 Byte-nyi hossz, egy N
deszkriptort tartalmaz tblzat hatrrtke 8N-1 kne legyen. Egy
szelektornak az rtke lehet 0 is. Ez a deszkriptor a GDT legels elemre
vonatkozik,
170
Vdelmi mechanizmusok
deszkriptort be lehet tlteni egy szegmensregiszterbe, brmely olyan
ok alacsonyabb
rivilgiumszintet jelentenek. Ha minden egyb vdelmi ellenrzs ki van
gyanaz
hats rhet el minden privilegizlsi szintnek 0-s rtket rendelve. (A
bit; a
vgreh
elrhet d nem engedlyezett, a processzor vals
zemmdban dolgozik, amelyben egy gyors, kiterjesztett 8086-os
megbzhatsgnak javtsra lehet felhasznlni. Az opercis
ndszernek a legmagasabb privilegizltsgot (szmozs szerinti
program al megsrljn. Ha egy program
sszeomlik, az opercis rendszernek megadatik ezltal a lehetsg arra,
y d
ksrel
softwa
program ra. Abban az esetben, ha egy kezelprogram (device
river) fagyna le, az opercis rendszer kpes kell, hogy legyen egy
Egy kezelprogram
prblkozs, amely ezzel a deszkriptorral hivatkozna a memrira,
ltalnos vdelmi hibt vltana ki.
3.7.3. Privilgium szintek
A vdelmi mechanizmus ngy privilgium szintet ismer,
szmozsuk 0-tl 3-ig trtnik. A nagyobb szm
p
elgtve, egy ltalnos vdelmi hiba generldik, valahnyszor egy
program megksrel egy szegmenshez hozzfrni a szegmenshez rendelt
privilgium-szintnl kevsb privilegizlt szinten (nagyobb privilgium
szmmal).
Annak ellenre, hogy nem ltezik a vdelmi mechanizmus
kikapcsolst szolgl vezrlregiszter vagy zemmd-vlt bit, u
a
CR0 regiszter PE bitje nem csak a vdelmi mechanizmust engedlyez
vdett zemmd engedlyezsre hasznlt, vagyis a program-
ajts egy olyan mdjnak, amelyben a teljes 32 bites architektra
. Ha a vdett zemm
processzornak tnik.)
A privilgium-szinteket az opercis rendszerek
re
legkisebb privilegizlsi szintet) biztostva megvdhet attl, hogy ms
okban elfordul gubancok lt
v
processzor nem mdostja ket
v
privilegizlsi szintre trtn hvs esetn j veremtrakat hozzon ltre.
Ezek a vermek a meghvott procedra visszatrse pillanatban eltnnek.
A kvetkez a
k
SS0
SS1
SS2
ESP2
1
32 bites Taszk llapot szegmens
0
8
12
16
20
24
3.47. bra: Kezdeti stack pointerek egy TSS-ben
ESP0
ESP
0 31
100
4
185
ltalnos CPU programozsi informcik
Valah privilgium gvltoztatsa egy call-
ka trt T c lt ve l
ltrehozsra. zor a cl kd PL rtkt (a )
l a gy a 0 s vag pri sz eti
veremmutatjt kivlassza.
Az gmens DPL- kell legyen az j CPL
a SS-hiba generldik. Az opercis
n a l
letv rem . a
e t
l h ll
n l y a
E er t t,
c z s
n
e .
ter ldnak az j A meghvott procedrn
ell a pa int
elyeke zmll
ount) mezje jelzi a proceszszornak, hogy hny duplaszt (maximum
be. Ha
A klnbz privilegizlsi szintek kztti procedrahvskor a
nyszor a -szint me
puval nik, a SS-bl egy m bet svel j rem ker
A process szegmens D z j CPL-t
hasznlja fe rra, ho -s, 1-e y 2-es vilegizlsi int kezd
j veremsze je egyenl
rtkvel; h
rendszer feladata, hogy m
ez nem gy van, egy T
inde lkalmazott
-s sd
privilegiz si szintnek
A ltrehozza a
szegmensdeszkriptoruk tpusm
v il eremt, e a ve zegmen eszkriptort
feltntetet
vermek
zjben
eg
mdon
e e rhat/olvash
tartalmazzanak, a Lim
at us tp ak kell
it mezk
yenek. Elegend
elen, hog
lyet k
ek megfe
e
magukb
e foglalhassk
illetve a me
a s z SS SP regiszt
edrnak s
k tartalm t, a viszsza
amtereket
rsi cm
ghvott pro ksges par s ideiglene
vltozkat.
Ami
hvsokat ill
p z edig a ugyanazon
ra paramterei a verem
a leg privi izlsi szi
be kerlnek
te n n trt
eti, a proced
ek tmso
lhelyezsre
A param
b
verembe.
ramterek ugyanazon relatv cmeket hasznlva rhetk el, m
t a veremvlts nlkl kne alkalmazni. Egy call-kapu s am
(c
31-et) msoljon t a hv verembl a meghvott procedra verem
a szmll rtke 0, egy paramter sem lesz tmsolva.
Ha 31-nl tbb duplaszt kell a meghvott procedrnak tadni, a
paramterek egyike egy adatstruktra mutatja lehet, vagy az SS s ESP
regiszterek elmentett rtkeit a rgi veremterletrl val paramter-
hozzfrshez lehet felhasznlni.
processzor a kvetkez veremmel kapcsolatos mveleteket vgzi:
1. Ellenrzi, hogy a meghvott procedra veremnek mrete elg
nagy legyen ahhoz, hogy befogadja a paramtereket s a
186
Vdelmi mechanizmusok
regiszterek elmentett tartalmt; ha ez nincs teljestve,
veremkivtelt generl.
2. Az SS s ESP regiszterek rgi tartalmt kt duplaszknt lenyomja
a meghvott procedra verembe (a 16 bites SS regiszter 0-s
bitekkel van 32 bitre kiegsztve, a legfels, 0-s kitlts
kiegszt sz az Intel ltal lefoglalt; hasznlata nem ajnlott).
3. A paramtereket a hv procedra verembl a meghvott
procedra verembe msolja t.
4. A CALL utastst kvet utastsra mutat pointert (A CS s EIP
regiszterek rgi rtkeit) lenyomja az j verembe. A hvs utn az
SS s ESP regiszterek a veremben erre a viszszatrsi pointerre
mutatnak.
A 3.48. brn lthat a veremkeret egy sikeres szintek kzti
procedrahvs s visszatrs eltt, kzben s utn.
Parm1
Parm2
Parm3
ESP
ESP
Parm1
Parm2
Parm3
Rgi SS
Rgi ESP
Rgi CS
Rgi EIP
Rgi stack
j stack Rgi stack
hvs eltt
hvs utn,
visszatrs eltt
RET FAR N-el val
visszatrs utn (N=3)
ESP
3.48. bra: Stack keret szintek kztti hvs alatt
A TSS-ben a 3-as privilegizlsi szintnek nincs veremmutatja,
ugyanis egy 3-as privilegizlsi szint procedrt nem hvhat meg egy
kevsb privilegizlt procedra sem. A 3-as privilegizlsi szint verme az
187
ltalnos CPU programozsi informcik
SS s EIP regiszterek tartalma ltal van eltrolva, a
eghvott privilegizlsi szint veremben vannak elm
melyek a 3-as szintrl
entve.
trsi cmet emeli le (pop).
ormlis krlmnyek kztt, a visszatrsi mutat rvnyes, mivelhogy
egy CALL vagy INT utasts hozta ltre. Mgis a processzor elvgzi a
priv lehetsg, hogy az aktulis
pro hatta a mutat rtkt, vagy nem sikerlt
me A viszszatrsi utasts ltal a veremrl
emelt kdszegmens-szelektor RPL rtke meg kell egyezzen a hv
tabb szintek
nyba. Ha a RET utasts tall egy olyan elmentett CS rtket,
lyn
CPL, p
ilyen t
1.
m
Egy call-kapus hvs nem ellenrzi az j verembe msolt szavak
rtkeit. A meghvott procedrnak kell ellenriznie minden paramter
helyessgt.. Egy ksbbi rszben tallhat magyarzat arra, hogy miknt
lehet az ARPL, VERR, VERW, LSL, s LAR utastsok segtsgvel a
mutatk rtkeit ellenrizni.
3.7.6.2. Visszatrs egy procedrbl
A RET utasts "near" formi csak az aktulis kdszegmensen
bell vgeznek vezrlstadst, ezrt csak a limit-ellenrzsnek vannak
alvetve. A CALL utastst kvet parancs ofszetje a verembl lesz
leemelve s az EIP-be tltve. A processzor ellenrzi, hogy ez az ofszet
nem haladja-e meg az aktulis kdszegmens hatrt.
A RET utasts "far" formja egy korbbi "far" tpus CALL
utasts ltal a veremre lenyomott vissza
N
ilgium-ellenrzst, mivel fennll az a
cedra megvltoztat
gtartania helyesen a vermet.
le
procedra privilegizlsi szintjvel.
Egy msik szegmensbe val visszatrs megvltoztathatja a
privilegizlsi szintet, de csakis a kevsb privilegizl
ir
ame ek az RPL-je szmszerint nagyobb (kevsb privilegizlt) mint a
rivilegizlsi szintek kztti visszatrs (return) megy vgbe. Egy
pus visszatrs a kvetkez lpseket teszi meg:
A 3.49. brn bemutatott ellenrzseket vgzi el, s a CS, EIP, SS
s ESP regisztereket feltlti a verembe elmentett elz rtkeikkel.
188
Vdelmi mechanizmusok
2. Az SS s ESP regiszterek rgi tartalmt (az aktulis verem tetejn)
. A DS, ES, GS szegmensek tartalmt ellenrzi. Ha ezen regiszter
privilegizltabb szegmensekhez
frjen hozz.
A kivtel
tpusa
Hibakd
a RET utasts ltal meghatrozott szm Byte-tal kiigaztja. A
keletkez ESP rtket nem veti al veremszegmens hatr
ellenrzsnek. Az a tny, hogy az ESP rtke a hatron kvlre
esik, nem vevdik szre mindaddig, amg a kvetkez verem-
mveletre sor nem kerl. ( A visszatr procedra SS s az ESP
regisztereinek tartalma nincs eltrolva; normlis esetben ezek
rtkei megegyeznek a TSS ltal tartalmazott rtkekkel.)
3
kzl brmelyik egy olyan szegmensre vonatkoznak, amelynek
DPL-je kisebb mint az j CPL (kivve az illeszked
szegmenseket), a szegmensregiszterbe a nulls szelektor tltdik
be (Index=0, TI=0). A RET utasts egymagban ilyen esetben
nem jelez kivteleket; ugyanakkor brmely kvetkez
memriahivatkozs, amely nulls szelektort tartalmaz
szegmensregisztert alkalmaz, ltalnos vdelmi hiba kivtelt
eredmnyez. Ez meggtolja a kevsb privilegizlt kdot abban,
hogy egy privilegizltabb procedra ltal a szegmensregiszterben
hagyott szelektorok segtsgvel
Az ellenrzs tpusa
A verem teteje + 7 a veremszegmens hatrn
bell kell legyen
Stack 0
A visszatr kdszegmens RPL-je nagyobb
kell legyen mint a CPL
Vdelmi CS
A visszatr kdszegmens szelektora nem lehet
nulls szelektor
Vdelmi CS
a
A vissz
deszkroptor-tblzat hatrn bell kell lennie
atr kd szegmensdeszkriptornak a Vdelmi CS
189
ltalnos CPU programozsi informcik
A visszatrst vgz szegmensdeszkriptor
kdszegm
Vdelmi CS
ensre kell vonatkozzon
A visszat k
memriban (present)
Szegmens
nincs jelen
CS r dszegmens jelen kell legyen a
A sszatr, nem illeszked
(nonconfo
kell legyen a v
elektornak RPL rtkvel, illetve a
kdsze
legyen
elektornak RPL rtkvel.
Vdelmi CS vi
rming) kdszegmens DPL-je egyenl
isszatr kd szegmens-
sz
visszatr, illeszked (conforming)
gmens DPL-je kisebb vagy egyenl kell
a visszatr kd szegmens-
sz
ESP + N + 15 * a veremszegmens hatrn bell
kell legye
Stack hiba 0
n
Az ESP +
szelektor nem
N + 12 * helyen tallhat szegmens-
lehet nulls szelektor
Vdelmi SS
Az ESP + +
szegmensdesz
hatrn bell k
N 12 * helyen tallhat
kriptornak a deszkriptor-tblzat
ell lennie
Vdelmi SS
A veremsz gm tor rhat/olvashat
kell legyen
Vdelmi SS e ensdeszkrip
A veremszegm
memriban (p
ens jelen kell legyen a
resent)
Stack hiba SS
A rgi verems
gyen a rgi k
zegmens DPL-je egyenl kell
dszegmens RPL rtkvel
Vdelmi SS
le
A rgi veremszegmens-szelektor RPL-je
egyenl kell legyen a rgi veremszegmens DPL
rtkvel
Vdelmi SS
190
Vdelmi mechanizmusok
* N a RET utastst kvet kzvetlen operandus
3.49. bra: Szintek kztti visszatrs ellenrzs
3.7.7. Az opercis rendszer szmra lefoglalt utastsok
Azokat az utastsokat, amelyek a vdelmi mechanizmust
rinthetik, vagy amelyek befolysolhatjk a rendszer ltalnos
teljestmnyt, csak megbzhat procedrk hasznlhatjk. A
proceszszornak kt ilyen utastscsoportja van:
1. Privilegizlt utastsok - amelyek a rendszer vezrlsre
hasznlatosak
2. rzkeny (sensitive) utastsok - amelyek az I/O, illetve az I/O-
fgg mveletekre hasznlatosak
3.7.7.1. Privilegizlt utastsok
Azok az utastsok, amelyek a vdett szolgltatsokat rinthetik,
csak akkor hajthatk vgre, ha a CPL rtke 0 (legprivilegizltabb). Ha
ezen utastsok kzl brmelyik 0-tl eltr CPL mellett hajtdik vgre,
ltalnos vdelmi hiba kivtel generldik. Ezen utastsok kz
tartoznak a kvetkezk:
CLTS Clear Task-Switched Flag - taszkvltsjelz bit trlse
HLT Halt Processor - lells
INVD Invalidate Cache - bels cache rvnytelentse
VLPG Invalidate TLB Entry - TLB bejegyzs rvnytelentse
GDT Load GDT Register - a globlis deszkriptortblzat-regiszter
bet
IDT
IN
L
ltse
L Load IDT Register - a megszakts
deszkriptortblzatregiszter betltse
LLDT Load LDT Register - a loklis deszkriptortblzat-regiszter
betltse
LMSW Load Machine Status Word - a gpi llapotsz betltse
LTR Load Task Register - taszkregiszter betltse
191
ltalnos CPU programozsi informcik
MOV to/from CRn - Move to Control Register n - adatmozgats a
CRn vezrlregiszterbe
MOV to/from DRn - Move to Debug Register n - adatmozgats a
DRn nyomkvetregiszterbe
WBINVD Write Back and Invalidate Cache - Cache-be val visszars
s rvnytelents
.7.7.2. rzkeny utastsok
ges,
ogy vdve legyenek, ugyanakkor az is szksges, hogy az olyan
procedrk is hasznljk ket, amelyek a 0-tl eltr privilegizlsi
szinten futnak. Az I/O mveletek vdelmi mechanizmust a msodik
ktet rszletezi.
z
psekbl ll:
vgzi az
tasts vgrehajtsa pillanatban, az els ellenrzs elvgzshez a
LAR (Load Access Rights) - hozzfrsi jogot tartalmaz Byte betltse
3
Az I/O mveletekkel foglalkoz utastsok szmra szks
h
3.7.8. Mutatk rvnyessgt ellenrz utastsok
A mutatk rvnyessgt ellenrz utastsok. a privilegizlsi
szintek kztti szigeteltsg fenntartsra szksges. A kvetke
l
1. Annak ellenrzse, hogy a mutatt szolgltatnak van-e joga a
szegmenshez hozzfrni.
2. Annak ellenrzse, hogy a szegmens tpusa kompatibilis-e a
felhasznlsi cljval.
3. Annak ellenrzse, hogy a mutat ofszetje nem haladja-e meg a
szegmenshatrt.
Br a processzor a 2. s 3. ellenrzst automatikusan el
u
software segtsge szksges. E cl rdekben adott az ARPL utasts. A
software is alkalmazhatja inkbb a 2. s 3. lpst, ahelyett, hogy egy
kivtel megjelensre vrakozna. Ezen clt szolgljk a LAR, LSL,
VERR, s VERW utastsok.
192
Vdelmi mechanizmusok
A LAR utasts annak ellenrzsre hasznlatos, hogy a mutat
kompatibilis privilegizlsi szint s tpus szegmensre vonatkozik-e. A
LAR utastsnak egyetlen operandusa van: azon deszkriptor szegmens-
szelektora, amelynek a hozzfrsi jogt vizsglja. Az illeszked
(conforming) kdszegmensek brmely privilegizlsi szintrl
hozzfrhetk. Brmely ms szegmensdeszkriptor olvashat kell legyen a
CPL-nl, illetve a szelektor RPL rtknl szmszerint nagyobb (kevsb
privilegizlt) privilgiumszinten. Ha a deszkriptor olvashat, a LAR
tasts kivlasztja a deszkriptor msodik dupla-szavt, lemaszkolja ezt az
rtket 00FxFF00H-val, eltrolja az eredmnyt a meghatrozott 32 bites
lltja a ZF bitet. (Az x azt mutatja, hogy a
rolt rtk megfelel ngy bitje hatrozatlan.) A betlts utn a
nt a DPL rtke, vagy ha a szegmensszelektor tlpn a
eszkriptortblzat hatrt, a visszaadott rtk 0 lesz s a ZF bit trldik.
l a
eszkriptorokkal lehetsges, amelyek szegmenseket rnak le (adat, kd,
zegmensek (veremszegmensek), ms tpus
egmensektl eltr mdon kezelik a hatrt. gy a LAR, mint a LSL
u
clregiszterbe, s magasra
t
hozzfrsi jogok azonnal tesztelhetk. Brmely rvnyes
deszkriptortpust lehet a LAR utastssal tesztelni. Ha az RPL vagy CPL
nagyobb mi
d
LSL (Load Segment Limit) a szegmenshatr betltse
Az LSL utasts lehetv teszi a software szmra, hogy egy
szegmensdeszkriptor hatrt tesztelje. Ha egy (memriban vagy egy
regiszterben lev) szegmens-szelektor ltal meghatrozott deszkriptor a
CPL mellett olvashat, az LSL utasts feltlti a megadott 32 bites
regisztert egy 32 bites, Byte-felbonts hatrral, amelyet az sszeillesztett
limit mezk s a deszkriptor G bitje alapjn szmt ki. Ez csak azokka
d
taszk-llapot, s loklis deszkriptortblzat); a kapudeszkriptorok nem
rhetk el. (A 3.50. bra rszletesen felsorolja, hogy melyek az rvnyes
tpusok, s melyek nem.) A limit rtelmezse a szegmens tpustl fgg.
Pldul, a lefele bvl adats
sz
utastsok esetn a ZF bit akkor van magasra lltva, ha a betlts sikeres,
ellenkez esetben a ZF bit trldik.
Tpus kd Deszkriptor tpus rvnyes?
0 fenntartva nem
1 fenntartva nem
193
ltalnos CPU programozsi informcik
2 LDT igen
3 fenntartva nem
4 fenntartva nem
5 Taszk kapu nem
6 fenntartva nem
7 fenntartva nem
8 fenntartva nem
9 Lehetsges 32 bites TSS igen
A fenntartva nem
B Foglalt 32 bites TSS igen
C 32 bites call kapu nem
D fenntartva nem
E 32 bites megszakts kapu nem
F 32 bites trap kapu nem
3.50. bra: rvnyes deszzkriptor tpusok LSL mveletekhez
Egy jabb ellenrzs, az illeszkeds-ellenrzs (alignment check)
alkalmazhat a CPL=3 esetn. Amikor gy a CR0-beli AM bit, mint az
AC flag is 1-re van lltva, a nem illesztett (unaligned)
emriahivatkozsok kivteleket generlnak. Ez azon programok
szmra hasznos, amelyek a mutatk als kt bitjt hasznljk az ltaluk
megcmzett adatstruktra tpusnak azonostsra. Pldul, egy
matematikai knyvtr szubrutinja elfogadhat numerikus adatstruktrkra
mutat pointereket. Ha e struktra tpushoz az 10 (binris) kdot
trstjuk az erre a tpusra mutat pointer legals kt bitjn, a matematikai
szubrutinok kijavthatjk a tpuskdot -10 (binris) eltols hozzadsval.
Abban az esetben, ha a szubrutin helytelen mutattpust kapna, egy
illesztetlen (unaligned) hivatkozs jnne ltre, amely kivtelt generlna.
Az illeszkeds-ellenrzs felgyorstja a szimbolikus feldolgozs (azaz a
mestersges intelligencia) nyelvekben megrt programok feldolgozst,
mint amilyen a Lisp, Prolog, Smalltalk s a C++. A pointer-vgek tpus-
ellenrzsnek felgyorstsra lehet hasznlni.
m
194
Vdelmi mechanizmusok
3.7.8.1. Deszkriptor rvnyessgnek ellenrzse
A processzor kt olyan utastssal rendelkezik, a VERR s VERW
utastsokkal, amelyek megllaptjk, hogy a szegmens-szelektor a
jelenlegi CPL mellett rhat vagy olvashat szegmensre mutat. Egyikk
sem okoz vdelmi hibt, ha a szegmens nem hozzfrhet.
VERR (Verify for Reading) a szegmens olvashatsgnak ellenrzse
A VERR utasts olvassra ellenrzi a szegmenst s ha a CPL
mellett a szegmens olvashat, belltja a ZF bitet. A VERR utasts a
kvetkezket ellenrzi:
Hogy a szegmens-szelektor a GDT vagy az LDT hatrain belli
szegmensdeszkriptorra mutat-e.
Hogy a szegmens-szelektor egy kd- vagy adatszegmens deszkriptort
indexel.
Hogy a szegmens olvashat, s egy kompatibilis privilegizlsi szintje
van-e.
Az adatszegmensek s a nem illeszked (nonconforming)
ensek privil glja, hogy a DPL
evsb privilegizlt sz
a e
VERW
azt vizsglja, hogy az deszkriptor a hatrok kztt van-e, hogy
szegme
rivileg CPL-hez, akr a szelektor RPL rtkhez
dsz
kdszegm gium-ellenrzse azt vizs
int legyen akr a CPL-hez, akr a szelektor RPL k
rtkhez viszonytva. Az illeszked (conforming) szegmensek nem
kerlnek privilgiumszint-ellenrzs al.
VERW (Verify for Writing) a szegmens rhatsgnak ellenrzse
A VERW utasts ugyanazokat a kpessgeket nyjtja a szegmens
rsr llenrzshez, mint a VERR utasts Akrcsak a VERR utasts, a
parancs is belltja a ZF bitet, ha a szegmens rhat. Az utasts
nsdeszkriptor legyen, rhat-e, illetve hogy a DPL-je kevsb
izlt szint legyen akr a p
viszonytva. Attl fggetlenl, hogy illeszkedk (conforming) vagy sem,
a k egmensek soha sem rhatk.
195
ltalnos CPU programozsi informcik
3.7.8.
mutat
omlasz
Erre egy kznsges pldul az FREAD (fjl_azonost, Byte-ok
ma, puffer mutat) rendszerprocedra. Ez a kpzeletbeli procedra egy
y pufferbe, fllrva brmit, ami
r benne tallhat. Az alkalmazsok szintjn fut programok krseit
szolglja ki, de privilegizlt mdon kell szaladjon annak rdekben, hogy
lvashasson a rendszer I/O pufferbl. Ha a felhasznli program egy
hibs puffermutat egy olyat, amely
rivilegizlt cmtartomnyban lev kritikus kdra vagy adatra mutatna - a
rocedra a rendszer sszeomlshoz vezet krt okozhatna.
megeng
a privi
kell le
pldban az RPL annak a felhasznli programnak a CPL-je volna,
melyik meghvta a rendszerszint procedrt. A processzor
toma
Annak rdekben, hogy ki legyen hasznlva a processzor ltal
elvgzett RPL-ellenrzs elnye, a meghvott procedrnak csak azt kell
ellenriznie, hogy minden neki tadott szegmens-szelektornak az eredeti
hv CPL-jnek megfelel, vagy annl kevsb privilegizlt RPL rtke
van. Ez garantlja azt, hogy a szegmens-szelektorok nem
privilegizltabbak a forrsaiknl. Ha a szelektor egy olyan szegmenshez
val hozzfrsre van hasznlva, amelyet a forrs nem lenne kpes
kzvetlenl elrni, teht az RPL a szegmens DPL rtknl kevsb
privilegizlt, ltalnos vdelmi hiba kivtel keletkezik amikor a szelektor
a szegmensregiszterbe kerl.
ARPL (Adjust Requested Privilege Level) - a szelektor RPL mezjnek
belltsa
2. Mutatk integritsa s az RPL
A szksges privilegizlsi szint (RPL) megelzheti az olyan
k balesetszer hasznlatt, amelyek kevsb privilegizlt szintrl
tank ssze a privilegizltabb kdot.
sz
lemezen lev fjlbl adatokat olvas be eg
m
o
t adna t ennek a procedrnak -
p
p
Az RPL hasznlata kpes megelzni ezt a problmt. Az RPL
edi egy privilgium-fllr hozzrendelst egy szelektorhoz. Ez
lgium-fllr annak a kdszegmensnek a privilegizlsi szintje
gyen, amely a szegmens-szelektort ltrehozta. A fennemltett
a
au tikusan ellenriz minden szegmensregiszterbe betlttt szegmens-
szelektort, hogy megllaptsa: az RPL je megengedi-e a hozzfrst.
196
Vdelmi mechanizmusok
Az ARPL utasts egy szegmens-szelektor RPL rtkt belltja az
eredeti rtk, s egy ltalnos regiszterben trolt szegmensszelektor RPL
mezjnek rtke kzl a nagyobbik (kevsb privilegizlt) rtkre. Az
RPL mez a szegmens-szelektor s a regiszter kt legjelentktelenebb
bitje. Az utbbi ltalban a hv CS regiszternek verembeli msolata. Ha
a bellts megvltoztatja a szelektor RPL-jt, a ZF bit belltdik (set);
ellenkez esetben a ZF bit trldik.
3.7.9. Lapszinti vdelem
A vdelem gy szegmensekre, mint lapokra is vonatkozik. Ha a
memriaszegmentls sk modelljt hasznljuk, a lapszinti vdelem
meggtolja a programokat abban, hogy egymst zavarjk.
Minden egyes memriahivatkozs megvizsgls al kerl annak
rdekben, hogy meg lehessen llaptani: eleget tesz-e a vdelmi
feltteleknek. Minden ellenrzs a memriaciklus elindtsa eltt kerl
elvgzsre; brmely szablysrts meggtolja a ciklus elkezdst s
kivtelt eredmnyez. Minthogy az ellenrzsek a cmfordtssal
prhuzamosan trtnnek, nincs teljestmny-kiess. Kt lapszint vdelmi
ellenrzs ltezik:
1. A megcmezhet tartomnyt rint megszortsok
2. Tpusellenrzs
A vde tt zemmd
ivtel-mechanizmus magyarzatrol majd ksbb lesz sz. Ez a rsz
zokat a vdelem-megszegseket rja le, amelyek kivtelekhez vezetnek.
laphozzfrst kontrollljk. A vdelmi ellenrzsek mind az els-, mind
msodik szint laptblzatokra is hivatkoznak.
lem megsrtse kivtelt eredmnyez. A vde
k
a
3.7.9.1. A laptblzat bemenetek ltal tartalmazott
vdelmi paramterek
A 3.51. bra a laptblzat bemenet azon mezit emeli ki, amelyek a
a
197
ltalnos CPU programozsi informcik
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 29
P hozzf. 0 0 D A C W
S D T W
Lapkeret cm 31-12
P R
_
P U
_
3.51. bra:
i szintet
lnbztetnk meg, a 0-tl 3-ig. A lapok esetben kt privilegizlsi
zmeghajt
ogramok), illetve vdett rendszeradatok (mint amilyenek
i
szmra.
, minden lap hozzfrhet. Ha a processzor felhasznli
inten fut, csak a felhasznli szint lapjai rhetk el.
R/W - rhat/olvashat
U/S - User/supervisor
Egy laptblzat bejegyzs vdelmi mezi
3.7.9.1.1. A megcmezhet tartomnyt rint megszortsok
A privilgium lapok esetben a szegmensekhez kpest eltr
mdon rtelmezett. A szegmensek esetben ngy privilegizls
k
szint ltezik:
1. Felgyel-szint (U/S=0) - az opercis rendszer, ms
rendszersoftware-ek (mint pldul az eszk
kezelpr
a laptblzatok) rszre.
2. Felhasznli szint (U/S=1) - az alkalmazsok kdja s adata
A szegmentlsra hasznlt privilegizlsi szintek a lapozsnl
hasznlt privilegizlsi szintre vannak lekpezve. Ha a CPL rtke 0, 1,
vagy 2, a processzor felgyel-szinten dolgozik. Ha a CPL=3, a
processzor felhasznli szinten mkdik. Amikor a processzor felgyel-
szinten dolgozik
sz
198
Vdelmi mechanizmusok
3.7.9.1
A vde
. Csak-olvassi hozzfrs (R/W=0)
WP bit
olvasha
process
tartoz
megjel
szint
nem ol iba kivtel
enerldik brmely vdelmi szably megsrtsre tett ksrlet esetn.
process
legyen
bitjne a felhasznli
int lapjainak rsvdettsge irnti " fogkonysgt".
msol
lehet, a
fel j taszkok ltrehozsra. Egy j taszk ltrehozsakor lehetsges a
l szegmens cmtartomnynak teljes lemsolsa. Ez a szrmaztatott
lapszet
on-wri
szegme
mint a
csak ak
bit alka
lapra v
.2. Tpusellenrzs
lmi mechanizmus csak kt tpus lapot ismer fel:
1
2. rsi/olvassi hozzfrs (R/W=1).
Amikor a processzor felgyelszinten szalad s a CR0-s regiszter
je 0-s (a reset inicializlst kvet llapota), minden lap rhat s
t is egyben (az rs-vdettsg figyelmen kvl marad). Ha a
zor felhasznli szinten fut, csak azok a felhasznli szinthez
lapok rhatk, amelyek rsi/olvassi hozzfrsre vannak
lve. Az rhat/olvashat, illetve a csak-olvashat felhasznli
lapok olvashatk. A felgyel-szint lapok sem nem rhatk, sem
vashatk felhasznli szintrl. Egy ltalnos vdelmi h
g
A 386-os processzorral ellenttben, a 486-os s Pentium
zorok megengedik, hogy a felhasznli szint lapok rsvdettek
ek a felgyel mdbeli hozzfrsek ellen. A CR0 regiszter WP
k magasra lltsa engedlyezi a felgyel-szintnek
sz
A felgyel-ellenes rsvdelem lehetsge az n. "rs kzbeni
s" (copy-on-write) stratgijnak implementlsa esetn is hasznos
melyet nmely opercis rendszer, mint pldul a UNIX, hasznl
sz
taszk szmra egy komplett msolatt nyjtja a szl szegmens- s
tjnek. Egy alternatv stratgia, az "rs kzbeni msols" (copy-
te) trterletet s idt takart meg azzal, hogy a gyermek taszk
nseit s lapjait ugyanazokra a szegmensekre s lapokra kpezi le,
melyeket a szl taszk is hasznl. A lapnak egy egyedi msolata
kor kerl megteremtsre, amikor a taszkok egyike a lapra r. A WP
lmazsval a felgyelprogram detektlhatja a felhasznli-szint
al rsi ksrletet, s ugyanakkor tmsolhatja is a lapot.
199
ltalnos CPU programozsi informcik
3.7.9.1.3. A vdelem kombinlsa a laptblzatok mindkt szintjn
Brmely lap esetn, a lapcmtrbeli bejegyzsnek (els szint
laptblzat) vdelmi attribtumai klnbzhetnek a msodik szint
laptblzat bemeneteinek attribtumaitl. A processzor gy ellenrzi egy
p vdelmt, hogy a lapcmtrban (els szint laptblzat), mint a
sodi
van.
SS s IDT).
la
m k szint laptblzatban megadott vdelmi informcit is
tanulmnyozza. A 3.52. bra bemutatja a vdelmi attribtumok lehetsges
kombinciibl add vdelmet, akkor, ha a WP bit trlve
3.7.9.1.4. A lapvdelem fllri
Nmely hozzfrs gy van leellenrizve, mintha a 0-s
privilegizlsi szinten vgbemen hozzfrsek volnnak, a CPL brmely
rtke esetn:
Hozzfrs a szegmensdeszkriptorokhoz (LDT, GDT, T
Hozzfrs a bels veremhez, egy CALL utasts, vagy kivtelek s
megszaktsok kzben, ha a privilegizlsi szint megvltozik.
Lapcmtr bejegyzs Laptblzat bejegyzs Kombinlt effektus
Privil-
gium
hozzfr-
hetsg
Privil-
gium
hozzfr-
hetsg
Privil-
gium
hozzfr-
hetsg
User Csak User Csak User Csak
olvashat olvashat
olvashat
User
olvashat
r
olvashat
User Csak
t
Csak User hat/
olvasha
User Cs
olvashat
User Csak
olvashat
rhat/
olvashat
User ak
User
ashat
r
olvashat
User rhat/
shat
rhat/
olv
User hat/
olva
User isor Csa
olvashat
Sup
olvashat
Csak
olvashat
Superv k ervisor rhat/
User Csak
olvasha
Supervisor rhat/ Supervisor rhat/
olvashat t olvashat
200
Vdelmi mechanizmusok
User
t
Csa
olvashat
Sup
olvashat
rhat/
olvasha
Supervisor k ervisor rhat/
User rha
olvashat
Sup
olvashat
rhat/
olvashat
Supervisor t/ ervisor rhat/
Supervisor Csak User Csak
olvashat
Supervisor rhat/
vashat olvashat ol
Supervisor Csak User rhat/
olvashat
Sup
vashat olvashat
ervisor rhat/
ol
Supervi User Csak
olvashat
Sup
vashat
sor rhat/
olvashat
ervisor rhat/
ol
Supervi
shat
rhat/
olvashat
Sup
olvashat
sor rhat/
olva
User ervisor rhat/
Su vi r Csa
olvashat
Sup
olvashat
per sor Csak
olvashat
Superviso k ervisor rhat/
Su vi r rha
olvashat
Sup
per sor Csak Superviso
olvashat
t/ ervisor rhat/
olvashat
Supervisor rhat/ Supervisor Csak
olvashat
Supervisor rhat/
vashat olvashat ol
Supervi rvisor rhat/
olvashat
Sup
olvashat
sor rhat/
olvashat
Supe ervisor rhat/
pcmtr s laptblzat vdelem
3 . ensvdele omb
engedlyezett, a processzor elszr a szegmens-,
m a i. Ha a proce r vd el
akr a s szintjn, a mvelet nem hajtdik vgre,
ehelyett egy kivtel keletkezik. Ha a szegmentlsnl kivtel generldik,
a mvel hiba kivtelt.
Pldul, adatszegmenst
efinilni, amelynek vannak egyes csak-olvashat, illetve ms,
zat) bejegyzseinek U/S s R/W bitjei az rsi
ozzfrs letiltst hatroznk meg, a lapcmtr-bemenet ltal kijellt
3.52. bra: Kombinlt la
.7.9 2. Lap- s szegm
Ha a lapozs
m k inlsa
ajd lapvdelmet rtkeli k
zegmensek, akr a lapok
et nem vlt ki lap
sszo elemsrtst fedez f
lehetsg van egy olyan kiterjedt
d
rhat/olvashat rszei is. Ebben az esetben, a csak-olvashat rszek
lapcmtr- (vagy laptbl
h
201
ltalnos CPU programozsi informcik
lapok szmra (vagy a msodik szint laptblzatban megadott egyedi
sznlni pldul, egy olyan
amelynek bizonyos rszei csak-
lvasha tok, vagy ROM-ban trolt konstansok
setn). Ez, egy sk adattartomnyt, egyetlen, risi szegmensknt
ugyana
virtuli
terlete
lapok szmra). Ezt a technikt fel lehetne ha
kiterjedt adatszegmens definilsra,
o t tpusak (kzs ada
e
definil, amely sk tartomny hozzfrshez sk mutatk szksgesek,
kkor vdelem al helyezve a kzs adatokat, a megosztott,
s cmterletre lekpezett llomnyokat, illetve a felgyelprogram
it.
202
Vdett zemmd multitaszking
3.8. tt z
A Pentium processzor bizt ltitaszking szmra
szksges hardware tmogatst. A taszk egy olyan program, amely ppen
r on m n
vgreh alatt. m k ,
vagy egy call utas eg. Kt klnbz tpus, taszkokra
vonatkoz deszkriptor ltezik, amelyek egy deszkriptor-tblzatban
me k: taszk-llapot-szegmens deszkriptorok s a taszkkapuk.
A s deszkriptortpus brm k-
kapcs letkezik. A taszkkapcsols t egy procedrahvs,
zo cit trol el. A taszkkapcsols tadja
a vezrlst egy teljesen j krnyezetnek, egy taszk krnyezetnek. Ehhez
ro em er e,
A s
procedrkkal ellenttben a taszkok at A
taszkkapcsols nem be. A processzor
ll emriban trolt adatsruktrba, az n. taszk-
llap at
gi
ott
nnak rdekben, hogy a taszkot folytatni lehessen. A processzor
aktsok s kivtelek taszkkapcsolsokat okozhatnak (ha
Vde emmd multitaszking
ostja a mu
fut, vagy amely ar
ajts
a vr, hogy fuss
Egy taszkot egy
ts hv m
, mikzben egy
egszakts, egy
sik program va
ivtel, egy ugrs
gjelenhetne
mikor a vezrl
ols ke
taddik a kt elyiknek, tasz
olyan, min
csak tbb process r-llapotinform
szksg van a p
idertve az EFL
cesszor majdn
GS regisztert
sszes regiszt
a szegmensregisztereket is. A
nek elmentsr
nem jraindth
mit a verem
k (re-entrant).
nyom le sem
apotinformci a m
ot-szegmensbe lesz elmentve. A multitaszkingot tmog
szterek s adatstruktrk a kvetkezk: re
taszk-llapot-szegmens
taszk-llapot-szegmensdeszkriptor
taszkregiszter
taszkkapudeszkriptor
A felsorolt struktrk segtsgvel, a processzor tadhatja a
ezrlst egyik taszktl a msiknak, elmentve az eredeti taszk llap v
a
ezenkvl kt tovbbi taszk-szervez lehetsget is felknl:
1. A megsz
ez szksges a rendszerben). A processzor nemcsak a
megszaktsok s kivtelek kezelsre kpes taszkkapcsolst
vgrehajtani, hanem automatikusan vissza is tud kapcsolni, amikor
a megszakts vagy kivtel visszatr (return). Ez a mechanizmus
kpes a megszakts-taszkok alatt megjelen megszaktsok
kezelsre.
203
ltalnos CPU programozsi informcik
2. Minden egyes taszkkapcsolskor, a processzor egy j LDT-re is
kpes vltani. Ez arra hasznlhat, hogy minden taszknak egy
klnll logikai cm - fizikai cm megfeleltetst lehessen
biztostani. Ez egy plusz vdelmi lehetsg, ugyanis gy a
eg lehet elzni azt,
hogy egymssal sszeakadjanak. A PDBR regiszter is jratltdik.
i a taszkok egyms kztti elszigetelsnek biztostsra.
alkalm
program
kln
lmentsre szksges id tl hossz lehet. Az ilyen helyzetekben egy
adatstr meg. Ez
hetv teszi egy kisebb terjedelm processzor llapotinformci
ment
bizonyos tpus szegmensbe vannak elmentve,
melyet taszk-llapot-szegmensnek, vagy TSS-nek neveznk. A 3.53.
ja be (a 16
ites, 80286-os processzor taszkjaival val kompatibilitst egy ms tpus
ikus mezk, amelyeket a processzor minden
taszkkapcsolskor felfrisst. Ezek a mezk a kvetkezket
Az ltalnos regisztereket (EAX, ECX, EDX, EBX, ESP,
EBP, ESI, s EDI).
taszkokat el lehet egymstl szigetelni, s m
Ez a tny megengedi, hogy a lapozmechanizmust is fel lehessen
hasznln
A multitaszking-mechanizmus hasznlata opcionlis. Egyes
azsok esetn lehet, hogy nem a legjobb mdja a
vgrehajts megszervezsnek. Ahol a megszaktsokra
sen gyors vlaszra van szksg, ott a processzor llapotnak
e
lehetsges kompromisszum az, hogy hasznljuk a taszkokra vonatkoz
uktrkat, de a taszkkapcsolst software ton valstsuk
le
el st. Ez a technika egyike lehet azon optimizlsoknak, amelyek a
teljestmny nvelsre alkalmazhatk.
3.8.1. Taszk-llapot-szegmens
Egy taszk visszalltshoz szksges processzor-
llapotinformcik egy
a
bra a 32 bites CPU-kra rt taszkok TSS formtumt mutat
b
TSS biztostja, de errl a msodik ktetben lesz rszletesebben sz). Egy
TSS mezi kt f kategriba oszthatk:
1. Dinam
troljk:
204
Vdett zemmd multitaszking
A szegmensregisztereket ( ES, CS, SS, DS, FS, s GS).
A flag regisztert ( EFLAGS)
Az utastsmutatt (EIP)
Az elz taszk TSS-nek szelektort (csak akkor frissti
fel, amikor egy return vrhat).
2. Statikus mezk, amelyeket a processzor olvas, de nem mdost.
Ezek a mezk a taszk ltrehozsakor lesznek belltva. Ezen
mezk a kvetkezket troljk:
A taszk LDT-jnek szelektort.
A taszk PDBR-jt (CR3).
A 0-s, 1-es s 2-es privilegizlsi szintek vermeinek
logikai cmt.
A T bitet (debug trap bit), amely ha 1-re van lltva, arra
kszteti a processzort, hogy valahnyszor egy
taszkkapcsols jelenik meg, debug-kivtelt hozzon ltre. (
A hibakeressrl tbb informci tallhat a msodik
ktetben.)
Az I/O engedlyez bittrkp s a megszakts trnyit
bit-trkp bziscmt. Ha jelen vannak, ezek a bittrkpek
a TSS magasabb cmeire kerlnek eltrolsra. A bziscm
az I/O trkp elejre, illetve a 32 Byte-os megszakts
trkp vgre mutat. (A megszakts-tirnytsrl tovbbi
informcik szintn a msodik ktetben tallhatk).
205
ltalnos CPU programozsi informcik
0 0 0
0 0 0 0 0 0 0 0 0 0 T
0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
A taszk LDT szelektora
FS
GS
DS
SS
CS
ES
EDI
ESI
EBP
60
64
68
72
76
80
84
88
92
96
ESP
SS1
SS0
ESP0 4
8
12
16
20
36
56
100
0
azon r
taszkka
rszbe
jelen le
I/O trkp bzis cm
15 31
EBX
EDX
ECX
EAX
EFLAGS
40
44
48
52
EIP
CR3 (PDBR)
SS2
ESP2
24
28
32
ESP1
LINK (rgi TSS szelektor) 0
3.53. bra: 32 bites taszk llapot szegmens
Ha a lapozs hasznlt, fontos megelzni a laphatroknak a TSS
szbe trtn elhelyezst, melyekbl a processzor olvas a
pcsols idejn (az els 104 Byte). Ha egy laphatr a TSS ezen
kerl, a hatr mindkt oldaln tallhat lapoknak egyidben kell
nnik. Azonfell, ha a lapozs engedlyezett, a kimen taszk TSS-
206
Vdett zemmd multitaszking
nek m
tblza illetve rhat/olvashatnak kell
egjellni. Visszallthatatlan hiba, ha azutn rkezik be egy laphiba,
TSS ol
3.8.2.
egfelel lapokat, az j taszk TSS-t, s mindezek deszkriptor-
t bemenett jelenlvnek,
m
vagy egy ltalnos vdelmi hiba kivtel, miutn a processzor megkezdte a
vasst.
A TSS deszkriptor
Mint minden ms szegmenst, a taszk-llapot-szegmenst is egy deszkriptor
hatroz meg. A 3.54. bra bemutatja a TSS deszkriptor formtumt.
TSS Deszkriptor
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Bziscm 31-24 Bziscm 23-16
Bziscm 15-0 Szegmens hatr 15-0
G
A
V
L
Szegmens
hatr
19-16
DPL
+4
+0
0 0 P 0 1 0 B 1
Tpus
31
- A rendszer software szmra elrhet AVL
- Foglaltsg bit
-
B
PL
a 11-es (decimlis) rtk foglalt taszkot
ent.
Deszkriptor privilgium szint
- Szemcszettsg
- A szegmens jelenltt jelz bit
D
G
P
3.54. bra: TSS Deszkriptor
A tpusmez Foglalt (Busy) bitje jelzi, hogy a taszk foglalt-e. Egy
foglalt taszk ppen fut, vagy arra vr, hogy futhasson. Ha a tpusmez
rtke 9, inaktv taszkot jell,
jel A taszkok nem rekurzvak. A processzor arra hasznlja a Foglalt
bitet, hogy a megszaktott taszkok hvsra tett ksrleteket detektlja.
207
ltalnos CPU programozsi informcik
(Granu zegmens
eszkriptorokbeli szerepkkel azonos funkcijuk van. A Limit meznek
kevese
ttrs,
gener
szks
limit r
Egy TSS deszkriptorhoz hozzfr procedra kivlthat egy
mezinek rtke 3-nl kisebbnek kell lennie, hogy csak a privilegizlt
softwa
proced
deszkri
memr
A TSS deszkriptornak egy szegmensregiszterbe val tltse kivtelt
enerl. A TSS deszkriptorok csak a GDT-ben tartzkodhatnak. Egy TSS
ozzfrsre tett olyan ksrlet, amely egy magasra lltott TI bittel
rendelkez szelektort alkalmaz (ami az aktulis LDT-t jelli), kivtelt
eredmnyez.
3.8.3. Taszkregiszter
A taszkregiszter (TR) az aktulis TSS megtallst szolglja. A
3.55. bra azt az utat mutatja, amit a processzor megtesz a TSS
elrshez.
A taszkregiszternek van egy lthat rsze (teht egy olyan rsze,
amelyet a software olvasni s mdostani kpes), s egy lthatatlan rsze
(azaz egy olyan rsze, amelyet a processzor trol, illetve amely a software
szmra elrhetetlen). A lthat rszben lev szelektor egy TSS
deszkriptor GDT-beli indexe. A processzor a TR lthatatlan rszt a TSS
A Bzis, Limit, s DPL mezknek, illetve a Felbonts
larity) s Jelenlev (Present) biteknek az adats
d
67H-nl nagyobb vagy egyenl rtke kell legyen, ami egy Byte-tal
bb egy taszk-llapot minimlis mretnl. Egy olyan taszkra val
amelynek a TSS deszkriptor-limitje kevesebb mint 67H, kivtelt
l. Egy I/O engedlyez bittrkp hasznlatakor nagyobb limitre van
g. Az opercis rendszernek akkor is szksge lehet egy nagyobb
tkre, ha a TSS-ben a rendszer kiegszt adatokat trol.
taszkkapcsolst. A rendszerek tbbsgben a TSS deszkriptorok DPL
re-ek vgezhessenek taszkkapcsolst.
A TSS deszkriptorhoz val hozzfrs nem adja meg a
rnak azt a kpessget, hogy olvashassa vagy mdosthassa a
ptort. Az olvass vagy a mdosts csak az ugyanarra a
iaterletre lekpezett adat deszkriptor alkalmazsval lehetsges.
g
h
208
Vdett zemmd multitaszking
deszkriptorbl szrmaz bziscm s limit rtknek trolsra hasznlja.
Ezeknek az rtkeknek a megtartsa a taszk vgrehajtst sokkal
hatkonyabb teszi, mivel a processzornak nem kell ezeket az rtkeket a
memribl elrnie, azrt, hogy az aktulis taszk TSS-t megcmezze.
Az LTR s STR utastsok a taszkregiszter lthat rsznek
mdostsra s olvassra hasznlatosak. Mindkt utastsnak egyetlen
operandusa van, egy memriban elhelyezett 16 bites szegmens-szelektor,
vagy egy ltalnos regiszter.
Az LTR (Load Task Register) utasts feltlti a taszkregiszter
lthat rszt az operandussal, amely a GDT-ben lev egyik TSS
deszkriptorhoz kell index legyen. Az LTR utasts ugyanakkor feltlti a
lthatatlan rszt is a TSS deszkriptorbl vett informcikkal. Az LTR
utasts egy privilegizlt utasts, csak akkor hajthat vgre, ha CPL=0.
Az LTR utastst ltalban a rendszerinicializls alkalmval hasznljk
arra, hogy egy kezdeti rtket tegyenek a taszkregiszterbe. Ezt kveten,
a TR regiszter tartalma a taszkkapcsolst elidz esemnyek ltal
mdosul.
Az STR (Store Task Register) utasts egy ltalnos regiszterbe,
vagy a memriba menti el a taszkregiszter lthat rszt. Az STR
utasts szintn privilegizlt.
A taszk kapudeszkriptor egy taszkhoz biztost indirekt, vdett
referencit. A 3.56. bra egy taszkkapu formtumt illusztrlja.
A taszkkapu szelektor mezje index egy TSS deszkriptorhoz.
hasznlt.
A taszkkapu DPL-je szablyozza a taszkkapcsols deszkriptorhoz
al hozzfrst. Egy procedra nem szelektlhat egy taszkkapu
deszkriptort anlkl, hogy a szelektor RPL-je s a procedra CPL-je
numerikusan kisebbek, vagy egyenlk lennnek a deszkriptor DPL
rtkvel. Ez meggtolja a kevsb privilegizlt procedrkat abban,
hogy taszkkapcsolst idzzenek el. Amikor egy taszkkapu kerl
alkalmazsra, a cl TSS deszkriptor DPL rtke nem lesz felhasznlva.
Ennek a szelektornak az RPL rtke nem
v
209
ltalnos CPU programozsi informcik
Taszk llapot szegmens
TSS Deszkriptor
N
Globlis deszkriptor tblzat
Szelektor Bzis cm Szegmens hatr
Lthatatlan rsz Lthat rsz
TR
0
3.55. bra: Taszk regiszter
Egy taszkkapuhoz hozzfr
ugyangy,
taszkkapuk, m
elgtsenek ki:
Foglalt bit trolva van a TSS deszkriptorban, minden
taszknak csak egyetlen ilyen deszkriptora lehet. Ennek ellenre,
ltez
desz ri
2. A t
teljest
s a T
procedra taszkkapcsolst vlthat ki
mint egy TSS deszkriptorhoz hozzfr procedra. gy a
int a TSS deszkriptorok clja az, hogy hrom kvetelmnyt
1. Egy taszknak csupn egyetlen Foglalt (Busy) bitje legyen.
Minthogy a
het szmtalan olyan taszkkapu, amely ugyanazt az egy TSS
ptort szelektlja. k
aszkokhoz szelektv hozzfrst biztostsanak. A taszkkapuk
ik ezt az elvrst, ugyanis helyet foglalhatnak egy LDT-ben
SS deszkriptor DPL rtktl eltr DPL-jk lehet. Egy
210
Vdett zemmd multitaszking
olyan
szintje a GDT-beli TSS deszkriptor hasznlathoz (amelynek a
DPL rtke ltalban 0), mg mindg meghvhat egy msik
r leszktheti a
taszkkapcsolst bizonyos taszkokra.
.8.4. Taszk kapudeszkriptorok
procedra, amelynek nincs meg a kell privilegizlsi
taszkot, ha hozzfrhet annak LDT-jben lev taszkkapuhoz. A
taszkkapuk segtsgvel az opercis rendsze
3
TSS Kapudeszkriptor
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
TSS szegmens szelektor +0
DPL
+4
P 0 0 1 0 1
Tpus
Fenntartva Fenntartva
Fenntartva
- Deszkriptor privilgium szint
ens jelenltt jelz bit
DPL
P - A szegm
3 k kapudeszkriptor
3. y megszakts vagy kivtel taszkkapcsolst eredmnyezzen. A
zkkapuk a amely lehetv teszi a
gszaktsok s kivtelek szm
dmnyezze ts vagy egy kivtel egy
zkkapura m tat, a proceszszor tkapcsol a
ett taszkra
.56. bra: Tasz
Eg
tas z IDT-ben is lehetnek,
me ra, hogy taszkkapcsols
nek. Amikor egy megszak ere
tas utat vektort szolgl
jelz .
211
ltalnos CPU programozsi informcik
.57. bra t, ahogyan mind az LDT-ben
lev taszkkapu, mi IDT-ben helyet foglal taszkkapu
azonos ugyanazt a
A 3 bemutatja azt a mdo
nd pedig az
tja taszkot.
Loklis deszkriptor tblzat Globlis deszkriptor tblzat Taszk sttusz szegmens
apu tor
ngy eset brmelyikben:
Taszk k TSS deszkrip
Megszakts deszkriptor tblzat
Taszk kapu
3.57. bra: Taszkokra jellemz taszk kapuk
3.8.5. Taszkkapcsols
A processzor tadja a vezrlst egy msik taszknak a kvetkez
212
Vdett zemmd multitaszking
1. Az aktv taszk egy JMP vagy CALL utastst hajt vgre egy TSS
Egy megszakts vagy egy kivtel akkor vlt ki taszkkapcsolst,
egszakts kiszolgl rutin mindg visszaadja a vezrlst a
egszaktott procedrnak, amely esetenknt ms taszkban is lehet. Ha az
T bit trlve van, normlis visszatrs kvetkezik. Ha az NT magasra
taszk a
ghat
deszkriptorra.
2. Az aktv taszk egy JMP vagy CALL utastst hajt vgre egy
taszkkapura
3. Egy megszakts vagy egy kivtel az IDT-ben lev egyik
taszkkapura mutat.
4. Az aktv taszk egy IRET utastst hajt vgre, mikzben az NT flag
magasra van lltva.
A JMP, CALL s IRET utastsok, csakgy mint a megszaktsok
s kivtelek, a processzor kznsges mechanizmusai, melyeket olyan
krlmnyek kztt is hasznlni lehet, amelyekben nem jn ltre
taszkkapcsols. A deszkriptor tpusa (amikor a taszk call hvst kap),
illetve az NT bit (ha a taszk visszatr) klnbztetik meg a standard
mechanizmust attl a formtl, amely egy taszkkapcsolst okoz.
A JMP vagy CALL utastsok, annak rdekben, hogy
taszkkapcsolst hozzanak ltre, tadhatjk a vezrlst akr egy TSS
deszkriptornak, akr egy taszkkapunak. Mindkt esetben az eredmny
ugyanaz: a processzor tadja a vezrlst a megadott taszknak.
ha az IDT-ben lev egyik taszkkapura mutat. Ha egy IDT-beli
megszakts vagy trap kapura indexel, taszkkapcsols nem megy vgbe.
Egy m
m
N
van lltva, taszkkapcsols jn ltre. A taszkkapcsolst fogad
egszaktskezel rutin TSS-ben lev TSS szelektor ltal van m
me rozva.
gy taszkkapcsols a kvetkez lpsek szerint trtnik: E
213
ltalnos CPU programozsi informcik
1. Ellenrzi azt, hogy az aktv taszk tkapcsolhat-e az j taszkra. Az
adat-hozzfrsi privilgiumszablyok a JMP s CALL
nyes limitje van-e (nagyobb mint
67H). A hibk visszalltjk a processzor llapotban vgzett
brmely vltoztatst, ha ksrlet trtnik a hiba-generl utasts
-kiszolgl rutin
regiszterek tmsolsra kerlnek az aktulis TSS-be (az EAX,
szegmensregiszterek ES, CS, SS, DS, FS valamint a GS. Az ebben
a lpsben detektlt brmely hiba, megjelenik a bejv taszk
utastsokra vonatkoznak. A TSS deszkriptor s a taszkkapu DPL-
je szmszerint nagyobb (teht alacsonyabb privilegizlsi szinten)
vagy egyenl kell legyen a kapuszelektor CPL s RPL rtkvel.
A megszaktsok, kivtelek s az IRET utasts szmra
megengedett a taszkkapcsols, fggetlenl a cl taszkkapu, vagy a
TSS deszkriptor DPL rtktl.
2. Ellenrzi azt, hogy a bejv taszk TSS deszkriptora jelenlevknt
van-e megjellve, illetve rv
vgrehajtsra. Ez a tny megengedi a kivtel
szmra, hogy a visszatrsi cm a hiba-kivlt utastsra
mutasson, s nem az ezt kvet utastsra. A kivtel-kiszolgl
rutin kijavthatja azt az okot, amely a hibt elidzte, s
jraindthatja a taszkot. A kivtel-kiszolgl rutin beavatkozsa
teljesen ttetsz lehet a felhasznli program szmra.
3. Elmenti az aktulis taszk llapott. A processzor megtallja a
taszkregiszterben az aktulis TSS bziscmt. A processzor
ECX, EDX, EBX, ESP, ESI, EDI, ES, CS, SS, DS, FS, GS s
EFLAGS regiszterek, valamint az utastsmutat).
4. A TR regisztert feltlti a bejv taszk TSS deszkriptorra
vonatkoz szelektorral, belltja a bejv taszk Foglalt bitjt,
illetve a CR0 regiszter TS bitjt. A szelektor vagy egy CALL,
illetve JMP utasts operandusa, vagy egy taszkkapubl
szrmazik.
5. Betlti az j taszk llapott a megfelel TSS-bl, s folytatja a
vgrehajtst. A betlttt regiszterek a kvetkezk: az LDTR
regiszter; a PBDR (CR3); az EFLAGS regiszter; az ltalnos
regiszterek EIP, EAX, ECX, EDX, EBX, ESP, ESI, EDI s a
214
Vdett zemmd multitaszking
krnyezetben. Egy kivtel-kiszolgl rutin szmra gy tnik,
mintha az j taszk els utastsa nem lett volna vgrehajtva.
Fontos, hogy taszkkapcsols esetn a kimen taszk llapota
n
kez tben kvetkezett volna. A regiszterek azokra
z rtkekre lesznek visszalltva, amelyeket a megllsuk pillanatban
rtalmaztak.
Minden taszkkapcsols magasra lltja a CR0 regiszter TS (Task
A TS bit azt mutatja, hogy a lebegpontos egysg krnyezete
17. rutinok rekurzv
vsok alanyai lehetnek, ha megksrelik a kivtelt ltrehoz szegmens-
els
privilegizlsi szintje kztt nincs sszefggs. Minthogy a taszkokat
lszigetelik egymstl a fggetlen cmtartomnyaik s taszkllapot-
elle
A b
priv
ps llapot ellenrzs Kivtel
1
Hibakd
mi dig elmentdik. Ha a taszk folytatdik, a vezrls azzal az utastssal
ddik, amely normlis ese
a
ta
Switched) bitjt. A TS bit a rendszersoftware szmra hasznos az integer
s a lebegpontos egysgek mveleteinek koordinlsra.
eltrhet az aktv taszk krnyezettl.
A taszkkapcsolsok ltal okozott kivteleket (a 3.58. bra 5.-tl
-ig terjed pontjaibl add kivteleket) kezel
h
szelektort jra betlteni. A kivtel okt (vagy a tbbszrs okok kzl az
t) meg kell szntetni, mieltt a szelektor jratltdne.
A kimen taszk privilegizlsi szintje s a bejv taszk
e
szegmenseik, s mivel a TSS-hez val hozzfrst privilgium szablyok
nrzik, a taszkkapcsolshoz nincs szksg a privilgium vizsglatra.
ejv taszk a CS regiszter j tartalmnak RPL rtke ltal mutatott
ilegizlsi szinten kezd vgrehajtdni, amelyet a TSS-bl tlt be.
L
hivatkozs
1
van a memriban
NP Az j taszk TSS-e A TSS deszkriptor jelen
2 A TSS deszkriptor nem
foglalt
TS, GP A taszk visszakap-
csolt TSS-e
215
ltalnos CPU programozsi informcik
3 A TSS szegmens hatr
nagyobb vagy egyenl mint
108
TS Az j taszk TSS-e
4 A regiszterek feltltve a TSS rtkeivel
5 Az j rvnyes taszk LDT TS Az j taszk LDT-
szelektora
2
je
6 A kdszegmens DPL rtke TS j kdszegmens
megegyezik a szelektor
RPL rtkvel
7 Az SS szelektor rvnyes
2
TS j verem-
szegmens
8 A veremszegmens jelen
van a memriban
SF j verem-
szegmens
9 A veremszegmens DPL
rtke megegyezik a CPL
rtkkel
TS j verem-
szegmens
10 Az j taszk LDT-je jelen TS A
van a memriban je
z j taszk LDT-
11 A CS szelektor rvnyes
2
TS j kdszegmens
12 A kdszegmens jelen van a
memriban
NP j kdszegmens
13 A veremszegmens DPL
rtke megegyezik a
szelektor RPL rtkvel
TS j verem-
szegmens
14 A DS, ES, FS s GS
szelektorok rvnyesek
2
TS j adatszegmens
15 A DS, ES, FS s GS
szegmensek olvashatk
TS j adatszegmens
16 A DS, ES, FS s GS NP j adatszegmens
szegmensek jelen vannak a
memriban
17 A DS, ES, FS s GS
szegmensek DPL rtke
nagyobb vagy egyenl a
CPL rtkvel
TS j adatszegmens
3.58. bra: Taszkvlts alatti ellenrzs
216
Vdett zemmd multitaszking
Megjegyzsek: A jvbeli Intel processzorok az ellenrzseket eltr
sorrendben vgezhetik.
1. NP= a szegmens nincs jelen kivtel,
= vdelmi hiba kivte
S= le
SF= veremhiba k
. Egy szelektor akkor rvnyes, ha egy kompatibilis tpus
tblzatban van (pldul egy LDT szelektor nem lehet brmilyen
ms tblzatban a GDT-n kvl), a tblzat szegmenshatrn belli
cm el deszkriptorra utal
(pl r k abban az esetben
rvnyes, ha egy utat, a deszkriptor
tpusa a tpusme
3.8.6. Taszkok visszafel kapcsolsa (LINKING)
m hogy az elz
utatja, hogy az
ppen vgrehajts alatt azva egy msik taszkba, s
az aktv taszk TSS-nek taszk TSS
szelektort trolja, ha ltezik ilyen. (lsd a 3.59. brt).
GP ltalnos lek,
T "rvnyte n TSS" kivtel,
ivtel.
2
et foglal
dul a CS
, s egy kompatibilis tpus
ktor csa egiszterben lev szele
kdszegmens deszkriptorra m
zben van megadva).
A
taszknak visszaszolgltassa a vezrlst. Az NT flag m
TSS Link ezje s az NT jelzbit clja,
egm
ll taszk be van-e g
magasabb szinten lev
y
Link mezje a
217
ltalnos CPU programozsi informcik
TSS TSS TSS
Legfels szint taszk Begyazott taszk Mlyebben begyazott tasz
LINK LINK LINK
NT=0 NT=1 NT=1
k Jelenleg fut taszk
EFLAGS
NT=1
TR regiszter
3.59. bra: Begyazott taszkok
Amikor egy megszakts, kivtel, jmp vagy call taszkkapcsolst
eredmnyez, a processzor bemsolja az aktulis taszk-llapot-szegmens
elektort az j taszk TSS-be, s belltja az NT bitet. Az NT flag azt
jelzi, hogy a TSS Link mezjbe egy elmentett TSS szelektor kerlt
etltsre. Az j taszk egy IRET utasts vgrehajtsval adja vissza a
vez al
erl. Ha ez 1-re van lltva, a processzor taszkkapcsolst vgez az elz
sz
b
rlst. Az IRET utasts vgrehajtsakor az NT bit ellenrzs
k
taszkra. A 3.60. bra sszefoglalja azon TSS mezk szerept, amelyeket a
taszkkapcsols rint.
Mez Az ugrs hatsa A CALL utasts
vagy
megszakts
hatsa
Az IRET
utasts hatsa
Az j taszk Busy
bitje
A bit belltva
(eltte trltnek
kell lennie)
A bit belltva
(eltte trltnek
kell lennie)
Nem vltozik,
1-nek kell lennie
A rgi taszk
Busy bitje
A bit trlt Nem vltozik A bit trlt
218
Vdett zemmd multitaszking
Az j taszk NT
flagje
Nem vltozik A flag
belltdik
Nem vltozik
A rgi taszk NT Nem vltozik Nem vltozik A flag trlt
flagje
Az j taszk Link
mezje
Nem vltozik A szelektorral
betltve
Nem vltozik
A rgi taszk
Link mezje
Nem vltozik Nem vltozik Nem vltozik
3.60. bra: A taszkvltsok hatsa a Busy, NT s LINK m
ezkre
Megjegyzend, hogy az NT flaget brmely privilegizlsi szinten
z NT bitet s vgrehajtson egy IRET utastst, aminek az
olna a kvetkezmnye, hogy meghvsra kerlne az aktulis taszk TSS-
ne l megjellt taszk. Annak rdekben, hogy a hamis
taszkkapcsolsok ne jrjanak sikerrel, az opercis rendszernek
inic en egyes ltala ltrehozott TSS Link mezjt.
(foglalt) bit megelzi a hurkok
ialakulst
A TSS deszkriptornak B (foglalt) bitje megakadlyozza az
jraindtott taszkkapcsolst. Csak egyetlen egy elmentett taszk-krnyezet
ltezik, a TSS-ben eltrolt krnyezet, ezrt egy taszkot csak egyszer
szabad meghvni mieltt befejezdne. A felfggesztett taszkok lnca
brmilyen hosszra megnhet, a tbbszrs megszaktsoknak,
kivteleknek, ugrsoknak s hvsoknak ksznheten. A B bit
megakadlyozza, hogy a taszkot meg lehessen hvni, ha ebben a lncban
tallhat. Egy jrahvott taszkkapcsols fellrn a taszk rgi TSS-t, ami
felbontan a lncot.
A processzor a kvetkezkppen kezeli a Busy bitet:
1. Mikor tkapcsol egy taszkra, a processzor belltja a bejv taszk
B bitjt
fut software mdosthatja. Egy program szmra adott az a lehetsg,
hogy belltsa a
v
k Link mezje lta
ializlnia kell mind
3.8.6.1. A Busy
k
219
ltalnos CPU programozsi informcik
2. Mikor visszakapcsol egy taszkrl, a processzor letrli a kimen
taszk B bitjt, ha azt a taszkot nem kell a lncba helyezze (ha teht
a taszkkapcsolst elidz utasts egy JMP vagy CALL utasts).
Ha a taszk a lncba kerl, a B bitje tovbbra is 1-re marad lltva.
3. Ha az j taszk Busy bitje mr be van lltva, taszkkapcsols esetn
a processzor egy ltalnos vdelmi hiba kivtelt generl.
Ekppen a processzor meggtolja, hogy egy taszk sajt magra
kapcsolhasson, vagy a lnc brmely ms taszkjra, ezzel megakadlyozva
az jraindtott (re-entrant) taszkkapcsolst.
A B bitet multiprocesszoros konfigurciban is lehet hasznlni,
mivel a processzor buszlezrst (bus lock) indtvnyoz amikor belltja,
vagy trli a B bitet. Ez megakadlyozza, hogy kt processzor ugyanazt a
taszkot hvhassa meg.
3.8.6.2. A taszk visszakapcsolsok mdostsa
Annak rdekben, hogy a megszaktott taszkokat, az ket
megszakt taszkok eltt folytatni lehessen, szksgess vlhat a
felfggesztett taszkok lncnak mdostsa. Ennek egy megbzhat mdja
a kvetkez:
1. A megszaktsok letiltsa.
2. Elsknt, a megszakt taszk TSS-nek Link mezjt kell
megvltoztatni, majd a lncbl kiemelt taszk TSS deszkriptornak
B bitjt kell trlni.
3. A megszaktsok engedlyezse.
220
Vdett zemmd multitaszking
3.8.7. Taszkok cmtartomnya
Az LDT szelektor s a TSS PDBR (CR3) mezje felhasznlhat
ajt laptblzat gyjtemnye, a lineris
meknek fizikai cmekre val lekpezse vgett.
z az LDT-je legyen.
3.8.7.1. Taszkok ltal linerisrl- fizikai cmre vgzett
kpzs
ical mapping)
t ltalnos kategriba sorolhatk:
ris-fizikai lekpzs.
Ha a lapozs nincs engedlyezve, ez az egyedli lehetsg.
meghaladhatja a rendelkezsre ll fizikai tartomnyt, ha
arra, hogy minden taszkhoz sajt LDT s laptblzat legyen rendelve.
Minthogy a loklis deszkriptor-tblzatokban (LDT) lev szegmens-
deszkriptorok kpezik a taszkok s a szegmensek kztti kapcsolatot,
minden egyes taszknak nll LDT-t lehet biztostani, ezen kapcsolatok
fltti egyni kontroll ltrehozsa rdekben. Brmely meghatrozott
szegmenshez val hozzfrs hozzrendelhet brmely egyni taszkhoz, a
szegmens szegmens-deszkriptornak a megfelel taszk loklis
deszkriptor-tblzatba val helyezsvel. Ha a lapozs engedlyezett,
minden taszknak lehet egy s
c
Az is lehetsges, hogy a taszkoknak ugyana
z egy egyszer s memriatakarkos mdja annak, hogy bizonyos E
taszkoknak engedlyezni lehessen, hogy egyms kztt
kommunikljanak, illetve egymst vezreljk, anlkl, hogy a teljes
rendszer vdelmi korltait ejteni kne.
Mivel mindegyik taszk hozzfrhet a GDT-hez, az a lehetsg is
adott, hogy ezen tblzaton belli szegmensdeszkriptorokkal elrhet
egosztott szegmenseket hozzunk ltre. m
le
A taszkok lineris-fizikai lekpzsei (linear-to-phys
k
1. Minden taszk ltal megosztott, egyetlen line
Lapozs hinyban minden lineris cm az identikus fizikai
cmekre van lekpezve. Ha engedlyezett a lapozs, a lineris-
fizikai lekpzs e formja gy valsthat meg, hogy minden taszk
egyetlen kzs lapcmtrat hasznl. A lineris tartomny
221
ltalnos CPU programozsi informcik
tmogatott az ignyeknek megfelelen lapozhat (demand-paged)
virtulis memria hasznlata.
2. Fggetlen lineris-fizikai lekpzs minden egyes taszknak. A
lekpezs e formja abbl addik, hogy minden egyes taszk
klnll lapcmtrat hasznl. Mivel minden taszkkapcsolskor a
PDBR (a lapcmtr bzisregisztere) a TSS-bl kerl betltsre,
mindegyik taszknak klnll lapcmtra lehet.
A klnbz taszkok lineris cmtartomnya teljesen eltr fizikai
cmekre kpezhet le. Ha a klnbz lapcmtrak bemenetei klnbz
laptblzatokra mutatnak, s a laptblzatok a fizikai memria klnbz
lapjaira mutatnak, akkor a taszkok egyetlen kzs fizikai cmen sem
osztoznak.
A taszk-llapot-szegmensnek egy minden taszk szmra elrhet
tartomnyban kell helyet foglalnia, azrt, hogy a TSS cmek lekpezse
taszkkapcsols kzben ne vltozzon, mialatt a proceszszor a TSS-t
olvassa, illetve jrarja. A GDT ltal lekpzett lineris tartomny egy
egosztott fizikai trterletre is le kell legyen kpezve, ellenkez esetben
a GDT zss
telvel kt taszk lineris tartomnya miknt fedi t egymst a fizikai
.8.7.2. A taszkok logikai cmtartomnya
yba val
kpezs (mapping) nem engedi meg a taszkok kztti adatmegosztst.
A GDT szegmensdeszkriptorain keresztl. Minden taszk hozz tud
frni a GDT-ben lev deszkriptorokhoz. Ha ezek a deszkriptorok
m
cljt veszti. A 3.61. bra bemutatja, hogy laptblzatok k
t
trterletben.
3
Egymagban az tfedett, linerisrl-fizikai tartomn
le
Ahhoz, hogy adatokat tehessenek kzss, a taszkoknak egy kzs
logikairl-lineris tartomnyba val lekpezsre is szksgk van.
Magyarn olyan deszkriptorokhoz is hozz kell frhessenek, amelyek egy
megosztott (kzss tett), lineris cmtartomnyra mutatnak. Hrom
mdja van a megosztott, logikairl fizikai cmtartomnyba val
lekpezsek megteremtsnek:
1.
222
Vdett zemmd multitaszking
egy olyan lineris cmtartomnyra mutatnak, amely az sszes
ezve, akkor
a taszkok kzss tehetnek adatokat, illetve utastsokat.
is
tartomnyt cmeznek meg, megosztott (shared) fizikai memrit
eteket tegyenek kzss. Ezeknek
a deszkriptoroknak a kznsges neve: alias. A jelen eljrs mg
inkbb szelektvebb, mint a fentebb felsoroltak, ugyanis az LDT
t, lineris
cmtartomnyokra mutathat.
taszk szmra kzs fizikai cmtartomnyra van lekp
2. Kzss tett LDT-ken keresztl. Kt, vagy tbb taszk hasznlhatja
ugyanazt a loklis deszkriptor-tblzatot (LDT-t), ha a TSS-kben
tallhat LDT szelektorok ugyanazt a LDT-t szelektljk a
cmfordtshoz. Az LDT-beli szegmensdeszkriptorok, amelyek
tfedett (overlapping) fizikai tartomnyra lekpezett liner
szolgltatnak.
3. Ugyanarra a lineris cmtartomnyra lekpez LDT-beli
szegmensdeszkriptorokon keresztl. Ha a szban forg taszk lap-
lekpezse a lineris cmtartomnyt ugyanarra a fizikai
cmtartomnyra kpzi le, ezen deszkriptorok lehetv teszik a
taszkok szmra, hogy cmterl
tbbi deszkriptora fggetlen, nem megosztot
223
ltalnos CPU programozsi informcik
PTE
A taszk
lapja
aszk TSS-e Lapcmtrak Laptblzatok Lapkeretek
PDBR PDE
PTE
PTE
lapja
Megoszt.
lap
PTE
B taszk
A t
B taszk TSS-e
Megosztott
PDE
PTE
A taszk
A taszk
lapja
lapja
B taszk
Megoszt.
lap
Laptblzatok
i memriban
PDBR
PDE PTE
PDE PTE
lapja
3.61 bra: Lineris tfeds a fizika
224
Vdett zemmd kivtelek s megszaktsok
3.9. Vdett zemmd kivtelek s megszaktsok
sok hajtdnak vgre. ltalnos
setben, a megszaktsok s kivtelek szervizelse a felhasznli
rogramok szmra ttetsz mdon megy vgbe. A megszaktsok, a
semnyek, mint pldul a perifria-eszkzk
iszolglsi krseinek kezelsre hasznlatosak. A kivtelek, a
szaktsok
p. A maszkolhat megszaktsok addig nem
keletkeznek, amg a megszakts-engedlyez flag (IF)
Nem maszkolhat megszaktsok, amelyek a processzor
NMI (NonMaskable Interrupt) vonaln rkeznek be. A
processzor nem rendelkezik egy olyan mechanizmussal,
amelyik meggtoln a nem maszkolhat megszaktsokat.
. Kivtelek
A processzor ltal detektlt kivtelek. Ezek tovbb
rlhatnak. Ezeket az
utastsokat gyakran nevezik "software-
A kivtelek s megszaktsok egy taszknak vagy egy
procedrnak trtn erltetett vezrlstadsa. A taszkot, vagy a
procedrt "kiszolgl rutinnak" nevezzk (handler). A megszaktsok
vletlenszeren jelennek meg egy program vgrehajtsa kzben, a
hardware-jelzsekre adott vlaszknt. A kivtelek akkor jelennek meg,
amikor kivteleket elidz utast
e
p
processzoron kvli e
k
processzor ltal az utastsok vgrehajtsa alatt szlelt feltteleket
kezelnek, mint pldul a nullval val osztst.
A megszaktsoknak s a kivteleknek kt-kt forrsa van:
1. Meg
Maszkolhat megszaktsok, amelyeket a CPU az INTR
bemenetre ka
nincs 1-re lltva.
2
bonthatk hibkra (faults), csapdkra (traps) s abortokra.
Programozott kivtelek. Az INTO, INT 3 , INT n s
BOUND utastsok kivteleket gene
225
ltalnos CPU programozsi informcik
megszaktsoknak", de a processzor kivtelekknt kezeli
ket.
A jelen rsz a processzor azon adottsgait mutatja be, amelyek
ontrollljk a megszaktsokat, s vlaszolnak azokra.
Az NMI megszaktshoz s a kivtelekhez a 0-tl 31-ig terjed
has et kzlk. E tartomny szabad vektorai egy
setleges jvbeli felhasznlsra fenntartottak ezrt ne hasznljuk a
A
pro
vek
terj a
ivtel- s megszakts-vektorok kirendelst mutatja.
V
k
3.9.1. Kivtel- s megszaktsvektorok
A processzor minden egyes megszakts- vagy kivteltpushoz
rendel egy azonost szmot. Ezt a szmot "vektor"-nak nevezzk.
tartomnybl vannak a vektorok rendelve. A processzor jelenleg nem
znlja mindegyik
e
hozzrendeletlen vektorokat.
A maszkolhat megszaktsok vektorait a hardware determinlja.
kls megszakts-vezrlk, (mint pldul az 8258A jelzs
gramozt megszakts-vezrl) a processzor buszra helyezik a
tort, ennek megszakts-elismer ciklusa idejn. A 32-tl 255-ig
ed tartomnybl brmely vektorok alkalmazhatk. A 3.62. bra
k
ektorszm Meghatrozs
0 Osztsi hiba
1 Debug kivtel
2 Nem maszkolhat megszakts
3 Trspont
4 INTO tlcsordulst tallt
5 BOUND hatr tllps
6 Nem megengedett op. kd
7 Eszkz nem elrhet
8 Dupla hiba
9 Koprocesszor szegmens tlfuts
10 rvnytelen taszk sttusz szegmens
226
Vdett zemmd kivtelek s megszaktsok
11 Szegmens nincs jelen
12 Verem hiba
13 ltalnos vdelmi hiba
14 Laphiba
15 Intel ltal fenntartva
16 Lebegpontos hiba
17 Illeszkeds ellen rzs
18 Gptpus ellenrzs
19-31 Intel ltal fenntartva
32-255 Maszkolhat m tsok egszak
3.62. bra: Kivtelek s megszaktsvektorok
* Megjegyzs: A processzortpus ellenrzs modell-specifikus kivtel,
amely csak a Pentium processzorokon ltezik.
A kivteleket hibkra, trapokra s abortokra oszthatjuk, annak
gy a kivtelt
ten, amelyben a
ivtel
ardware-hibk, vagy a
ndszer tblzatokban tallt sszefrhetetlen, vagy szablytalan rtkek.
fggvnyben, hogy miknt vannak jelentve, illetve, ho
elidz utasts jraindtst tmogatjk-e.
Hibk (faults): A hiba egy olyan kivtel, amelyet a processzor az
utastshatron jelent, azon utastst megelzen, amelyben a kivtel
szlelve volt. A hiba jelentse a gpnek egy olyan helyrelltott
llapotban trtnik, amely megengedi az utasts jraindtst. A
hibakezel rutin visszatrsi cme a hibt kivlt utastsra mutat, nem
pedig az ezt kvet utastsra.
Csapdk (traps): A trap egy olyan kivtel, amelyet a processzor
az utastshatron jelent, rgtn azon utastst kve
k szlelve volt.
Abort-ok (aborts): Az abort egy olyan kivtel, amely nem jelenti
minden esetben a kivtelt elidz utasts helyt, s amely nem
engedlyezi a kivtelt kivlt program jraindtst. Az abortok komoly
hibk jelentsre hasznlatosak, mint amilyenek a h
re
227
ltalnos CPU programozsi informcik
3.9.2. Utastsok jraindtsa
A megszaktsok s kivtelek legnagyobb rsze esetn, a
aztak. Ez
hetv teszi az utastsok jraindtst.
gy felhasznli program hivakozhat egy olyan szegmensben
a
megelz rtkre visszalltani. A processzor mindezen
isszallt mveleteket a felhasznli programok szmra teljesen
iba jelenik meg, az EIP regiszter gy lesz
elyre
vezrlstadsra mindaddig nem kerl sor, amg az aktulis utastsnak
nincs vge. Ennek az az eredmnye, hogy az EIP regiszter a kivtel vagy
megszakts megjelensnek pillanatban, ppen a vgrehajts alatt ll
utastst kzvetlenl kvet utastsra mutat. Ha az utastsnak van egy
ismtlsi prefixe, a vezrls tadsa az aktulis mvelet vgn trtnik, a
kvetkez mvelet elvgzsre belltott regiszterekkel. Ellenben, ha a
kivtel egy hiba, a processzor regiszterei visszalltdnak azokra az
llapotokra, amelyeket az utasts elkezdse eltt tartalm
le
Az utasts jraindtst olyan kivtelek kezelsre lehet
felhasznlni, amelyek lezrjk az operandusokhoz val hozzfrst.
ldul, e P
lev datra, amely nincs betltve a memriba. Amikor a kivtel
megjelenik, a kivtel-kiszolgl rutinnak be kell tltenie a szegmenst
(valsznleg a lemezrl), s folytatnia kell a vgrehajtst a kivtelt
elidz utastssal kezdden. A kivtel megjelensnek pillanatban, az
utasts mr megvltoztathatta a processzor egyes regisztereinek
tartalmt. Ha az utasts egy operandust olvasott ki a verembl, ktelez a
eremmutatt a v
v
tltsz mdon vgzi el.
Mikor egy h
h lltva, hogy a kivtelt kivlt utastsra mutasson. Amikor a
kivtel-kiszolgl handler visszatr, a vgrehajts ezzel az utastssal
folytatdik.
3.9.3. Megszaktsok engedlyezse s letiltsa
Bizonyos felttelek s jelzbit-belltsok arra ksztetik a
processzort, hogy egyes megszakts- s kivteltpusokat letiltson.
228
Vdett zemmd kivtelek s megszaktsok
3.9.3.1. Tovbbi NMI megszaktsok maszkolsa
Amg egy NMI megszaktskezel rutin fut, a processzor letiltja a
egszaktst kiszolgl procedrhoz vagy taszkhoz intzett tovbbi
), az
gymsbagyazott maszkolhat megszaktsok letiltsa cljbl, ugyanis
gy maszkolhat-megszaktst kiszolgl eljrsbl szrmaz IRET
Az IF flag kikapcsolhatja a processzor INTR vonaln berkez
e
me lmen kvl maradnak. Ha az IF magasra van lltva,
z INTR megszaktsok ki lesznek szolglva. Egy RESET jelre
Az lear) az IF
itet.
9. bitjt). Ezek az utastsok csak akkor
ajthatk vgre, ha a CPL szint megegyezik az IOPL rtkvel, vagy
A PUSHF utasts eltrol minden flag-et a verembe, ahol ezek
vizsglhatk, illetve mdosthatk. A POPF utastssal lehet a
m
hvsokat, mindaddig, amg a kvetkez IRET utasts nem kerl
vgrehajtsra. Ezzel megelzi azt, hogy a megszaktskezelhz intzett
hvsok felgyljenek a veremben. Ajnlott, megszakts kapuk
alkalmazsa a nem maszkolhat megszaktsokra (NMI
e
e
utasts jra engedlyezn az NMI-t.
3.9.3.2. INTR megszaktsok maszkolsa
m gszaktsok szervizelst. Ha az IF bit trlve van, az INTR
gszaktsok figye
a
vlaszolva, a processzor, a tbbi flag-hez hasonlan, trli az IF bitet is.
STI s CLI utasts magasra lltja (set), illetve letrli (c
b
A CLI (Clear Interrupt-Enable Flag - megszakts engedlyez bit
trlse) utasts s az STI (Set Interrupt-Enable Flag - megszakts
engedlyez bit belltsa) utasts egy ismert llapotba hozza az IF flag-
et (az EFLAGS regiszter
h
annl privilegizltabb.
Az IF bitet mg a kvetkez mveletek is befolysoljk:
megvltoztatott formt az EFLAGS regiszterbe visszatlteni.
229
ltalnos CPU programozsi informcik
aszkkapcsolsok, illetve a POPF s IRET utastsok feltltik az
EFLAGS regisztert, teht felhasznlhatk az IF bit belltsnak
megvltoztatsra.
A t
A kapuzott megszaktso san trlik az IF bitet, letiltva
ezzel a megszaktsokat.
3.9.3.3. Debug hibk maszkolsa az RF bit segtsgvel
at RF bi a,
hogy meggtolja egy utasts-trspont hiba tbbszrs kiszolglst. Az
RF a kvetkezkppen mkdik:
Miel ely hiba lbb
belltja az RF bitet az EFLAGS msolat
kiszolgl rutin verembe hel (push). No
veremb i kpt a software-ek kell mdos
Ma bitet a hibakeze utin lltja r az IRETD
utastst hajtja vgre a hiba-generl utastsra val visszatrshez.
Az IRETD verembl az
EFLAGS regiszterbe. (A POPF s POPFD utastsok nem viszik t az
RF msolatt az EFLAGS regiszterbe.)
A processzor trli az RF bitet, ha mi st siker znie,
IRET uta t, illetve a ta apcsolst el JMP,
y INT uta okat. Teh g belltva rad, de
mint egy, IRET ut kve ts
Ha RF be van lltva, arra kszteti a processzort, hogy beszntesse az
utas
k automatiku
Az EFLAGS regiszterben tallh t alkalmazsnak clj
tt a processzor belpne brm kezel rutinba, e
ban, amelyet aztn a
rmlis esetben, az RF yez
el nem tsk.
gt az RF l r be, amiko
utasts tmozgatja az EFLAGS kpt a
nden utast lt befeje
kivve az sts szkk idz
CALL vag sts t az RF fla ma
nem tbb,
idejre.
- az n kzvetlen tkez - utas
ts-trspont hibk jelentst.
Mivel az utasts-trspont hibk a legnagyobb prioritssal
rendelkez hibk, ugyanahhoz az utastshoz kapcsold brmely ms
hibt megelzen kerlnek bejelentsre. Az utasts vgrehajtsra tett
legels ksrlet esetn RF=0, illetve RF =1 minden olyan prblkozs
230
Vdett zemmd kivtelek s megszaktsok
esetn, amely egy utasts-trspont hibt, vagy brmilyen ms hibt
kveten, jraindtan az utastst. Ez azt biztostja, hogy minden
tasts-trspont hiba csak egyszer lesz jelentve.
e-ek, amelyek gyakran kell veremszegmenst
ltsanak, egy utasts prt hasznlnak, pldul:
utastst kveten, a processzor letiltja a
egszaktsokat, a debug-kivteleket s az egylpses nyomkvet trap
kivteleket, amg a kvetkez utasts mgtti utastshatrt el nem ri.
ltalnos vdelmi-hibk mg ekkor is generldhatnak. Ha az SS
regiszter tartalmnak mdostsra az LSS utastst hasznljuk, ez a
problma nem jelenik meg.
3.9.4. Szimultn kivtelek s megszaktsok kztti
priorits
Ha egy utastshatron egynl tbb kivtel, vagy megszakts van
fggben (pending), a processzor egy elre meghatrozhat sorrendben
szolglja ki ket. A megszakts- s kivtel forrsok osztlyai kzti
prioritsokat a 3.63. bra mutatja be. Amg ezen osztlyok kztti
priorits konzisztens az architektra egszn, addig minden egyes
osztlyon belli kivtelek alkalmazs-fggk, s processzoronknt eltrk
lehetnek. A processzor elszr a legmagasabb prioritssal rendelkez
osztlyba tartoz, fggben lev kivtelt, vagy megszaktst szolgl ki,
u
3.9.3.4. Egyes kivtelek s megszaktsok maszkolsa
Azok a softwar
v
MOV SS, AX
MOV ESP, StackTop
Ha egy megszakts vagy kivtel jelenik meg miutn a szegmensszelektor
mr fel van tltve, de mg mieltt az ESP regiszter be lenne tltve, a
megszakts- vagy kivtel-kiszolgl rutin idejre, a veremtartomnyba
mutat logikai cmnek ezen kt rsze sszefrhetetlen.
Ennek a helyzetnek az elkerlse vgett, egy MOV SS-be, vagy
POP SS-be tpus
m
231
ltalnos CPU programozsi informcik
tadvn a vezrlst a kezel rutin els utastsnak. Az a
priorits kivteleket elveti. Az alacsonyabb
ggben maradnak. Az elvetett kivtelek jra aktualizldnak, am
lacsonyabb
priorits megszaktsok
ikor a
egsza
f
m kts kezel visszaadja a vezrlst a megszaktsi pontra.
Priorits Osztly Meghatrozs
Magas 1. osztly Trap az elz mveleten
-Trspont
-Debug trap kivtel
2. osztly Kls megszakts
-NMI megszakts
-Maszkolhat megszakts
3. osztly Hiba a kvetkez utastsnl
-Kd trspont hiba
-Kdszegmens hatr tllps
-Laphiba az elolvassnl
4. osztly Hiba a kvetkez utasts dekodolsnl
-rvnytelen op. kd
-Mveleti kd hosszabb 15 Byte-nl
-Koprocesszor nem ll rendelkezsre
Alacsony 5. osztly Hiba egy utasts vgrehajtsakor
-ltalnos detektls
-Koprocesszor hiba
-Tlcsorduls
-Hatrellenrzs
-rvnytelen TSS
-Szegmens nincs jelen
-Verem kivtel
-ltalnos vdelmi hiba
-Adat laphiba
-Illeszkeds ellenrzs
te itsa 3.63. bra: Kiv lek s megszaktsok egyms kztti prior
232
Vdett zemmd kivtelek s megszaktsok
3 zak
akts s
megszaktshoz, a hozzrendelt esemnyt kiszolgl procedra vagy
taszk deszkriptort rendeli. Akrcsak a GDT, vagy az LDT-k, az IDT is
egy 8 Byte-os deszkriptorokat tartalmaz tmb. Az IDT-be mutat
in hoz sklatnyezvel
(a deszkriptorban lev Byte-ok szmval) a kivtel-, vagy
megszaktsvekto , az IDT nem
rtalmazhat tbb mint 256 deszkriptort. Kevesebb, mint 256 deszkriptort
.9.5. A megs tsdeszkriptor-tblzat
A megsz deszkriptor-tblzat (IDT) minden kivtelhez
dexek formls a processzor beszorozza egy 8-as
rt. Mivel mindssze 256 vektor van
ta
viszont tartalmazhat, mert deszkriptorokra csak azoknak a
megszaktsvektoroknak van szksgk, amelyek elfordulhatnak.
Az IDT a fizikai memria brmely rszn rezidens lehet. Amint
azt a 3.64. bra mutatja, a processzor az IDTR regisztert felhasznlva
lokalizlja az IDT-t. Ez a regiszter tartalmazza az IDT 32 bites
bziscmt, valamint a 16 bites hatrt. A LIDT s SIDT utastsok tltik
fel, illetve mentik el az IDTR regiszter tartalmt. Mindkt utastsnak egy
operandusa van, amely a memriban lev hat Byte cme.
IDT bziscm
IDTR regiszter
IDT hatr
at Megszakts deszkriptor tblz
Kapu az N.
megszaktshoz
megszaktshoz
Kapu az 3.
megszaktshoz
Kapu az 2.
Kapu az 1.
megszaktshoz
233
ltalnos CPU programozsi informcik
3.64. bra: IDT lokalizlsa a memriban az IDTR segtsgvel
a hatron kvlre es
eszkriptorra mutat, a processzor tmegy "shutdown" mdba. Ebben az
emm
incs kezdemnyezve. A processzor egy specilis buszciklust
enerl a "shutdown" llapotba val belps jelzsre. A software-
jleszt
riba. Ez az utasts brmely privilgium szinten
grehajthat.
3.9
tart
1. taszkkapukat
A 3.65. bra bemutatja a taszkkapuk, megszakts kapuk, s trap
Abban az esetben, ha egy vektor
d
z dban a processzor megsznteti az utasts-vgrehajtst,
mindaddig, amg nem szlel egy NMI megszaktst, vagy amg egy reset
inicializls n
g
fe k tisztban kell legyenek a hardware-nek erre a jelzsre adott
vlaszval. Pldul, a hardware ilyenkor kigyjthat egy fnyjelzst a gp
f paneljn, generlhat egy diagnosztika-informcikat felvev NMI
megszaktst, vagy kezdemnyezhet reset inicializlst.
A LIDT (Load IDT Register - a megszaktsdeszkriptor-tblzat
regisztert betlt utasts) feltlti az IDTR regisztert a memriban lev
operandusban trolt bziscmmel s limit-tel. Ezt az utastst csak akkor
lehet vgrehajtani, ha CPL=0. ltalban az opercis rendszerek
inicializl kdja hasznlja az IDT ltrehozshoz. Az opercis rendszer
arra is felhasznlhatja, hogy egyik IDT-rl a msikra vltson.
SIDT (Store IDT Register - a megszaktsdeszkriptor-tblzat
regisztert eltrol utasts) tmsolja az IDTR-ben trolt bziscmet s
limit rtket a mem
v
.6. IDT deszkriptorok
Az IDT a kvetkez hrom tpus deszkriptor kzl brmelyiket
almazhatja:
2. megszakts kapukat
3. trap kapukat
kapuk formtumt.
234
Vdett zemmd kivtelek s megszaktsok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Fenntartva
TSS szegmens szelektor
P 0 DPL
+4
+0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Ofszet 31-16 P DPL Fenntartva
+4
Szegmens szelektor Ofszet 15-0
+0
31 0 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0 3
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Ofszet 31-16 P DPL
+4
Szegmens szelektor Ofszet 15-0
+0
0 1 0 1 Fenntartva
Fenntartva
0 1 1 1 0 0 0 0
Fenntartva 0 1 1 1 1 0 0 0
3.65. bra: IDT kapudeszkriptor
235
ltalnos CPU programozsi informcik
3.9.7. Megszakts taszkok s megszakts-kezel
aktsvektort
almazza egy IDT-ben lev
ezje a kivtelt vagy megszaktst kiszolgl
procedra elejre mutat.
procedurk
Amint a CALL utasts kpes egy procedrt, vagy egy taszkot
meghvni, gy egy kivtel, vagy megszakts is kpes egy kezelrutint,
akr mint procedrt, akr mint taszkot "meghvni". A kivtelre vagy
megszaktsra vlaszolva, a processzor a kivtel, vagy megsz
alk deszkriptor indexelsre. Ha a processzor
egy megszakts-, vagy trap kapura indexel, a call-kapura irnyul CALL
utastshoz hasonl mdon hvja meg a kiszolgl rutint. Ha a processzor
egy taszkkaput tall, a taszkkapura irnyul CALL utastshoz hasonl
mdon vgez taszkkapcsolst.
3.9.7.1. Megszakts-kezel procedrk
Amint azt a 3.66. bra mutatja, egy megszakts-, vagy trap kapu
kzvetett mdon cmez meg egy olyan procedrt, amely az aktv taszk
kontextusban fut. A kapu szelektora egy vgrehajthat szegmens GDT-
beli, vagy az aktulis LDT-ben lev deszkriptorra mutat. A
kapudeszkriptor ofszet m
236
Vdett zemmd kivtelek s megszaktsok
IDT
Eljrs
Cl kdszegmens
Bzis cm
Szegmens
deszkriptor
Megszakts vagy
trap kapu
GDT vagy LDT
Ofszet
Megszakts
vektor
Szegmens szelektor
3.66. bra: Megszakts procedura hvs
A processzor, egy procedrahvssal majdnem azonos mdon hv
meg egy kivtelt, vagy megszaktst kiszolgl procedrt.
3.9.7.1.1. A megszakts-kezel eljrs verme
Akrcsak egy CALL utastssal trtn vezrlstads esetn, a
kivtelt, vagy megszaktst kiszolgl procedrnak val vezrlstads
237
ltalnos CPU programozsi informcik
is alkalmazza a vermet, a processzor llapotnak elmentsre. Amint azt a
3.67. bra mutatja, egy megszakts, a megszaktott utasts cmnek
stack-be val eltrolst megelzen, lenyomja az EFLAGS regiszter
tartalmt a verembe.
Nem privilgizlt szint
csere hibakd nlkl
Nem privilgizlt szint
csere hibakddal
Privilgizlt szint
csere hibakd nlkl
Privilgizlt szint
csere hibakddal
Rgi EFLAG
Rgi CS
Rgi EIP
Rgi ESP
j ESP
Rgi ESP
j ESP
Rgi EFLAG
Rgi CS
Rgi EIP
Hibakd
Nem hasznlt
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP j ESP
ESP
a TSS-bl
j ESP
ESP
a TSS-bl
Nem hasznlt
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP
Hibakd
3.67. bra: Verem keret egy megszakts vagy kivtel utn
Nmely kivtel tpus egy hibakdot is lenyom a verembe. A
kivtelt kiszolgl rutin felhasznlhatja a hibakdot a kivtel
diagnosztikjra.
3.9.7.1.2. Visszatrs egy megszakts-kezel eljrsbl
A megszakts-kezel eljrs a normlis eljrsoktl az eljrsbl
val kilps metdusban klnbzik. Az IRET utasts a megszakts-
kezel procedra elhagysra hasznlatos. Az IRET utasts hasonlt a
RET utastsra, azzal a klnbsggel, hogy ngy tovbbi Byte-tal nveli
az ESP regisztert, s visszalltja az elmentett flageket az EFLAGS
regiszterbe. Az EFLAGS regiszter IOPL mezjt csak abban az esetben
238
Vdett zemmd kivtelek s megszaktsok
lltja vissza, ha a CPL=0. Az IF bit csak akkor mdosul, ha CPL<=
IOPL.
3.9.7.1.3. A megszakts-kezel eljrs flag-hasznlata
A megszakts kapukat vagy trap kapukat hasznl megszaktsok
a TF bit trlst okozzk, miutn annak aktulis rtkt, az EFLAGS
regiszter elmentett tartalmnak rszeknt, elmentik a verembe. Ezzel, a
processzor megelzi azt, hogy az utasts nyomkvets a megszaktsra
adott vlaszt befolysolhassa. Egy kvetkez IRET utasts visszalltja a
TF bitet az EFLAGS regiszter verembe elmentett tartalmnak rtkre.
Egy megszakts kapu s egy trap kapu kzti klnbsg az IF
flagre gyakorolt hatsukbl addik. Egy megszakts kaput alkalmaz
megszakts trli az IF bitet, megakadlyozva ezzel, hogy ms
megszaktsok beavatkozzanak az aktulis megszaktskezel rutinba.
Egy kvetkez IRET utasts visszalltja az IF bitet az EFLAGS
regiszter verembe elmentett tartalmnak rtkre. Egy trap kaput hasznl
megszakts nem vltoztat az IF biten.
3.9.7.1.4. Vdelem a megszakts-kezel eljrsokban
Azok a privilgium szablyok, amelyek a megszakts-kezel
procedrkat irnytjk, azonosak a procedra hvsra rvnyes
szablyokkal: a processzor nem teszi lehetv egy megszaktsnak, hogy
tadja a vezrlst egy kevsb privilegizlt (szmszerint nagyobb
privilegizlsi szint) szegmensben lev procedrnak. E szably
megsrtsre tett ksrlet ltalnos vdelmi hiba kivtelt eredmnyez.
Minthogy a megszaktsok ltalban nem szablyos idkznknt
jelennek meg, az emltett privilgium szably gyakorlatilag azokra a
privilegizlsi szintekre knyszerti a megszortsokat, amelyeken a
kivtelt-, vagy megszaktst kiszolgl rutinok kpesek futni. A
kvetkez technikk brmelyikt fel lehet hasznlni a privilgium
szablyok megsrtsnek megelzsre:
239
ltalnos CPU programozsi informcik
A kivtelt-, vagy megszakts-kezel rutinokat illeszked
(conforming) kdszegmensbe lehet elhelyezni. Ezt a technikt
bizonyos kivteleket (pldul az osztshiba kivtelt) kezel rutinok
alkalmazhatjk. Ezek a kiszolgl rutinok csak a veremben elrhet
adatokat szabad hasznljk. Ha a megszakts-kezelnek szksge
lenne egy adatszegmensben tallhat adatokra, akkor az
adatszegmensnek ktelezen 3-as privilegizlsi szintje kne legyen,
ami vdtelenn tenn azt.
A megszaktst kiszolgl rutin 0-s privilegizlsi szint
kdszegmensbe is elhelyezhet. Ez a handler a program CPL-jtl
fggetlenl, mindig futhatna.
3.9.7.2. Megszakts-kezel taszkok
Egy IDT-beli taszkkapu kzvetetten hatroz meg egy taszkot,
ahogyan azt a 3.68. bra illusztrlja. A taszkkapuban tallhat szegmens-
szelektor egy GDT-beli TSS deszkriptort cmez meg.
240
Vdett zemmd kivtelek s megszaktsok
IDT
TSS
TSS bzis cm
TSS szegmens
deszkriptor
Taszk kapu
GDT
Megszakts
vektor
TSS szelektor
3.68. bra: Megszakts taszkkapcsols
Amikor egy kivtel, vagy megszakts meghv egy IDT-ben lev
taszkkaput, taszkkapcsols keletkezik. Egy megszaktsnak klnll
taszkkal val kiszolglsa kt elnyt knl fel:
A teljes kontextus automatikusan elmentdik
241
ltalnos CPU programozsi informcik
A megszakts-kezel elszigetelhet a tbbi taszktl, egy klnll
cmtartomny hozzrendelsvel. Ez, a megszaktskezel rszre egy
kln LDT biztostsval valsthat meg.
Egy megszakts okozta taszkkapcsols ugyangy mkdik, mint
a tbbi taszkkapcsols. A megszakts-kezel taszk visszatr a
megszaktott taszkba, egy IRET utastst vgezve.
Egyes kivtelek egy hibakdot szolgltatnak. Ha a taszkkapcsolst
egy ilyen kivtel eredmnyezte, a processzor lenyomja a hibakdot a
megszakts-kezel privilegizlsi szintjnek megfelel verembe.
Hogyha egy opercis rendszer megszakts-kiszolgl taszkokat
hasznl, tulajdonkppen kt taszk-eloszt mechanizmus ltezik: a
software temez (az opercis rendszer rsze), illetve a hardware
temez (a processzor megszaktsi mechanizmusnak rsze). A software
temez olyan megszaktskiszolgl taszkokat kell kszenltbe
helyezzen (accomodate), amelyek eloszthatk (dispatched), ha a
megszaktsok engedlyezve vannak.
3.9.8. Hibakdok
Egy bizonyos szegmenshez kapcsold kivtelek esetn, a
processzor eltrol egy hibakdot a kivtelkezel vermbe (fggetlenl
attl, hogy az procedra, vagy taszk). A hibakdoknak a 3.69. brn
lthat formtuma van. A hibakd hasonlt egy szegmens-szelektorhoz,
ugyanakkor, az RPL mez helyett a hibakd kt, egybites mezt
tartalmaz:
1. A processzor belltja az EXT bitet, ha a programon kvli esemny
eredmnyezte a kivtelt.
2. A processzor belltja az IDT bitet, ha a hibakd index rsze egy IDT-
beli deszkriptorra vonatkozik
242
Vdett zemmd kivtelek s megszaktsok
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
Fenntartva Szelektor index
T
I
I
D
T
E
X
T
3.69. bra: Hibakd
Ha az IDT bit nincs belltva (set), a TI bit mutatja meg, hogy a
hibakd egy GDT-re (TI=0), vagy az LDT-re (TI=1) vonatkozik-e. A
megmaradt 13 bit a szegmens szelektornak fels bitjei. Egyes esetekben
a hibakd nulla (teht az als sz minden bitje 0-s).
A hibakd duplaszknt van a veremre helyezve. Ez azrt trtnik
gy, hogy a verem olyan cmekhez maradjon illesztett (aligned), amelyek
ngy tbbszrsei. A duplasz fels rsze fenntartott.
3.9.9. Kivtel felttelek
A kvetkez alpontok felsoroljk azokat a feltteleket, amelyek
kivteleket generlnak. Mindegyik lers hiba-, trap-, vagy abort-knt
osztlyozza a kivteleket. E kategorizls azon procedrk
jraindtshoz szksges informcit szolgltatja a
rendszerprogramozknak, amelyekben a kivtelek megjelennek:
Hibk - A CS s EIP regiszterek elmentett tartalma a hibt kivlt
utastsra mutat.
Csapdk - A CS s EIP regisztereknek a trap megjelensekor
elmentett tartalma a trap-et kivlt utasts utn vgrehajtand
utastsra mutat. Ha egy vezrlst tad utasts ideje alatt egy trap
detektldik, a CS s EIP regiszterek elmentett tartalma tkrzi a
vezrlstadst. Pldul, ha egy JMP utastsban trap van detektlva,
a CS s EIP regiszterek elmentett tartalma a JMP utasts rendeltetsi
helyre mutat, s nem - JMP fltti kvetkez cmen lev utastsra.
Abortok - Az abort egy olyan kivtel, amely nem engedi meg sem a
kivtelt okoz utasts helynek pontos behatrolst, sem a kivtelt
243
ltalnos CPU programozsi informcik
kivlt program jraindtst. Az abortok komoly hibk jelentsre
hasznlatosak, mint amilyenek a hardware-hibk, vagy a
rendszertblzatokban tallt sszefrhetelen, vagy szablytalan
rtkek.
3.9.9.1. 0-s szm megszakts - Osztshiba (Divide
Error)
Az osztshiba egy DIV, vagy IDIV utasts esetn jelenik meg, ha
az oszt nulla.
3.9.9.2. 1-es szm megszakts - Debug kivtel
A processzor debug kivtelt generl egy sor felttel esetn. Az,
hogy a kivtel hiba, vagy trap, a feltteltl fgg, ahogy kvetkezik:
Utasts cm trspont hiba
Adat cm trspont trap
ltalnos detektls hiba
Lpsenknti vgrehajts trap
Taszkkapcsols trspont trap
A processzor nem nyom le hibakdot ennl a kivtelnl. A
kivtelkezel rutin megvizsglhatja a nyomkvet regisztereket, hogy
megllaptsa, melyik felttel vltotta ki a kivtelt. A debugolsrl s a
nyomkvet regiszterekrl rszletes informci tallhat a 2. ktetben.
3.9.9.3. 3-as szm megszakts - Trspont
(Breakpoint)
Az INT 3 utasts trspont trap-et generl. Az INT 3 utasts egy
Byte-nyi hossz, ami leegyszersti egy RAM-ban lev kdszegmensbeli
mveletkd (opcode) kicserlst a trspont mveletkdra. Az opercis
rendszer, vagy egy nyomkvet eszkz alkalmazhat egy, a kdszegmens
244
Vdett zemmd kivtelek s megszaktsok
fizikai cmtartomnyra lekpezett adatszegmenst, az INT 3 utasts azon
pontokra val elhelyezsre, amelyekben a debugol meghvsa
szksges. A nyomkvetk a program felfggesztsre trspontokat
hasznlnak, a regiszterek, vltozk, stb. vizsglathoz.
A CS, illetve EIP regiszterek elmentett tartalma a trspontot
kvet Byte-ra mutatnak. Ha a debugol engedlyezi a felfggesztett
program vgrehajtsnak folytatst, a trspont helyn az INT 3 utastst
visszacserli az eredeti mveletkdra, s mieltt visszaadn a vezrlst,
dekrementlja az EIP regiszter elmentett tartalmt.
3.9.9.4. 4-es szm megszakts - Tlcsorduls
(Overflow)
A tlcsorduls trap akkor jelenik meg, ha a processzor belltott
OF flag mellett egy INTO utastst hajt vgre. Mivel gy az eljeles, mint
az eljel nlkli aritmetika ugyanazon nhny utastst hasznlja, a
processzor nem tudja meghatrozni, hogy a tlcsorduls tulajdonkppen
mikor jelenik meg. Ehelyett, magasra lltja az OF bitet, ha az eljeles
szmokknt rtelmezett eredmnyek a tartomnyon kvlre esnnek.
Eljeles operandusokon vgzett aritmetikai mveletek esetn az OF flag
kzvetlenl tesztelhet, vagy az INTO utasts alkalmazhat.
3.9.9.5. 5-s szm megszakts - Hatrsrts (Bounds
Check)
A hatrsrts (bounds-check) hiba akkor jn ltre, amikor a
processzor egy BOUND utasts vgrehajtsa kzben azt szleli, hogy az
operandus meghaladja a megadott hatrrtkeket. A program a BOUND
utastst annak ellenrzsre hasznlhatja fel, hogy egy eljeles
tmbindex nem lpi-e tl egy memriablokkban definilt eljeles
hatrrtkeket.
245
ltalnos CPU programozsi informcik
3.9.9.6. 6-os szm megszakts - rvnytelen utasts
(Invalid Opcode)
Az rvnytelen utasts (invalid op-code) hiba akkor keletkezik,
amikor egy rvnytelen mveletkdot detektl a vgrehajt egysg. ( A
kivtel addig nem detektldik, amg az rvnytelen utasts
vgrehajtsra nem trtnik ksrlet. Teht egy rvnytelen mveletkd
elzetes elrse (prefetch) nem vltja ki ezt a kivtelt.) A verembe nem
kerl hibakd. A kivtel ugyanazon taszk keretn bell kezelhet.
Ez a kivtel akkor is jelentkezik, ha az operandus tpusa az adott
utasts szmra rvnytelen. A pldk kz sorolhat egy regiszter-
operandust alkalmaz szegmensek kztti JMP utasts, vagy egy
regiszter forrsoperandust hasznl LES utasts.
A harmadik felttel, amely ezt a kivtelt generlja, a LOCK prefix
hasznlata egy olyan utastssal, amely nem zrhat le. Csak bizonyos
utastsokra alkalmazhat a busz lezrsa, s ezeknek az utastsoknak
csak azon formi hasznlhatk, amelyek a memriba rnak. A LOCK
prefix minden eltr hasznlata rvnytelen utasts hibt generl.
3.9.9.7. 7-es szm megszakts - nem elrhet eszkz
(Device Not Available)
A "numerikus koprocesszor nem elrhet" hibt a kvetkez kt
felttel egyike hozza ltre:
A processzor vgrehajt egy ESC utastst, s a CR0 regiszter EM bitje
1-re van lltva.
A processzor vgrehajt egy WAIT (MP=1 esetn) utastst, vagy egy
ESC utastst, s a CR0 regiszter TS bitje 1-re van lltva.
Teht a 7-es megszakts akkor jelentkezik, amikor a programoz
azt akarja, hogy az ESC utasts software ton legyen kezelve (EM=1
esetn), illetve akkor, amikor a processzor egy WAIT, vagy ESC
246
Vdett zemmd kivtelek s megszaktsok
utastssal tallkozik, s a lebegpontos egysg kontextusa eltr az
aktulis taszk kontextustl.
Az Intel286-os s Intel386-os processzorokban a CR0 regiszter
MP bitje s a TS bit annak megllaptsra szolgl, hogy a WAIT utasts
kivtelt kell-e generljon. A Pentium, Intel486 DX s Intel487 SX
processzorokon fut programok esetn az MP bit 0 kell legyen.
3.9.9.8. 8-as szm megszakts - Ketts hiba, dupla
hiba (Double Fault)
Ha a processzor, mikzben egy elz kivtel kiszolgl rutinjt
prblja behvni, egy jabb kivtelt detektl, normlis esetben a kt
kivtelt sorban, egyms utn szolgja ki.
Osztly Vektorszm Meghatrozs
1 Debug kivtel
2 NMI megszakts
Jindulat 3 Trspont
kivtelek 4 Tlcsorduls
s megszaktsok 5 Hatrellenrzs
6 rvnytelen op. kd
7 Eszkz nem elrhet
16 FPU hiba
0 Osztsi hiba
Jrulkos 10 rvnytelen TSS
kivtelek 11 Szegmens nincs jelen
12 Verem hiba
13 lt. vdelmi hiba
Laphibk 14 Laphiba
3.70. bra: Megszakts s kivtel osztlyok
247
ltalnos CPU programozsi informcik
Els Msodik kivtel
kivtel Jindulat Jrulkos Laphiba
Jindulat ok ok ok
Jrulkos ok Dupla hiba ok
Laphiba ok Dupla hiba Dupla hiba
3.71. bra: Dupla hiba viszonyok
Ha mgsem kpes ket sorosan kezelni, ketts hiba kivtelt jelez.
Annak eldntsre, hogy a processzor milyen esetben kell kt kivtelt
"dupla hiba"-knt megjelljn, a kivteleket a kvetkez hrom osztlyba
sorolja: "szeld" (benign) kivtelek, "hozzjrul" (contributory)
kivtelek, illetve laphiba kivtelek. Ezt a felosztst a 3.70. bra brzolja.
Az els kivtel osztlyt sszevetve a msodik kivtel osztlyval, a
processzor a 3.71. brn megjellt esetekben jelent ketts hibt.
Egy utasts elzetes elrse (prefetch) idejn szlelt kezdeti
szegmens- vagy laphiba a 3.71. brn kvl esik. Ugyanakkor brmely
tovbbi hiba, amely akkor generldik, amikor a processzor megksreli
tadni a vezrlst a megfelel hibakezelnek, tovbbra is dupla hiba
szekvencihoz vezethet.
A processzor minden alkalommal lenyom egy hibakdot a ketts
hibt kiszolgl rutin vermbe, viszont ennek a hibakdnak az rtke
mindig 0. A hibt kivlt utasts nem indthat jra. Ha a ketts hiba
kivtelkezel meghvsra tett ksrlet kzben jabb kivtel is elfordul, a
processzor tmegy lelltott (shutdown) mdba. Ez a md hasonlt egy
HLT utastst kvet llapothoz. Egyetlen utasts sem kerl
vgrehajtsra, amg egy NMI megszakts, vagy egy RESET jel nem fut
be. Ha a lells akkor jn ltre, mikzben a processzor egy NMI
megszaktst hajt vgre, csak a RESET jel kpes jraindtani a
processzort. A "shutdown" llapot jelzsre a processzor egy specilis
buszciklust generl.
248
Vdett zemmd kivtelek s megszaktsok
3.9.9.9. 9-es szm megszakts - (az Intel ltal
fenntartott, hasznlata nem ajnlott)
A 9-es megszakts, a "koprocesszor-operandus szegmenshatr
srts "abort a 386-os CPU-ra alapul, 387-es numerikus koprocesszorral
elltott rendszerekben generldik, amikor a 386-os processzor egy lap-
vagy szegmens srtst detektl, mikzben a 387-es numerikus
koprocesszor operandusnak kzps rszt transzferlja. Ezt a
megszaktst nem generlja sem a Pentium, sem a 486-os processzor,
helyette a 13-as szm megszakts jn ltre.
3.9.9.10. 10-es szm megszakts - rvnytelen TSS
(Invalid TSS)
Az rvnytelen TSS hiba akkor generldik, ha egy rvnytelen
TSS-el rendelkez szegmensre trtnik taszkkapcsolsi ksrlet. A TSS a
3.72. brn felsorolt esetekben rvnytelen. A kivtelkezel vermbe
lenyomdik egy hibakd, a hiba oknak feldertst elsegtend. Az
EXT bit megmutatja, hogy a kivtelt a program ellenrzsi terletn
kvlre es felttel okozta-e (pldul, ha egy taszkkaput alkalmaz kls
megszakts egy rvnytelen TSS-re ksrelt meg taszkkapcsolst
vgrehajtani).
Hibakd index Meghatrozs
TSS szegmens A TSS szegmenshatr kisebb mint 67h
LDT szegmens rvnytelen LDT, vagy LDT nincs jelen
Verem szegmens A veremszegmens szelektor tllpi a deszkriptor
tbla hatrt
Verem szegmens A verem szegmens nem rhat
Verem szegmens A veremszegmens DPL-je nem kompatibilis a
CPL-el
Verem szegmens A veremszegmens szelektor RPL-je nem
kompatibilis a CPL-el
Kdszegmens A kdszegmens szelektor tllpi a deszkriptor
tbla hatrt
Kdszegmens A kdszegmens nem vgrehajthat
249
ltalnos CPU programozsi informcik
Kdszegmens A nem illeszked kdszegmens DPL-je nem
egyenl a CPL-el
Kdszegmens Az illeszked kdszegmens DPL-je nagyobb a
CLP-nl
Adatszegmens Az adatszegmens szelektor tllpi a deszkriptor
tbla hatrt
Adatszegmens Az adatszegmens nem olvashat
3.72. bra: rvnytelen TSS llapotok
Ez a hiba megjelenhet akr az eredeti taszk, akr a bejv taszk
kontextusban. Amg a processzor nem ellenrizte le teljesen az j taszk
TSS-nek jelenltt, a kivtel az eredeti taszk kontextusban jn ltre.
Abban a pillanatban, hogy az j TSS jelenlte detektlva van, a
taszkkapcsols befejezettnek lesz nyilvntva. Vagyis a TR regiszterbe az
j TSS-re mutat szelektor tltdik be, s ha a taszkkapcsolst kivlt ok
egy CALL hvs vagy egy megszakts volt, az j TSS Link mezje a rgi
TSS-re mutat. Brmely hiba, amelyet a processzor ezen a ponton
tlmenen fedez fel, az j taszk kontextusban lesz kezelve. Annak
rdekben, hogy biztostva legyen egy TSS elrhetsge a kivtel
kiszolglshoz, az "rvnytelen TSS" kivtelt kiszolgl rutin egy
taszkkaput alkalmaz taszk kell legyen.
3.9.9.11. 11-es szm megszakts - Szegmens nincs
jelen, (Segment Not Present)
A "szegmens nincs jelen" hiba akkor generldik, amikor a
processzor szleli, hogy a deszkriptor P bitje 0-s. A processzor a
kvetkez esetek brmelyikben generlhatja ezt a hibt:
Mikzben megksreli a CS, DS, ES, FS, vagy GS regisztereket
feltlteni, az SS regiszter feltltse viszont, veremhibt okoz.
Mikzben megksreli az LDT regisztert az LLDT utasts
segtsgvel feltlteni, az LDT regiszter egy taszkkapcsols kzbeni
feltltse viszont, egy "rvnytelen TSS" kivtelt okoz.
250
Vdett zemmd kivtelek s megszaktsok
Mikzben megksreli egy olyan kapudeszkriptor alkalmazst,
melynek P bitje betltetlen szegmenst jell.
Ez a hiba jraindthat. Ha a kivtelkezel betlti a szegmenst,
majd ezt kveten visszatr (return), a megszaktott program vgrehajtsa
folytatdik.
Ha egy taszkkapcsols kzben "szegmens nincs jelen" kivtel
keletkezik, a taszkvlts nem minden lpse lesz befejezve. Egy
taszkkapcsols alatt a processzor elszr feltlti az sszes
szegmensregisztert, majd ellenrzi ezek tartalmnak helyessgt. Amikor
egy "betltetlen szegmens" kivtel kerl felfedezsre, a htramarad
szegmensregiszterek mg nincsenek leellenrizve, ezrt ezek memria-
hozzfrsre alkalmatlanok lehetnek. A "betltetlen szegmens"
kivtelkezel rutinja nem "szmthat" arra, hogy a CS, SS, DS, ES, FS,
illetve GS regiszterekben tallhat szegmens-szelektororokat
felhasznlhatja anlkl, hogy egy jabb kivtelt ne okozna. A
kivtelkezel minden egyes szegmensregisztert meg kell vizsgljon,
mieltt megprbln folytatni a bejv taszkot, klnben a ksbbiekben
ltalnos vdelmi hibk keletkezhetnek, olyan felttelek mellett, amelyek
a diagnosztizlst mg nehezebb teszik. Ezen eset kezelsre hrom
lehetsg knlkozik:
1. Taszk segtsgvel kezelni a "betltetlen szegmens" kivtelt. A
megszaktott taszkra val visszakapcsols arra kszteti a processzort,
hogy ellenrizze a regisztereket, mikzben a TSS-bl betlti ket.
2. PUSH s POP utastsokat alkalmazni az sszes szegmensregiszterre.
Minden POP utasts arra kszteti a processzort, hogy ellenrizze a
szegmensregiszter j tartalmt.
3. Minden egyes szegmensregnek a TSS-ben eltrolt tartalmt
ellenrizni, szimullva azt a tesztelst, amelyet a processzor a
szegmensregiszter betltsekor vgez.
Ez a kivtel lenyom egy hibakdot a verembe. A hibakd EXT
bitje magasra lltdik, ha egy programon kvli esemny idzte el a
251
ltalnos CPU programozsi informcik
megszaktst, amely a tovbbiakban egy betltetlen szegmensre mutatott.
Az IDT bit akkor lesz belltva, ha a hibakd egy IDT bemenetre utal
(pldul, egy jelen nem lev kapura vonatkoz INT utasts). Az
opercis rendszer, a virtulis memria szegmensszint alkalmazsra,
tipikusan a "betltetlen szegmens" kivtelt alkalmazza. Ennek ellenre,
egy kapudeszkriptorbeli "nincs jelen" jells ltalban nem azt jelzi, hogy
a szegmens nincs jelen (mivel a kapuknak nem felelnek meg felttlenl
szegmensek). A jelen nem lev kapukat az opercis rendszer, a szmra
klns jelentsggel br kivtelek jelzsre hasznlhatja fel.
3.9.9.12. 12-es szm megszakts - verem kivtel
(Stack Exception)
A veremhiba kt felttel mellett jn ltre:
Brmely olyan mveletben trtn hatrsrts eredmnyeknt, amely
az SS regiszterre vonatkozik. Ide tartoznak az olyan verem-orientlt
utastsok, mint a POP, PUSH, ENTER, s a LEAVE, valamint egyb
olyan memriahivatkozsok, amelyek impliciten, vagy expliciten
alkalmazzk az SS regisztert (pldul MOV AX, [BP+6] vagy MOV
AX, SS:[EAX+6]). Az ENTER utasts akkor vltja ki ezt a kivtelt,
amikor tl kevs hely van a loklis vltozk lefoglalsra.
Mikor ksrlet trtnik az SS regiszternek egy olyan deszkriptorral
val feltltsre, amely a "szegmens nincs jelen" megjellst viseli,
de egybknt rvnyes. Ez megjelenhet egy taszkkapcsolskor, egy
eltr privilegizlsi szintre trtn CALL hvskor, egy eltr
privilegizlsi szintre val visszatrskor, egy LSS utasts esetn,
illetve egy SS regiszterbe trtn MOV vagy POP utasts esetn.
Amikor a processzor szleli a veremhibt, a hibakezel vermbe
lenyom egy hibakdot. Ha a kivtel oka egy betltetlen veremszegmens,
vagy az j veremnek, privilegizlsi szintek kzti CALL hvs alatt
ltrejtt tlcsordulsa, akkor a hibakd a kivtelt elidz szegmens
szelektort tartalmazza (a kivtelkezel tesztelheti a deszkriptor P bitjt
annak megllaptsra, hogy ezek kzl melyik kivtel jtt ltre),
ellenkez esetben a hibakd rtke 0.
252
Vdett zemmd kivtelek s megszaktsok
Ezt a kivtelt kivlt utasts minden esetben jraindthat. A
kivtelkezel vermbe eltrolt visszatrsi cm arra az utastsra mutat,
amelyet jra kell indtani. ltalban, ez maga a kivtelt okoz utasts.
Ugyanakkor, azon veremhiba esetn, amely egy "nincs jelen" jelzs
veremszegmens deszkriptor taszkkapcsols kzbeni betltsekor
jelentkezik, a mutatott utasts a bejv taszk els utastsa.
Ha a veremhiba egy taszkkapcsols kzben lp fel, a
szegmensregisztereket nem lehet a memria megcmzsre felhasznlni.
Egy taszkkapcsols alatt, a szelektorrtkek hamarabb kerlnek betltsre
a deszkriptorok ellenrzsnl. Abban az esetben, ha veremkivtel
generldik, a fennmaradt szegmensregiszterek mg nem lvn
leellenrizve, a hasznlatuk kivtelt okozhat. A veremhiba kivtelkezel
rutinja nem "szmthat" arra, hogy a CS, SS, DS, ES, FS, illetve GS
regiszterekben tallhat szegmensszelektororokat felhasznlhatja anlkl,
hogy egy jabb kivtelt ne okozna. A kivtelkezel minden egyes
szegmensregisztert meg kell vizsgljon, mieltt megprbln folytatni a
bejv taszkot, klnben a ksbbiekben ltalnos vdelmi-hibk
keletkezhetnek, olyan felttelek mellett, amelyek a diagnosztizlst mg
nehezebb teszik.
3.9.9.13. 13-as szm megszakts - ltalnos vdelmi
hiba (General Protection)
Minden olyan vdelemsrts, amely nem okoz egy msik kivtelt,
ltalnos vdelmi hiba kivtelt eredmnyez. Ezek kz tartoznak:
A szegmens hatr tlpse, a CS, DS, ES, FS, vagy GS szegmensek
hasznlata kzben.
A szegmens hatr tlpse, egy deszkriptor-tblzat megcmzse
esetn.
Egy nem vgrehajthat szegmensnek tadott vezrls.
Egy csak-olvashat tpus adatszegmens vagy kdszegmens rsa
253
ltalnos CPU programozsi informcik
Egy csak-vgrehajthat tpus kdszegmens olvassa
Az SS regiszternek egy csak-olvashat szegmens szelektorval val
feltltse (ha taszkkapcsols alatt a szelektor egy TSS-bl szrmazik,
amely esetben egy rvnytelen TSS kivtel jelentkezik.)
Egy rendszerszegmens szelektornak betltse az SS, DS, ES, FS,
vagy GS regiszterekbe.
Egy csak-vgrehajthat kdszegmens szelektornak betltse a DS,
ES, FS, vagy GS regiszterekbe.
Egy vgrehajthat szegmens szelektornak betltse az SS regiszter
be.
A DS, ES, FS, vagy GS regiszterkel trtn memria-hozzfrs, ha
azok a nulls deszkriptort tartalmazzk.
Egy foglalt (busy) taszkra val kapcsols.
A privilgiumszablyok megsrtse.
Az utastshossz 15 Byte-nyi korltjnak tlhaladsa (ez csak abban
az esetben trtnhet meg, ha egy utasts el redundns prefixek
kerlnek).
A CR0 regiszter betltse, ha a PG=1 (a lapozs engedlyezve van) s
PE=0 (a vdelem le van tiltva).
Virtulis 8086-os zemmdbl, trap-kapuzott megszakts vagy
kivtel, egy 0-tl eltr privilegizlsi szint kezel rutinra.
A CR4 regiszter fenntartott bitjeinek 1-re val trsa.
Az ltalnos vdelmi kivtel egy hiba (fault). Egy ltalnos
vdelmi hiba kivtelre adott vlaszknt, a processzor lenyom a
kivtelkezel vermre egy hibakdot. Ha a kivtelt egy deszkriptor
254
Vdett zemmd kivtelek s megszaktsok
betltse okozta, a hibakd ennek a deszkriptornak egy szelektort
tartalmazza. Klnben a hibakd nulla. Egy hibakdon belli szelektor
forrsai a kvetkezk lehetnek:
Az utasts egy operandusa.
Egy olyan kapu szelektora, amelyik az utasts operandusa.
Egy taszkkapcsolsban rsztvev TSS-beli szelektor
3.9.9.14. 14-es szm megszakts - Laphiba (Page
Fault)
Laphiba akkor jelenik meg, ha a lapozs engedlyezett (a CR0
regiszter PG bitje 1-es) s a processzor egy lineris cmnek fizikai cmre
val fordtsakor, a kvetkez felttelek egyikt szleli:
A cmfodtshoz szksges lapcmtr- vagy laptblzat bejegyzs P
bitje 0-s, ami azt jelzi, hogy a laptblzat, vagy az operandust
tartalmaz lap nincs jelen a fizikai memriban.
A procedra nem rendelkezik a kell privilgiummal ahhoz, hogy a
megadott lapot elrhesse.
Ha a laphiba oka egy lapszint vdelemsrts, a lapcmtrbeli
hozzfrst jelz "A" bitek a hiba megjelensvel egyidben lesznek
belltva. A laptblzat hozzfrst jelz bitjei csak akkor kerlnek
belltsra, ha nem lp fel lapszint vdelemsrts.
A processzor kt olyan informcit biztost a laphiba kezelnek,
amelyek segtik a kivtel diagnosztizlst, illetve helyrelltst
(recover):
Egy verembeli hibakdot. A laphibkra adott hibakdoknak eltr
formtumuk van, a tbbi kivtel hibakdjaihoz kpest (lsd 3.73.
bra). A hibakd hrom dolgot kzl a kivtelkezelvel:
255
ltalnos CPU programozsi informcik
1. A kivtelt egy betltetlen (not-present) lap, egy hozzfrsi jog
megsrtse, vagy egy fenntartott bit hasznlata okozta-e.
2. A processzor felgyelszinten mkdtt-e a kivtel megjelense
kzben.
3. A kivtelt elidz memria-hozzfrs rs, vagy olvass volt-e.
A CR2 regiszter tartalmt. A processzor feltlti a CR2 regisztert azzal
a 32 bites lineris cmmel, amely a kivtelt elidzte. A kivtelkezel
ezt a cmet arra hasznlhatja, hogy lokalizlja a megfelel lapcmtr,
illetve laptblzat bemeneteket. Ha a laphibakezel vgrehajtsa
kzben egy jabb laphiba jn ltre, a hibakezel rutinnak el kell
trolni a CR2 regiszter tartalmt a verembe (push).
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
P
R
S
S
R
_
U
V
_
W
Fenntartva
P 0 A hiba oka egy nem jelenlv lap volt
1 A hiba oka egy lapszint vdelem megszegs volt
W/R 0 A hibt okoz memria hozzfrs egy olvass volt
1 A hibt okoz memria hozzfrs egy rs volt
U/S 0 A hiba keletkezsekor a vgrehajts supervisor mdban
trtnt.
1 A hiba keletkezsekor a vgrehajts user mdban trtnt.
RSV 0 A hibt egy belltott bit okozta a laptblzat vagy a
lapcmtr egy fenntartott pozcijn
1 Egyb
3.73. bra: Laphiba hibakdok
3.9.9.14.1. Taszkkapcsols alatti laphiba
Egy taszkkapcsols alatt a kvetkez mveletek idznek el
memria hozzfrst:
256
Vdett zemmd kivtelek s megszaktsok
A kimen taszk llapotnak a taszk llapot-szegmensbe (TSS) val
rsa.
A bejv taszk TSS-deszkriptornak lokalizlsa a GDT olvassval.
A bejv taszk TSS-nek olvassa, a benne lev szegmens-
deszkriptorok tpusnak ellenrzse vgett.
A bejv taszk LDT-jnek esetleges olvassa, az j TSS-ben trolt
szegmensregiszterek ellenrzse vgett.
Laphiba szrmazhat brmely fentemltett mvelet vgrehajtsbl.
A kt utols alpont esetn, a kivtel a bejv taszk kontextusban jelenik
meg. Az utastsmutat az j taszk kvetkez utastst jelli ki, nem a
taszkkapcsolst elidz utastst (vagy az utoljra vgrehajts alatt ll
utastst, mint a megszaktsok esetben). Ha az opercis rendszer
struktrja megengedi, hogy a taszkkapcsolsok idejn laphibk
jelenjenek meg, a laphibakezelt taszkkapun keresztl kell meghvja.
3.9.9.14.2. Laphiba sszefrhetetlen veremmutatval
Klns figyelmet kell fordtani annak biztostsra, hogy a
laphiba ne ksztesse a processzort egy rvnytelen veremmutat
(SS:ESP) alkalmazsra. A 16 bites processzorokra rt software-ek
gyakran hasznlnak egy utasts-prt egy j veremre val ttrshez,
pldul:
MOV SS, AX
MOV SP, StackTop (verem teteje)
Minthogy a msodik utasts hozzfr a memrihoz, a 32 bites
processzorok esetn lehetsges, hogy laphiba keletkezzen, miutn az SS
regiszterben lev szelektor megvltozott, de mg mieltt az SP regiszter
tartalma elszenvedte volna a megfelel mdostsokat. Ebben a
stdiumban, az SS:SP (vagy 32 bites programokban az SS:ESP)
257
ltalnos CPU programozsi informcik
veremmutat kt rsze, sszefrhetetlen. Az j veremszegmenssel a rgi
veremmutat kerl alkalmazsra.
A processzor nem alkalmaz sszefrhetetlen veremmutatt, ha a
laphiba kiszolglsa egy helyesen definilt veremre trtn tvltst
(stack switch) idz el, (teht a kivtelkezel rutin egy taszk, vagy egy
privilegizltabb procedra). Ugyanakkor, ha a laphiba ugyanazon a
privilegizlsi szinten van, s ugyanabban a taszkban tallhat, mint a
kivtelkezel rutin, a processzor megksreli alkalmazni az inkonzisztens
veremmutat ltal kijellt vermet.
Azokban a lapozst hasznl rendszerekben, amelyek a laphibkat
a hibz taszk keretn bell (trap-, vagy megszakts kapukkal) kezelik, a
laphiba-kezel rutinnal megegyez privilegizlsi szinten fut software-
ek szmra ajnlott, hogy inkbb az LSS utasts segtsgvel
inicializljanak egy j vermet, mintsem a fentemltett utastsprral. Ha a
laphiba-kezel rutin a 0-s privilegizlsi szinten fut (normlis esetben), a
problma csak a 0-s szinten szalad programokra szkl le, vagyis
tipikusan az opercis rendszer kerneljre.
3.9.9.15. 16-os szm megszakts - Lebegpontos
egysg hiba, Floating-Point Error)
A numerikus koprocesszor hiba egy lebegpontos aritmetikai
utasts ltal kivltott hibt jelez. A 16-os szm megszakts csak akkor
jhet ltre, ha a CR0 regiszterbeli NE bit 1-re van lltva.
Ha NE=1, egy nem maszkolhat lebegpontos kivtel a 16-os
megszaktst vltja ki, azonnal a kvetkez nemvezrl (non-control)
lebegpontos utasts, vagy WAIT utasts eltt. A 16-os megszakts egy
opercis rendszer-hvs, amely meghvja a kivtelkezel rutint.
Ha NE=0 (s az IGNE# bemenet inaktv), egy nem maszkolt
koprocesszor hiba azonnal a kvetkez nemvezrl (non-control)
lebegpontos utasts, vagy WAIT utasts eltt, lefagysra (freeze)
knyszerti a processzort. A lefagyott processzor egy kls megszaktsra
vr, amelyet a kls hardware kell szolgltasson, vlaszknt a 486-os,
258
Vdett zemmd kivtelek s megszaktsok
vagy Pentium processzor FERR# vonaln kimen jelre ( a FERR#
hasonlt az 387-es numerikus koprocesszor ERROR# vonalra). Az NE
rtktl fggetlenl, egy maszkolatlan numerikus kivtel aktivlja a 486-
os s a Pentium processzorok FERR# vonalt. Ebben az esetben a kls
megszakts hvja meg a kivtelkezel rutint. Ha de az IGNE# bemenet
aktv, a processzor figyelmen kvl hagyja a kivtelt, s folytatja
feladatt. A kls megszaktsok ltali hibajelents a DOS-al val
kompatibilits rdekben tmogatott. A numerikus hibk kezelsekor a
processzornak kt feladata van:
Amikor egy hibt (error) szlel, nem szabad megsrtenie a numerikus
kontextust.
Trlnie kell a hibt, s meg kell ksrelnie a hiba helyrelltst
(recovery).
Br az eljrs, amellyel a programozk ezen feladatokat
ellthatjk, alkalmazsonknt vltozik, mgis a kivtelkezelk tbbsge
magba foglalja a kvetkez lpseket:
Az FPU krnyezetnek (vezrl-, llapot-, s toldalk szk,
operandus- s utasts mutatk) elmentse gy, ahogyan az a kivtel
pillanatban volt.
Az llapotsz kivtelt jelz bitjeinek trlse.
Az INTR, NMI, vagy SMI ltal letiltott megszaktsok engedlyezse.
A kivtel identifiklsa, az elmentett krnyezetbeli llapot-, s
vezrlsz vizsglata segtsgvel.
Nhny rendszer-fgg mvelet elvgzse, a kivtel helyrelltsa
(rectify) rdekben.
Visszatrs a megszaktott programba, s a normlis vezrls
folytatsa.
259
ltalnos CPU programozsi informcik
3.9.9.15.1. Numerikus kivtelek kezelse
A numerikus kivteleket kezel rutinoknak szmos formja
ltezhet. Ezek megvloztathatjk az FPU aritmetikai s programozsi
szablyait. Ezek a mdostsok jradefinilhatjk egy hiba (error)
alaprtelmezs szerinti kijavtsnak mdjt, megvltoztathatjk az FPU
megjelenst a programozk szmra, vagy mdosthatjk az FPU
aritmetikai szablyainak defincijt.
kivtelekre adott vlaszok mdostsnak egyike az volna, hogy a
denormlis aritmetika a memribl betlttt denormlisokon legyen
elvgezve. Egy megjelensbeli vltozst a regiszterveremnek a
memriba val kiterjesztse jelenten, "vgtelen" szm numerikus
regiszter biztostsnak rdekben. Az FPU aritmetikja tvltoztathat
arra, hogy automatikusan kiterjessze a vltozk pontossgt s a
tartomnyt, amikor ez tlhaladdik.
Nhny lehetsges, alkalmazs-fgg lehetsg:
Egy kivtel szmll inkrementlsa, a ksbbi kijelzs, vagy
kinyomtats vgett.
Diagnosztika-informcik kinyomtatsa, vagy kijelzse (pldul az
FPU krnyezete s regiszterei).
A tovbbi vgrehajts abortolsa.
Egy diagnosztika rtk (egy NaN) elmentse az eredmnyben, majd a
szmtsok folytatsa.
Fontos, hogy egy kivtel, az alkalmazstl fggen, nem jelent
minden esetben hibt (error). Amint a kivtelkezel kijavtja a kivtelt
elidz felttelt, a kivtelt okoz lebegpontos utasts jraindthat, ha
ez megfelel. Ugyanakkor, az IRET utastst hasznlva ez nem
lehetsges, mert a trap a "vtkes" ESC utastst kvet ESC vagy WAIT
utastsnl jelenik csak meg. A kivtelkezel meg kell szerezze a "vtkes"
utasts cmt azon taszk belsejben, amely kezdemnyezte azt, msolatot
kell ksztenie rla, a msolatot vgre kell hajtania a "vtkes" taszk
260
Vdett zemmd kivtelek s megszaktsok
kontextusban, majd egy IRET utastssal vissza kell trjen az aktulis
utastslncba.
A numerikus kivtelt okoz felttel kijavtsa rdekben, a
kivtelkezel fel kell ismerje pontosan az FPU azon llapott, amelyben a
kivtelkezel meghvsnak pillanatban volt, majd kpes kell legyen az
FPU arra az llapotra visszakvetkeztetni, amely a kivtel kezdetn volt
aktulis. Az FPU llapotnak visszafejtshez a programozknak tudniuk
kell, hogy a klnbz osztly kivtelek eltr pillanatokban lesznek
felismerve, a numerikus utasts vgrehajtsa eltt, vagy azt kveten.
Az rvnytelen mvelet, zrval val oszts s denormlis
operandus kivtelek egy mvelet megkezdse eltt lesznek detektlva,
mg a tlcsorduls, alulcsorduls, s a pontossg kivtelek addig nem
jelennek meg, amg egy valdi eredmny nincs kiszmtva. Ha egy
mveletkezds eltti kivtel detektldik, az FPU regiszterverme s
memriatra mg nincs feljtva, s gy tnik, mintha a "vtkez" utasts
mg nem lett volna vgrehajtva.
Amikor egy mveletkezds utni kivtel detektldik, a
regiszterverem s memria gy nznek ki, mintha az utasts befejezdtt
volna, teht fljthatk. Ugyanakkor, egy store, vagy store-andpop
tpus mveletben, a maszkolatlan tl/alulcsorduls mveletkezds eltti
kivtelknt van kezelve, a memria nem lesz felfrisstve, s a verembl
semmi sem lesz kiemelve.
3.9.9.15.2. Szimultn kivtelekre adott vlaszok
Az olyan estekben, amelyekben szimultn, tbbszrs kivtelek
keletkeznek, az FPU az albbiakban kvetkez elsbbsgi-lista alapjn
jelzi az egyik kivtelt. Ez annyit jelent, hogy pldul egy SNaN zrval
val osztsa "rvnytelen mveletet" eredmnyez, s nem "nullval val
osztsi hibt" ; a maszkolt eredmny a QNaN valdi vgtelen (real
infinite), s nem a vgtelen . Egy denormlis, vagy pontossg kivtel
ugyanakkor, ksrhet egy numerikus alulcsordulst, vagy tlcsordulst.
A numerikus kivtelek kzti sorrend a kvetkez:
261
ltalnos CPU programozsi informcik
1. rvnytelen mvelet kivtel, a kvetkezkppen tovbb osztva:
verem alulcsorduls
verem tlcsorduls
nem tmogatott formtum operandus
SNaN operandus
2. QNaN operandus. Br ez nem egy kivtel, ha egy operandus egy
QNaN, kezelse elnyt lvez az alacsonyabb priorits kivtelek eltt.
3. Brmely, fentebb nem emltett kivtel, vagy nullval val oszts.
4. Denormlis operandus. Ha le van maszkolva, a mvelet vgrehajtsa
folytatdik, s ugyanakkor egy alacsonyabb priorits kivtel is
megjelenhet.
5. Numerikus alulcsorduls, vagy tlcsorduls. A pontatlan eredmny
(pontossg) flag is bejellhet.
6. Pontatlan eredmny (pontossg-) kivtel.
3.9.9.16. 17-es szm megszakts - Illeszkeds
ellenrzs ellenrzsi hiba (Alignment Check)
Az illeszkeds ellenrzsi hiba kivtel a nem illesztett (unalign)
operandusokhoz val hozzfrs esetn generldhat. Pldul, egy
pratlan Byte-cmen trolt sz, vagy egy duplasznak egy olyan cmen
val trolsa, amelyik nem ngynek tbbszrse. A 3.74. bra az
adattpusok ltal ignyelt illeszkedsi feltteleket sorolja fel. Az
illeszkeds ellenrzs engedlyezshez a kvetkez felttelek teljestse
szksges:
a CR0 regiszterbeli AM bit magasra legyen lltva
az AC flag magasra legyen lltva
a CPL rtke 3 legyen (felhasznli md)
262
Vdett zemmd kivtelek s megszaktsok
Adat tpus A cmnek oszthatnak kell lennie:
WORD 2
DWORD 4
rvid REAL 4
hossz REAL 8
TEMPREAL 8
Szelektor 2
48 bites szegmentlt mutat 4
32 bites lap mutat 4
32 bites szegmentlt mutat 2
48 bites pszeudo deszkriptor 4
FSTENV/FLDENV mentsi
terlet
2 vagy 4, az operandusmrettl
fggen.
FSAVE/FSTOR mentsi terlet 2 vagy 4, az operandusmrettl
fggen.
Bit sztring 4
3.74. bra: Adattpusok ltal ignyelt illeszkedsi felttelek
Az illeszkeds ellenrzs azon programok szmra hasznos,
amelyek a mutatk als kt bitjt hasznljk az ltaluk megcmzett
adatstruktra tpusnak azonostsra. Pldul, egy matematikai knyvtr
szubrutinja elfogadhat numerikus adatstruktrkra mutat pointereket. Ha
e struktra tpushoz az '10' (binris) kdot trstjuk az erre a tpusra
mutat pointer legals kt bitjn, a matematikai szubrutinok kijavthatjk
a tpuskdot -10 (binris) eltols hozzadsval. Abban az esetben, ha a
szubrutin helytelen mutattpust kapna, egy illesztetlen (unaligned)
hivatkozs jnne ltre, amely kivtelt generlna.
Az illeszkeds ellenrzs hiba kivtelek csak felhasznli mdban
(3. privilgium szinten) generldnak. Azok a memriahivatkozsok,
amelyek alaprtelmezse a 0. privilgium szint, mint pldul a szegmens-
deszkriptorok betltse, nem okozzk a fentemltett kivtelt mg abban az
esetben sem, ha ezt egy felhasznli mdbeli memriahivatkozs okozn.
Egy 48 bites pszeudo-deszkriptor (egy deszkriptor-tblzat bzisregiszter-
tartalmnak memriabeli msolata) trolsa felhasznli mdban,
illeszkeds ellenrzs hiba kivtelt generlhat. Br a felhasznli
263
ltalnos CPU programozsi informcik
programok normlis esetben nemigen trolnak pszeudo-deszkriptorokat, a
hiba mgis elkerlhet, a pszeudo-deszkriptornak egy pratlan sz cmre
val illesztsvel (teht egy olyan cmre, amelynek 4-el val osztsi
maradka 2).
Az FSAVE s FRSTOR utastsok illesztetlen referencikat
(hozzfrseket) lltanak el, amelyek illeszkedsellenrzs-hiba
kivteleket okozhatnak. Ezekre az utastsokra a felhasznli
programoknak ritkn van szksgk.
3.9.9.17. 18-as szm megszakts - Processzortpus
ellenrzs (Machine Check)
A processzortpus ellenrzs modell-specifikus kivtel, amely
csak a Pentium processzorokon ltezik.
3.9.10. A kivtelek sszefoglalsa
A 3.75.bra sszefoglalja a Pentium processzor ltal felismert
kivteleket.
Meghatrozs Vektor
szm
Visszatrsi
cm a hibra
mutat?
Kivtel
tpus
A kivtel forrsa
Oszts nullval 0 Igen Hiba DIV s IDIV
mvelet
Debug kivtel 1 *1 *1 Akrmilyen
kd vagy adat
hivatkozs
Trspont 3 Nem Trap INT 3 mvelet
Tlcsorduls 4 Nem Trap INTO mvelet
Hatrsrts 5 Igen Hiba BOUND
mvelet
rvnytelen op.
kd
6 Igen Hiba Fenntartott
mveleti kdok
264
Vdett zemmd kivtelek s megszaktsok
Eszkz nem
elrhet
7 Igen Hiba ESC s WAIT
mvelet
Dupla hiba 8 Igen Abort Brmi
rvnytelen TSS 10 Igen
2
Hiba JMP, CALL,
IRET mvelet,
megszaktsok
s kivtelek
Szegmens nincs
jelen
11 Igen
2
Hiba Akrmilyen
mvelet ami
szegmenst vlt
Verem hiba 12 Igen Hiba Verem mvelet
ltalnos
vdelmi hiba
13 Igen Hiba/
trap
3
Akrmilyen
kd vagy adat
hivatkozs
Laphiba 14 Igen Hiba Akrmilyen
kd vagy adat
hivatkozs
FPU hiba 16 Igen Hiba
4
ESC s WAIT
mvelet
Illeszkeds
ellenrzs
17 Igen Hiba Akrmilyen
adat hivatkozs
Gptpus
ellenrzs
18 - Modellfgg
Software
megszakts
0-255 Nem Trap INT n mvelet
3.75. bra: Kivtelek sszefoglalsa
Megjegyzsek:
1. A nyomkvet kivtelek trap-ek, vagy hibk lehetnek. Ez a kivtel a
DR6 regiszter tartalmt vizsglja meg ahhoz, hogy megklnbztesse
a trap-eket a hibktl.
2. A taszkkapcsolsok kzbeni jraindthatsg felttelhez kttt.
265
ltalnos CPU programozsi informcik
3. Minden ltalnos vdelmi hiba jraindthat. Ha a hiba a
kivtelkezel meghvsra tett ksrlet kzben jelentkezik, a
megszaktott program jraindthat, de a megszakts maga elveszhet.
4. A lebegpontos hibk nem lesznek jelentve, csak a hibt generl
ESC utastst kvet els ESC vagy WAIT utasts berkezsekor.
3.9.11. Hibakdok sszefoglalsa
A 3.75. bra sszesti minden egyes kivtelt kvet hiba
informcit.
Meghatrozs Vektor szm Hibakd van ?
Osztsi hiba 0 Nincs
Debug kivtel 1 Nincs
Trspont 3 Nincs
Tlcsorduls 4 Nincs
Hatrellenrzs 5 Nincs
rvnytelen op. kd 6 Nincs
Eszkz nem elrhet 7 Nincs
Dupla hiba 8 Van, mindg nulla
rvnytelen TSS 10 Van
Szegmens nincs jelen 11 Van
Verem hiba 12 Van
lt. vdelmi hiba 13 Van
Laphiba 14 Van, spec. formtum
FPU hiba 16 Nincs
Illeszkeds
ellenrzs
17 Van, mindg nulla
Modell ellenrzs 18 Modellfgg
Software
megszakts
0-255 Nincs
3.75. bra: Hibakdok sszefoglalsa
266
Rendszermenedzsel zemmd
3.10. Rendszermenedzsel zemmd
A rendszermenedzsel zemmd (SMM - System Management
Mode) segti a rendszerfejlesztket az olyan rendkvl magas szint
rendszerfunkcik kialaktsban, mint a fogyasztsmenedzsment vagy a
biztonsg, nemcsak az alkalmazi software, hanem maga az opercis
rendszer szmra is tltsz mdon.
Az SMM a vdett, vals, s 8086-os virtulis mdokkal
egyszinten lev, egyik f zemmd. Az SMM azonban gy volt tervezve,
hogy az alkalmazi software-ek s ltalnos cl opercis
rendszersoftware-ek nem, csak a firmware tudja hasznlni. A 3.76. bra
azt mutatja be, hogy ms zemmdokbl a processzor hogyan lphet be
az SMM zemmdba, illetve hogyan lphet ki abbl. A kls SMI# jel a
processzort arra knyszerti, hogy az tkapcsoljon az SMM zemmdba.
Az SMM zemmdbl az RSM utastssal lehet kilpni. Az SMI# jel
aktivlst egy hordozhat szmtgp esetben pldul a gp fedelnek
lecsuksa okozhatja.
Az SMM tltsz az alkalmazi programok s az opercis
rendszer szmra, mivel:
Az SMM zemmdba val belps egyetlen tja egy kls jel ltal
kivltott, nem maszkolhat megszakts.
A processzor egy klnll cmtartomnyban lev SMM kd
vgrehajtst kezdi meg, mely cmtartomny neve rendszer-
menedzsment-RAM (SMRAM).
Az SMM zemmdba val belpskor a processzor a megszaktott
program regiszter-llapott az SMRAM-nak egy SMM llapottrol
rekord nevezet rszbe menti.
A normlis esetben az opercis rendszer vagy az alkalmazsok ltal
kezelt minden megszakts az SMM zemmdba val belpskor
letiltdik.
267
ltalnos CPU programozsi informcik
Egy specilis RSM utasts az SMM llapot-rekordbl viszszalltja a
processzor regisztereinek llapott s a vezrlst visszaadja a
megszaktott programnak.
Az SMM abban hasonlt hasonlt a vals zemmdhoz, hogy
nincsenek privilgiumszintjei s nem vgez cmlekpzst. Egy SMM
program vgrehajthat I/O s ms rendszerutastsokat, s ngy GByte-
memrit cmezhet.
3.10.1. Az SMI megszakts
Amikor egy utastshatron az SMI# jelet felismeri, a processzor
elbb kivrja, hogy minden trolsi mvelet befejezdjn (a klsleg
fggben levket is ide rtve). Ezutn elmenti a regiszterek llapott az
SMRAM-ba s megkezdi az SMM kezel vgrehajtst.
Az SMI#-nek a debug kivtelek s kls megszaktsoknl
nagyobb prioritsa van. Ez azt jelenti, hogy ha az utastshatron e
kivtelek kzl tbb mint egy jelenik meg, akkor csak az SMI lesz
kiszolglva, a debug kivtel vagy kls megszakts nem.
Az jabb SMI# vagy NMI krseket az SMM-ben lev processzor
mr nem veszi figyelembe. A CR4 regiszter gpellenrzst engedlyez
bitje szintn trldik. Az SMM-ban megjelen SMI# s NMI
megszaktsok betltdnek ugyan, de csak akkor hajtdnak vgre, amikor
a processzor az RSM utasts ltal kilp az SMM-bl.
268
Rendszermenedzsel zemmd
RESET
RESET
Vals cmzsi md
PE=1 PE=0
Megszakts,
kivtel
Taszkvlts,
IRET
SMI
RSM
SMI
RSM
SMI
RSM
Vdett md
Virtulis 8086 md
Rendszer menedzsel
md
3.76. bra: Az zemmd-llapotok kzti tmenetek
Az SMM-ba val belpskor a kezelket ignyl kls
megszaktsok letiltdnak (az EFLAGS regiszter IF bitje trldik). Erre
azrt van szksg, mert az SMM-ban lev processzor egy kln
cmtartomnyt hasznl. Emiatt a megszakts deszkriptor-tblzatban
(IDT) trolt vektorok nem alkalmazhatak. A kivtelek engedlyezshez
az SMM program j megszakts/kivtel vektorokat kell felptsen. Az
SMM megszaktsvektor-tblzatnak formtuma megegyezik a vals
zemmdban hasznltval. Amg a megszaktsvektor-tblzatot helyesen
fel nem pti, addig az SMM kezelprogram nem generlhat kivteleket.
Kivtelek azonban mg letiltott megszaktsok esetn is keletkezhetnek.
A bels megszaktsok megjelenst csak a helyesen megrt software
elzheti meg. Az j kivtelvektorok belltsa utn a bels kivtelek
kiszolglhatk.
269
ltalnos CPU programozsi informcik
Ugyancsak az SMM-be val belpskor az lpsenknti
vgrehajts (az EFLAGS TF bitjnek rtke nulla) s cmtrspont (a
DR7 trlve van) kivtelek is trldnek. A processzor debug-
lehetsgeinek maga az SMM-ben val hibakeressre felhasznlsa
rdekben az SMM kezelnek elbb biztostania kell, hogy az IDT-be egy
megfelel, elrhet kezel legyen installlva, majd a debug regiszterekbe
illetve az EFLAGS-be be kell tltenie a megfelel rtkeket.
3.10.2. Az SMM kezdeti llapota
Miutn a processzor felismerte az SMI# jelet s elmentette a
regiszterek llapotait, sajt llapott a 3.77. brn bemutatott rtkekre
vltoztatja.
Regiszter Tartalom
EFLAG 2
EIP 8000h
CS szelektor 3000h, ez az rtk a 30000h bziscm
inicializl utastst adja
DS, ES, FS, GS, SS
szelektorok
0
DS, ES, FS, GS, SS
hatr
0FFFFFFFFh
DS, ES, FS, GS, SS
jellemzk
16 bites, felfel nvekv
CR0 0, 2, 3 s 31. bitek trlve (PE, EM, TS, PG)
CR4 0
CR6 Nem definilt
CR7 400h
GDTR, LDTR,
IDTR, TSSR
Nem definilt
Modell specifikus
regiszter
Nincs mdostva
3.77 bra: Az SMM kezdeti llapota
270
Rendszermenedzsel zemmd
Az adatcache-ek kirtsrt, az adat- valamint utastscache-ek
rvnytelentsrt s ezeknek az SMM alatti letiltsrt a kls hardware
felel.
3.10.2.1. Az SMM vgrehajtsa
Az SMM kezel vgrehajtst a processzor a CS szegmens 8000H
ofszetjtl kezdi. A kdszegmens bziscme kezdetben 30000H, ez a cm
azonban megvltoztathat.
Az SMM kezeljnek meghvsakor a processzor CR0
regiszternek PE (vdelem) s PG (lapozs) bitjei trldnek, gy a
processzor a vals zemmdhoz hasonl krnyezetbe kerl. Mivel a (CS-
tl klnbz) szegmens-bzis trldik s a szegmenshatrok
0FFFFFFFFH rtkre lltdnak, a cmtartomny egyetlen lapos, nem
szegmentlt, 4GB-os lineris tartomnyknt kezelhet, a processzor
azonban a cmeket a vals zemmdban hasznlttal megegyez mdon
generlja. Amikor a szegmensszelektorba egy 16 bites rtk tltdik, az
rtk 4 bittel balra toldik s betltdik a szegmens-bzisba. Az SMM-
ben egy szegmensregiszter betltse sorn a deszkriptor regiszterek rejtett
rszeiben a hatr mez s az attribtumok nem mdosulnak.
Az operandusmret s cmmret alaprtelmezse 16 bit, a 4
GByte-os logikai cmtartomnyban brhol, az adatok kzvetlen elrsre
hasznlhatk az operandusmret- s cmmret-fllr prefixek.
Az operandusmret-fllr prefixekkel egytt az SMM kezel a
vezrlsnek a ngy GByte-os cmtartomny brmelyik pontjra val
tadsra hasznlhat ugrsokat, hvsokat s visszatrseket.
Megjegyzendk azonban a kvetkez korltozsok:
Brmely vezrlstads, melynek nincs operandusmret-fllr
prefixe, az EIP regisztert annak als 16 bitjre csonktja.
A vals zemmdban hasznlthoz hasonl bziscm-kpzs miatt a
hossz ugrsok, hvsok, megszaktsok vagy kivtelek a vezrlst
271
ltalnos CPU programozsi informcik
nem adhatjk t egy 20 bitesnl nagyobb mret (azaz egy MByte-nl
nagyobb) bziscm szegmensre.
Egy kivtel vagy megszakts nem adhatja t a vezrlst egy 16
bitesnl (64 kByte-nl) nagyobb mret szegmensre.
Ha a kivtelek s megszaktsok engedlyezve vannak, akkor a
visszatrsi cmeknek csak az als 16 Byte-ja kerl a veremre. Ha a
megszaktott procedra ofszetje nagyobb, mint 64 kByte, akkor a
megszaktskezel, a vermen lev visszatrsi cmnek a software
ltali bizonyos mdostsa nlkl, nem tudja visszaadni a vezrlst az
illet procedrnak.
3.10.3. Az SMRAM processzor-llapot trol formtuma
Az SMRAM terlet llapottrol rekordjnak szerkezett a 3.78
bra mutatja be. A regiszterek fizikai helye ahhoz a CS-bzisba tlttt
rtkhez kpest relatvak, mely kezdetben 30000H, de megvltoztathat.
A regiszterek abszolt helye: (CSbzis + RegiszterOfszet).
Az FFA8H-FFFFH ofszeteken lev mezk az SMM# megszakts
pillanatban a processzor regiszter-llapott troljk. A fennmarad
biteket a kvetkez rszek mutatjk be.
Regiszter ofszet Regiszter
0FFFC CR0
0FFF8 CR3
0FFF4 EFLAG
0FFF0 EIP
0FFEC EDI
0FFE8 ESI
0FFE4 EBP
0FFE0 ESP
0FFDC EBX
0FFD8 EDX
0FFD4 ECX
272
Rendszermenedzsel zemmd
0FFD0 EAX
0FFCC DR6
0FFC8 DR7
0FFC4 TR*
0FFC0 LDTR*
0FFBC GS*
0FFB8 FS*
0FFB4 DS*
0FFB0 SS*
0FFAC CS*
0FFA8 ES
0FFA7-0FF04 Fenntartva
0FF02 Lells automatikus
jraindtsa
0FF00 I/O trap jraindtsa
0FEFC SMM reviziszm
0FEF8 llapot trol bzisa
0FEF7-0FE00 Fenntartva
3.78. bra: Az llapottrol formtuma
Megjegyzsek:
A FENNTARTOTT-knt bejellt terleteket az SMM kezel nem
hasznlhatja. E terletekre val rs a processzor hibs mkdst
eredmnyezheti. Az a software, amelyik ezeknek a terleteknek a
tartalmra alapoz, az elkvetkez processzor genercikkal
inkompatibilis lehet.
* A fels 2 Byte FENNTARTOTT.
A 3.78. brn megnevezett regiszterek lthatk, teht az SMM
kezel kiolvashatja rtkket az llapottrol rekordbl. Ezek kzl az
adatttelek kzl az SMM egyeseket megvltoztathat s a megvltozott
rtkk a processzor regisztereibe az RSM utastssal tlthet be. A 3.79.
bra bemutatja, hogy mely adatttelek vltoztathatk meg, s melyek
nem. A tblzat mg azt is megmutatja, hogy egyes regiszterrtkek az
273
ltalnos CPU programozsi informcik
llapottrolba mentdnek, azonban nem lthatk. E ttelek a fenntartott
rszeken troldnak, de helyk s formtumuk klnbz processzor-
verzik esetn ms s ms. A 3.79. bra utols sora azokat a regisztereket
mutatja, melyeket az SMI# s RSM nem trol illetve llt vissza
automatikusan. Ha az SMM kezel megvltoztatja ezeket a regisztereket,
akkor implicit mdon el is kell trolja, illetve vissza is kell lltsa ket.
llapot adat Mentett s
visszatlttt?
Olvashat? rhat?
EDI, ESI, ESP, EBX, EDX, ECS,
EAX, EFLAG, EIP
Igen Igen Igen
CR0, CR3, DR6, DR7, TR,
LDTR, GS, FS, DS, SS, CS, ES
Igen Igen Nem
CR1, CR2, CR4, A GDT
lthatatlan deskriptor regiszterei,
LDT, IDT, CS, DS, ES, FS, GS
Igen Nem Nem
DR0-DR7, FP regiszterek STn,
FCS, FSW, cmz sz, FP utasts
mutat, FP op. kd s operandus
mutat
Nem Nem Nem
3.79. bra: llapot-beoszts
3.10.3.1. Az SMM revzi-azonost (FEFCH ofszet)
A 32 bites SMM revzi-azonost megadja az SMM
verziszmt s a processzor ltal nyjtott lehetsgeket.
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 6 8 7 5 4 3 2 1 0
SMM revizi szint Fenntartva, rtke 0
I/O trap kiterjeszts
SMM bzis relokci
3.80. bra: SMM revzi-azonost
274
Rendszermenedzsel zemmd
Az SMM revzi-azonost mezit a 3.81. bra mutatja. Az 1-re
lltott 16. vagy 17. bitek azt mutatjk, hogy a processzoron az illet
lehetsgek implementlva vannak.
Bitek Megjegyzs
0-15 Alap SMM verzi azonost
16 A processzor tmogatja az I/O trap jraindtst
17 A processzor tmogatja az SRAM thelyezst
3.81. bra: SMM revzi-azonost tblzat
Megjegyzs: Minden ms bit fenntartott.
3.10.3.2. I/O trap-jraindts (FF00H ofszet)
Az I/O trap-jraindt slot lehetv teszi az SMM szmra, hogy
az az RSM utastst egy megszaktott I/O utasts automatikus jra
trtn vgrehajtsra brja. Ha az RSM utasts vgrehajtsakor az I/O
trap-jraindt slot az FFH rtket tartalmazza, akkor a processzor az
SMI# ltal megszaktott I/O utastst automatikusan jra vgrehajtja. Ha
az RSM utasts vgrehajtsakor az I/O trap-jraindt slot a 00H rtket
tartalmazza, akkor a processzor az SMI# ltal akkor a processzor nem
hajtja vgre jra az I/O utastst. Az I/O trap-jraindt slot-ot az SMI#
feldolgozsakor a processzor automatikusan nullval inicializlja. Az
SMM kezel csak akkor kell az I/O trap-jraindt slotot a 0FFH rtkre
lltsa, amikor az SMI# egy I/O utastshatron szakad meg egy trap ltal.
Ha az RSM utasts vgrehajtsakor a processzor az I/O trap-jraindt
slotban a 0FFH rtket tallja, de a megszaktott utasts nem egy I/O
utasts, akkor a mvelet eredmnye kiszmthatatlan.
275
ltalnos CPU programozsi informcik
3.10.3.3. Felfggesztett llapotbl val automatikus
jraindts (FF02H ofszet)
Ha felfggesztett llapotban a processzor felismeri az SMI#-t,
akkor a processzor a felfggesztett llapotbl val automatikus jraindts
Byte-jt 1-re lltja, egybknt trli azt. Ha ez a mez 1, akkor az SMM
kezel megvltoztathatja rtkt annak rdekben, hogy ellenrizze a
processzornak a kezelbl az RSM utastssal val, a HLT utastst
folytat visszatrst. A lehetsgeket a 3.82. bra mutatja.
rtk a belpsnl rtk a kilpsanl CPU mkds a kilpsnl
0 0 Visszatr a megszaktott
program kvetkez utastsra
0 1 Kiszmthatatlan
1 0 Visszatr a HLT utni
utastsra
1 1 Visszats a megszaktott HLT
utastsra
3.82. bra: Felfggesztett llapotbl val automatikus jraindts
3.10.3.4. Az llapottrol bzisa (FEF8H ofszet)
A processzornak egy olyan lthatatlan bels regisztere van,
amelyik megadja az llapottrol rekord s az SMM kezel els
utastsnak fizikai bziscmt. Az SMRAM relokcijt tmogat
processzorok (a Pentium is ilyen) e regiszter tartalmt az SMI# jel
feldolgozsa alatt az llapottrol-bzisba mentik.
Az RSM utasts vgrehajtsakor a Pentium processzor
viszszatlti bels regisztereinek tartalmt az llapottrol-bzisbl. gy
lehetv vlik e regiszter tartalmnak megvltoztatsa. Az llapottrol-
bzis s a processzor bels, fenntartott regiszterben trolt kezdeti rtk
030000H.
276
Rendszermenedzsel zemmd
Ez a mr meglv SMM rendszerekkel val kompatibilits
rdekben van gy, melyeknl az alaprtelmezsben szerepl SMRAM
terlet minimlisan a 38000H cmnl kezdd 32 kByte-nyi rszknt van
definilva. Most, hogy az SMRAM helye vltoz lehet, az SMRAM
terlet egy minimlisan 32 kByte mret, az [8000H + SCbzis] cmen
kezdd terletknt van definilva.
3.10.4. Az SMRAM relokcija
Az SMM revzi-azonost megadja, hogy a processzor tmogatja
az SMRAM relokcijt vagy sem. Az SMRAM nem cache-elhet
cmekre val reloklsa megelzheti azt, hogy az SMI# feldolgozsa
megzavarja a cache tartalmt.
Az SMRAM-relokci megvalstsa az SMRAM llapot-
troljnak egy lokcija s egy lthatatlan bels regiszter
felhasznlsval trtnik. A 4 Byte-os llapottrol-bzis a processzor
ltal az SMM-be val belpskor felhasznlt lthatatlan bels
regiszternek felel meg. Az SMM llapottrol s az SMM kezel els
utastsnak helyt hatrozza meg.
Egy SMI# kiszolglsakor a processzor lthatatlan bels
regiszternek tartalma az llapottrol-bzis mezben lesz trolva. Egy
RSM utasts vgrehajtsakor a processzor a lthatatlan regisztert az
llapottrol-bzisbl tlti fel.
Az SMM kezel megvltoztathatja az llapottrol-bzis mez
rtkt az llapottrol rekordban. Ezutn, amikor jabb SMI#-k
generldnak, az SMM llapottrol s a kdszegmens-bzisok szmra
generlt lokcik szmra a processzor az j rtket hasznlja.
Megjegyzend, hogy az INIT vonal aktivlsa a bels
llapottrol-bzisregiszter tartalmt nem vltoztatja meg. Ugyancsak
megjegyzend, hogy amikor a processzor az j llapottrol-bzist
feltlti, a vltoztats nincs hatssal a CS szelektorra.
277
ltalnos CPU programozsi informcik
3.10.5. Visszatrs az SMM-bl
Az RSM utasts kilp az SMM-bl s visszaadja a vezrlst a
megszaktott programnak. Az RSM utasts csak az SMM-ben hajthat
vgre. Vgrehajtsra az SMM-en kvl tett ksrlet rvnytelen-opkd
kivtelt okoz.
Az RSM utasts vgrehajtsakor a processzor elzleg (az SMM-
be val belpskor) elmentett llapota visszalltdik s a vezrls
visszakerl a megszaktott programra. Ha a processzor egy rvnytelen
llapot-informcit detektl, akkor a lekapcsolt llapotba vlt t. Ez csak
a kvetkez esetekben trtnhet meg:
Az llapottrol bzis mezben trolt rtk nem egy 32 kByte-hoz
illesztett cm.
A CR4 regiszter egyik fenntartott bitjnek rtke 1.
A CR0 valamelyik bitkombincija illeglis, pontosabban (PG=1 s
PE=0) vagy (NW=1 s CD=0).
Lekapcsolt llapotban a processzor egy NMI megszakts
megjelensig vagy a reszetelsig megszaktja az utastsok vgrehajtst.
Hogy a lekapcsolt llapotba val belpst jelezze, a processzor egy
specilis buszciklust generl.
Ha az SMM kezel a rendszernek olyan llapott vltoztatta meg,
amelyet az RSM nem llt vissza (ilyenek pldul a lebegpontos
regiszterek), akkor azt az llapotot mg az RSM vgrehajtsa eltt vissza
kell lltsa.
278
8086-os virtulis zemmd
3.11. 8086-os virtulis zemmd
A Pentium processzor tmogatja egy vagy tbb 8086 vagy 8088
program vdett md krnyezetben val vgrehajtst. Ebben a
krnyezetben egy 8086 program egy 8086-os virtulis taszk rszeknt fut.
A 8086-os virtulis zemmd kihasznlja a vdett md ltal a
multitaszking szmra nyjtott tmogatst. A 8086-os programokat
futtat 8086-os virtulis taszkokbl nemcsak hogy tbb is lehet, hanem
ezek a Pentium processzor ms taszkjaival is multitaszkolhatk.
A 8086-os virtulis taszkok clja az, hogy a 8086 proceszszorra rt
program szmra egy "virtulis gp"-et emulljanak. Egy teljes virtulis
gp hardware-bl s rendszersoftware-bl ll. A 8086 processzor
emulcijt a software ltal felhasznlt hardware valstja meg, a
kvetkezkppen:
A hardware egy virtulis regiszterkszletet (a TSS-en keresztl),
virtulis memrit (a taszk lineris cmtartomnynak els MByte-
jt), s a megszaktsok virtulis tmogatst biztostja, ezenkvl
kzvetlenl vgrehajt minden olyan utastst, mely az elbbiekben
emltett regisztereket s cmtartomnyt hasznlja.
A software a virtulis gp kls interfszt (I/O, megszaktsok s
kivtelek) a tgabb krnyezettel (amelyben maga is fut) konzisztens
mdon vezrli. A software vlaszthat azon lehetsgek kztt, hogy a
I/O-t, a megszaktsokat s a kivtelkezelst maga emullja, vagy
ezeknek a software kzbelpse nlkli vgrehajtst a hardware-re
bzza.
A 8086-os virtulis gpeket tmogat software neve 8086-os
virtulis felgyelprogram. A Pentium processzor sajt 8086-os virtulis
mkdsi mdjnak olyan kiterjesztseit tartalmazza, melyek az
alkalmazsok teljestmnyt azltal nvelik meg, hogy kikszblik az
egyes mveletek emullsa miatt keletkez, a felgyelprogramnak
jelentett hibkat. A virtulis md kiterjesztsrl a Pentium processzoron
tbb informci a fggelkben tallhat.
279
ltalnos CPU programozsi informcik
3.11.1. 8086 CPU kd vgrehajtsa
A processzor akkor mkdik 8086-os virtulis zemmdban, ha
az EFLAGS regiszter VM (virtual machine) bitje 1-re van lltva. E flaget
a processzor kt alkalommal teszteli:
1. Egy szegmensregiszter feltltsekor annak kidertse rdekben, hogy
szksg van-e a 8086 stlus cmtalaktsra vagy sem.
2. Egy utasts dekdolsakor, annak meghatrozsa rdekben, hogy
mely utastsok rzkenyek az IOPL-re s hogy mely utastsokat
nem tmogat (a vals zemmdhoz hasonlan).
3.11.1.1. Regiszterek s utastsok
A 8086-os virtulis zemmdban rendelkezsre ll
regiszterkszlet magba foglalja a 8086 processzor sszes regisztert,
valamint a 8086 processzor utn bevezetett j regisztereket (FS s GS).
Olyan utastsok llnak rendelkezsre, melyek kzvetlenl a
szegmensregiszterekkel dolgoznak.
Az 10FFEFH feletti lineris cmek a V86 felgyelprogram, az
opercis rendszer, valamint a tbbi rendszersoftware rendelkezsre
llnak. A felgyelprogramnak is szksge lehet adatszegmens-
deszkriptorokra, mivel elemeznie kell a 8086 programnak a cmtartomny
els MByte-jban tallhat megszaktsvektor-tblzatt s ms rszeit.
A 8086 opercis rendszer implementlsra ltalban kt
vlasztsi lehetsg van:
1. A 8086 opercis rendszer a 8086 program rszeknt fut. Ez a
megkzelts a kvetkez esetekben elnys:
A 8086 alkalmazs kdja megvltoztatja az opercis rendszert.
Nincs elg id a a 8086 opercis rendszernek egy Pentium CPU
opercis rendszerknt trtn jraimplementlsra.
280
8086-os virtulis zemmd
2. A 8086 opercis rendszer a V86 felgyelprogramban van
implementlva vagy emullva. Ez a megkzelts a kvetkez
esetekben elnys:
Az opercis rendszer funkcii tbb 8086-os virtulis taszk kztt
knnyebben koordinlhatk.
A 8086 opercis rendszer funkcii Pentium CPU rendszerhvsokkal
knnyen emullhatk.
Megjegyzend, hogy a 8086 processzor opercis rendszernek
implementlsra vlasztott mdnak klnbz 8086 opercis
rendszerek felhasznlsa esetn klnbz 8086-os virtulis taszkjai
lesznek.
3.11.2.1. Lapozs a 8086-os virtulis taszkok esetben
Egyetlen 8086-os virtulis taszknak sincs szksge lapozsra, a
lapozs azonban hasznos vagy szksges lehet a kvetkez esetekben:
Tbb 8086-os virtulis taszk kpzse. Minden egyes taszk a lineris
cmek als MByte-jt ms s ms fizikai cmtartomnyra kell
lekpezze.
Az 1 MByte-nl jelentkez cmcsonkts emullsa. A 8086 csald
tagjai 1 MByte-nl nagyobb cmet is megadhatnak. Pldul egy
0FFFFH rtk szelektor s egy 0FFFFH rtk ofszet ltal
meghatrozott tnyleges cm rtke 10FFEFH (1 MByte plusz 65519
Byte). A 8086 processzor, mivel csak 20 bites cmeket tud kpezni,
levgja a legmagasabb bitet, teht 0FFFEH-ra csonktja ezt a cmet. A
Pentium processzor az ilyen cmeket nem csonktja. Ha a 8086
programok valamelyike fgg a cmcsonktstl, egy 8086-os virtulis
taszkban ugyanez a hats rhet el az 100000H s 110000H illetve a 0
s 100000H kzti lineris cmeknek ugyanarra a fizikai cmre trtn
lekpezsvel.
281
ltalnos CPU programozsi informcik
A fizikai cmtartomnynl nagyobb lineris cmtartomny kpzse.
Multitaszkingban fut tbb 8086 program szmra kzs 8086
opercis rendszer vagy ROM kd megosztsa.
Csapda llts a memriba lekpezett I/O eszkzknek, illetve ezek
tirnytsa.
3.11.2.2. Vdelem egy 8086-os virtulis taszkon bell
Egy 8086 program szegmensei kzt nem ktelez a vdelem. A
8086-os virtulis taszkban fut rendszersoftware-nek a 8086 alkalmazi
programmal szemben val vdelmre a software-tervezk a kvetkezket
kell figyelembe vegyk:
Minden egyes taszk lineris cmtartomnynak els MByte-jt (plusz
64 kByte-ot) a 8086 processzorra rt program szmra kell lefoglalni.
Egy 8086 processzortaszk nem generlhat e tartomnyon kvl es
cmeket.
A virtulis gp felgyelprogramjnak s a minden egyes 8086-os
virtulis taszk cmtartomnyban lev rendszersoftware vdelmre az
U/S bitet kell hasznlni. Ha a processzor 8086-os virtulis
zemmdban van, akkor a CPL rtke 3 (legkevsb privilegizlt);
ezrt egy 8086 processzorra rt programnak csak felhasznli
privilgiumai vannak. Ha a virtulis gp felgyelprogramja lapjainak
felgyeli privilgiumai vannak, akkor ezekhez a 8086 program nem
frhet hozz.
3.11.3. Belps a 8086-os virtulis zemmdba s az
abbl val kilps
A 3.83. bra sszefoglalja egy 8086 programba val belps s az
abbl val kilps mdozatait. A 8086-os virtulis zemmdba val
belps a VM flag 1-re lltsa ltal trtnik. Ez ktflekppen valsthat
meg:
282
8086-os virtulis zemmd
1. Egy taszkra val tkapcsols az j TSS-bl betlti az EFLAGS
regiszter kpt. Az j taszk TSS-e nem 16, hanem 32 bites kell
legyen, mivel a 16 bites TSS nem tlti fel az EFLAGS fels, a VM
flaget tartalmaz szavt. Az EFLAGS regiszter j tartalmban 1-re
lltott VM flag azt jelenti, hogy az j taszk 8086 utastsokat hajt
vgre, ezrt a szegmensregiszterek TSS-bl val feltltsekor a
processzor 8086 stlusban alaktja ki a bziscmet.
2. Egy taszk procedrjban tallhat IRET utasts feltlti az EFLAGS
regisztert a verembl. Az 1-re lltott VM flag azt jelenti, hogy a
procedra, amelyre a vezrls visszaaddik, egy 8086 procedra. Az
IRET utasts vgrehajtsakor a CPL rtke 0 kell legyen, ellenkez
esetben a processzor nem vltoztatja meg a VM llapott.
Belps az
inicializlsba
Taszkvlts
vagy IRET
8086 program
(V86 md)
Megszakts, kivtel
IRET
Taszkvlts
Taszkvlts
Egyb CPU taszk (vdett md)
V86 monitor
(vdett md)
Taszkvlts
Taszkvlts
3.83. bra: Belps a 8086-os virtulis zemmdba s az abbl val
kilps
A 8086-os virtulis zemmdba taszktkapcsolssal val belps
esetn a szegmensregiszterek a TSS-bl tltdnek fel, a VM flag
belltsra egy IRET utastst hasznlva fel, a szegmensregiszterek a
PL0 verem szegmensregisztereibl tltdnek fel (lsd a 3.84. brt).
283
ltalnos CPU programozsi informcik
Megszakts vagy kivtel fellpte esetn a processzor kilp a
8086-os virtulis zemmdbl. Ilyenkor kt eset lehetsges:
1. A megszakts vagy kivtel egy taszktkapcsolst okoz. Egy 8086-os
virtulis taszkrl brmilyen ms taszkra val tkapcsols esetn az
EFLAGS regiszter feltltdik az j taszk TSS-bl. Ha az j TSS 32
bites s az EFLAGS j tartalmnak VM flagje trlve van, vagy ha az
j TSS 16 bites, akkor a processzor trli az EFLAGS regiszter VM
flagjt, a vdett md cmalakot felhasznlva az j TSS-bl feltlti a
szegmensregisztereket, s vdett mdban megkezdi az j taszk
utastsnak vgrehajtst.
2. A megszakts vagy kivtel egy 0. privilgiumszint
(legprivilegizltabb) procedrt hv meg. A processzor trolja az
EFLAGS regiszter aktulis tartalmt, majd trli a VM flaget. A
megszakts- vagy kivtelkezel emiatt "natv" 32 bites vdett-md
kdknt fut. Ha a megszakts vagy kivtel egy hasonl szegmensben
vagy 0-tl klnbz privilgiumszint szegmensben lev procedrt
hv meg, akkor a processzor ltalnos vdelmi hibt generl, a
hibakd annak a kdszegmensnek a szelektora, melyre a hvs
vonatkozott.
Nem hasznlt
Rgi GS
Rgi FS
Rgi DS
Rgi ES
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP j ESP
ESP a TSS-bl Nem hasznlt
Rgi GS
Rgi FS
Rgi DS
Rgi ES
Rgi SS
Rgi ESP
Rgi EFLAG
Rgi CS
Rgi EIP
j ESP
ESP a TSS-bl
Hibakd
Hibakddal Hibakd nlkl
284
8086-os virtulis zemmd
3.84. bra: A 0. privilgiumszint verem llapota 8086-os virtulis
mdban, a megszaktst kveten
A rendszersoftware- nem vltoztatja meg kzvetlenl a VM flag
llapott, ehelyett megvltoztatja a vermen vagy a TSS-ben trolt
EFLAGS kpnek egyes bitjeinek llapott. Amikor az els 8086-os
virtulis taszkot felpti, a 8086-os virtulis felgyelprogram az
EFLAGS-nek a vermen vagy a TSS-ben lev kpnek VM bitjt 1-re
lltja. A megszakts- s kivtelkezelk elemezhetik a vermen lev VM
flag llapott. Ha a megszaktott procedra 8086-os virtulis mdban
futott, akkor a kezelnek esetleg szksge lehet a 8086-os virtulis
felgyelprogram maghvsra.
3.11.3.1. Taszktkapcsolsok ltali tranzcik
Egy 8086-os virtulis taszkba illetve abbl val tkapcsolsnak az
oka a kvetkez hrom kzl az egyik:
1. Egy taszkkaput meghv megszakts.
2. A 32 bites opercis rendszer temezjnek egy akcija.
3. IRET utasts vgrehajtsa 1-re lltott NT flag esetn.
Az elbbi esetek brmelyikben a processzor az j TSS-ben lev
kpnek megfelelen megvltoztatja az EFLAGS regiszter VM flagjnek
llapott. Ha az j TSS 16 bites, akkor az EFLAGS regiszter fels szava
nincs a TSS-ben, ebben az esetben a processzor trli a VM flaget. A
processzor a VM flaget mg azeltt mdostja, hogy a
szegmensregisztereket az j TSS-bl feltlten. A VM flag j belltsa
meghatrozza azt, hogy a processzor az j szegmensregiszter-kpeket
8086, 80286 vagy 32 bites szelektorokknt rtelmezi.
3.11.3.2. tmenet trap- s megszaktskapukon
keresztl
A trap- s megszaktskapukat meghv kivtelek s
megszaktsok nyomn a processzor kilphet a 8086-os virtulis
285
ltalnos CPU programozsi informcik
zemmdbl. A kivtel vagy megszakts egy IRET utasts
vgrehajtsval tr vissza a 8086 programba.
A kivtelek s megszaktsok hromflekppen kezelhetk:
1. A 8086-os virtulis felgyelprogram ltal.
2. A 8086-os virtulis felgyelprogram tadhatja a vezrlst a 8086
program sajt megszaktskezeljre.
3. Egy vdett md megszaktskiszolgl rutin ltal.
Ha a megszaktst vagy kivtelt a felgyelprogram kell kezelje s
ha az EFLAGS vermen trolt kpben a VM flag 1-re van lltva, akkor a
megszaktskezel tadja a vezrlst a felgyelprogramnak. A
felgyelprogram az els kt mdszer egyikt hasznlja. Ha nincs
szksg arra, hogy a megszaktst vagy kivtelt a felgyelprogram
kezelje, akkor a 3-ra llthat IOPL lehetv teszi, hogy minden virtulis
md megszaktst a vdett md megszaktsrutin kezeljen.
Mivel egy 8086 program a 8086 processzoron val futtatsra volt
tervezve, ezrt ennek egy 8086-os virtulis taszkban 8086 stlus
megszaktsvektor-tblzata van, mely a 0 lineris cmen kezddik. Ezrt
a felgyelprogram kzbelpst s a vdett mdba val tkapcsolst
ignyl kivtelek s megszaktsok esetn a processzor ezt a tblzatot
nem hasznlja kzvetlenl, ehelyett a kezelket az IDT-n keresztl hvja
meg. 8086-os virtulis mdban egy megszakts vagy kivtel szmra az
IDT bejegyzse vagy-vagy alapon a kvetkezket kell tartalmazza:
Egy taszkkaput.
Egy 32 bites trapkaput (14-es deszkriptortpus) vagy egy 32 bites
megszaktskaput (15-es deszkriptortpus), mely egy nem megegyez,
0. privilgiumszint (legprivilegizltabb) kdszegmensre kell
mutasson.
A 32 bites trap- vagy megszaktskapukat hasznl megszaktsok
s kivtelek a 0. privilgiumszintet hasznljk. A szegmensregiszterek
286
8086-os virtulis zemmd
tartalma e privilgiumszint vermn lesznek trolva. Egy 8086 programot
futtat 8086-os virtulis taszk esetn a futs sorn bekvetkez kivtel
vagy megszakts utn a verem llapott a 3.84. bra szemllteti.
Miutn a processzor a 8086-os szegmensregisztereket elmenti a 0.
privilgiumszint vermre, a kezel procedra futtatsa eltt trli a
szegmensregisztereket. Ez lehetv teszi a megszaktskezel szmra,
hogy az biztonsgosan elmentse s visszalltsa a DS, ES, FS s GS
regiszterek tartalmt gy, mintha azok a Pentium CPU szelektorai
lennnek. A rendes taszkok vagy 8086-os virtulis taszkok ltal
meghvott megszaktskezelk a regiszterek elmentsre s
visszalltsra brmely taszk esetn ugyanazt a kdrszt hasznlhatjk. E
regisztereknek az IRET utasts vgrehajtsa eltti trlse nem okoz trap-
et a kivtelkezelben. A szegmensregiszterekben rtkeket vr vagy
visszaadni akar megszakts-kezelk a regisztereknek a 0.
privilgiumszint vermre mentett kpt kell hasznlniuk. Az olyan
megszaktskezelk, melyeknek tudniuk kell, hogy a megszakts 8086-os
virtulis mdban lpett fel vagy sem, megvizsglhatjk az EFLAGS
regiszter eltrolt tartalmnak VM flagjt.
Egy megszakts vagy kivtel visszakldse a 8086 programnak a
kvetkez lpsekbl ll:
1. A 8086 megszaktsvektor felhasznlsa a megfelel kezel
procedra helynek megllaptsra.
2. A 8086 program FLAGS, CS s IP rtkeinek trolsa a 3.
(legkevsb privilegizlt) privilgiumszint vermn.
3. A visszatrsi kapcsolat lecserlse a 0. privilgiumszint vermn gy,
hogy az a 3. privilgiumszinten lev kezel procedrra mutasson.
4. A vezrlsnek a kezelre val tadsa, egy IRET utasts
vgrehajtsval.
5. Amikor a 3. privilgiumszinten lev kezel IRET utastsa jbl
meghvja a 8086-os virtulis felgyelprogramot, a visszatrsi
kapcsolat visszalltsa a 0. privilgiumszint vermn gy, hogy az az
287
ltalnos CPU programozsi informcik
288
eredeti, megszaktott, 3. privilgiumszinten lev procedrra
mutasson.
6. A vezrlsnek a megszaktott procedrnak val visszaadsa, egy
IRET utasts vgrehajtsval.
Ha az IOPL 3-ra van lltva s a megszaktskapu DPL-je szintn
3-ra, akkor az INT n utastsok a megadott vektorszmmal egy trap ltal
megszakadnak. Az olyan megszaktsvektorok, melyeknek IDT kapuja 3-
ra van lltva, megvizsglhatjk az EFLAGS veremre mentett kpnek a
VM bitjt annak megllaptsa cljbl, hogy a megszaktst vissza kell-e
trteni a felgyelprogramhoz vagy t kell adni a 8086 program
megszaktskezeljnek.
3.11.4. rzkeny utastsok
Amikor a Pentium processzor 8086-os virtulis zemmdban
mkdik, a CLI, STI, PUSHF, POPF, INT n, s IRET utastsok
rzkenyek az IOPL-re. Az IOPL-re vdett zemmdban rzkeny IN,
INS, OUT s OUTS utastsok a 8086-os virtulis zemmdban nem
rzkenyek. A 8086-os virtulis mdban rzkeny utastsok teljes
felsorolsa a kvetkez:
CLI - Megszaktst engedlyez bit trlse
STI - Megszaktst engedlyez bit 1-re lltsa
PUSHF - Flagek veremre helyezse
POPF - Flagek leemelse a veremrl
INT n - Software-megszakts
IRET - Visszatrs megszaktsbl
8086-os virtulis mdban val futs alatt a CPL rtke mindig 3.
Ha az IOPL rtke kisebb mint 3, a fenti utastsok vgrehajtsra tett
prblkozs ltalnos vdelmi hibt okoz. Ezen utastsok az IOPL-re
azrt rzkenyek, hogy lehetsget adhassanak a 8086-os virtulis
felgyelprogramnak arra, hogy az a hatsukat emullhassa. Ezen
utastsok mkdst akkor, amikor a virtulis md kiterjesztse
mkdsben van, a fggelk trgyalja.
8086-os virtulis zemmd
289
3.11.5. Virtulis megszaktsok tmogatsa
Szmos, nem multitaszking rendszerekre rt 8086 program a
megszaktsok vezrlse rdekben az IF flaget lltja. Multitaszking
krnyezetben ez problmk forrsa lehet. Emiatt a 386 s 486
processzorokon fut felgyelprogramok a software-bl egy virtulis
megszaktsflaget lltnak. Az IF flaget llt minden utasts a
felgyelprogramra adja t a vezrlst, az ezeken a processzorokon val
emulci cljbl. A Pentium processzornak a virtulis megszaktsflag-
tmogatsrl tbb informci a fggelkben tallhat.
3.11.6. A 8086 opercis rendszerhvsok emulcija
Szmos 8086 opercis rendszerhvs a paramtereknek a veremre
val helyezse, majd egy INT n utasts vgrehajtsa ltal trtnik. Az
INT n utasts rzkeny az IOPL-re amiatt, hogy lehetv tegye az, hogy
a 8086-os virtulis felgyelprogram emullni tudja a 8086 opercis
rendszer funkciit, vagy a megszaktst visszakldhesse a 8086 opercis
rendszerhez.
Ha az IOPL<3, az INT n utastsokat a felgyelprogram fogja el.
Ha IOPL=3, akkor a megszaktsokat a vdett md megszaktskezel
rutin szolglja ki, a 486 processzorral kompatibilis mdon. A 386 s 486
processzorokon a 8086-os virtulis zemmdban vgrehajtott minden
INT n utastst a felgyelprogram kell elfogjon, amikor az IOPL<3. A
Pentium proceszszornak a megszaktskezelst tmogat virtulis md
kiterjesztsrl informcik a fggelkben tallhatk.
A 3.85. bra meghatrozza, hogy a 8086-os virtulis mdban az
IOPL rtkre alapozva a processzor milyen mveleteket fog vgezni.
ltalnos CPU programozsi informcik
290
IOPL Processzor mvelet
=3 Megszaktsa a V86 mdbl a vdett mdba
Trli a VM s a TF flaget
Ha a szolgltats megszakts kapun keresztl trtnik,
trli az IF flaget
PL0 rtkei lecserldnek a TSS rtkeire
Elmenti a GS, FS, DS s ES regisztereket a PL0 veremre
Nullra lltja a GS, FS, DS s ES regisztereket
Elmenti megszaktott taszk SS, EIP, EFLAG, CS s EIP
regisztereit a PL0 veremre
Belltja CS s EIP rtkeit a megszakits kapu alapjn
<3 ltalnos vdelmi kivtel
3. 85. bra: A software-megszakts mveletei
3.11.7. Virtulis I/O
Szmos, nem multitaszking rendszerekre rt 8086 program az I/O
portokhoz kzvetlen mdon fr hozz. Multitaszking krnyezetben ez
problmk forrsa lehet. Ha ugyanahhoz a porthoz tbb mint egy program
fr hozz, ezek megzavarhatjk egymst. Legtbb multitaszking rendszer
megkveteli azt, hogy az alkalmazi programok a portokat az opercis
rendszeren keresztl rjk el. Ez egyszerbb, kzpontostott vezrlst
eredmnyez.
Az I/O vdelmet a processzor olyan I/O-k ltrehozsval valstja
meg, melyek kompatibilisek a krnyezettel s tltszak a 8086
programok szmra. Az I/O portok vdelmt a tervezk a kvetkezkben
felsorolt, klnbz szempontok figyelembevtelvel valsthatjk meg:
Az I/O kzvetlen vgrehajtsra tett minden egyes ksrlet esetn meg
kell vdeni az I/O cmtartomnyt s kivteleket kell generlni.
A 8086 programot hagyni kell, hogy az I/O-t kzvetlenl vgezze el.
8086-os virtulis zemmd
291
Bizonyos I/O portok elrsre tett ksrletek esetn kivteleket kell
generlni.
Bizonyos, a memriba lekpezett I/O portok elrsre tett ksrletek
esetn kivteleket kell generlni.
Az I/O portokhoz val hozzfrst vezrl mdszer attl fgg,
hogy a hozzfrsek I/O-ra vagy a memriba vannak lekpezve.
3.11.7.1. I/O-ra lekpezett I/O
A bizonyos I/O cmek elrsre tett ksrletek esetn kivtelek
generlsra az I/O engedlyez bittrkp hasznlhat. Minden egyes
8086-os virtulis taszk I/O engedlyez bittrkpe meghatrozza, hogy az
adott taszk esetben mely I/O cmek generlnak kivteleket. Mivel
minden taszknak ms s ms I/O engedlyez bittrkpe lehet, klnbz
taszkok esetben a kivteleket generl I/O cmek klnbzhetnek. A
vdett mdtl ez abban klnbzik, hogy az IOPL-t senki nem vizsglja
meg.
3.11.7.2. Memriba lekpezett I/O
A memriba lekpezett I/O-t hasznl rendszerekben a
processzor lapozsi lehetsgei felhasznlhatk az I/O portokhoz val
hozzfrsi ksrletek esetn kivtelek generlsra. A 8086-os virtulis
felgyelprogram a memriba lekpezett I/O vezrlsre a lapozst a
kvetkezkppen hasznlhatja:
Az I/O mveletek vgrehajtst ignyl taszkok lineris
cmtartomnynak egy rszt az I/O portok ltal hasznlt fizikai
cmtartomnyra kpezi le. Az I/O portokat (klnbz lapokon)
klnbz cmekre tve, a lapoz mechanizmus megvalsthatja a
taszkok egymstl val elszigetelst.
A lineris cmtartomny egy rszt olyan lapokra kpezi le, melyek
nincsenek jelen. gy ahnyszor a taszk megksrli egy I/O mvelet
ltalnos CPU programozsi informcik
292
vgrehajtst ezeken a lapokon, egy kivtel generldik. A
rendszersoftware- ezutn majd rtelmezheti a megprblt I/O
mveletet.
Az I/O tartomny software-emulcija bizonyos krlmnyek
kzt az opercis rendszer rszrl tl sok kzbelpst ignyel. Ilyenkor
lehetsges az, hogy csak az els I/O hozzfrs megksrlse okozzon
kivtelt. A rendszersoftware- ezutn eldntheti, hogy az I/O vezrlsnek
kizrlagos joga igeiglenesen tadhat-e egy programnak vagy sem. Ha
igen, akkor az I/O vdelmt megsznteti s a program szmra lehetv
teszi, hogy az teljes sebessggel fusson.
3.11.7.3. Klnleges I/O pufferek
Az intelligens kontrollerek pufferei (pldul egy bittrkpes
keretpuffer) a lapok lekpezsvel szintn emullhatk. A puffer lineris
tartomnya minden egyes 8086-os virtulis taszk esetben ms s ms
fizikai tartomnyra kpezhet le. A 8086-os virtulis felgyelprogram
azt vezrli, hogy melyik virtulis puffert kell a fizikai cmtartomnyban
lev vals pufferbe msolni.
3.11.8. Klnbsgek a 8086 CPU-hoz kpest
8086-os virtulis zemmdban ltalban a 8086 s 8088
processzorokra rt programok futnak. A kvetkez felsorols bemutatja a
8086 processzor s a Pentium processzor valamint ms 32 bites
processzorok 8086-os virtulis zemmdja kzti kisebb eltrseket.
1. Az utastsok vgrehajtshoz szksges rajelek szma. A 32 bites
processzorokon legtbb utasts kevesebb rajel alatt hajtdik vgre,
mint a 8086 processzoron. A leginkbb befolysolt terletek a
kvetkezk:
Az I/O mveletek alkalmval az I/O eszkzk ltal ignyelt
ksleltetsek.
8086-os virtulis zemmd
293
A 8087 koprocesszorral prhuzamosan mkd 8086 processzor
esetben felttelezett ksleltetsek.
2. Az osztskivtelek a DIV utastsra mutatnak. A Pentium processzor
esetben az osztskivtelek mindig a hibt okoz utastsra mutat
CS:IP rtket mentik el. A 8086 processzornl a CS:IP a kvetkez
utastsra mutat.
3. Meghatrozatlan 8086 processzor-opkdok. A 8086 processzor
esetben nem definilt opkdok a Pentium processzoron vagy
rvnytelen-opkd kivtelt generlnak, vagy a Pentium szmra
definilt j utastsknt hajtdnak vgre.
4. A PUSH SP ltal a veremre helyezett rtk. A PUSH SP utasts
vgrehajtsakor a Pentium processzor ms adatot helyez a veremre,
mint a 8086. A Pentium processzor az SP-nek a cskkents eltti
rtkt helyezi a veremre, mg a 8086 a cskkents utni rtkt. Ha a
veremre helyezett adatra szksg van, akkor a PUSH SP utastst a
kvetkez hrom utastssal kell helyettesteni:
PUSH BP
MOV BP, SP
XCHG BP, [BP]
Ez a kd a Pentiumon gy mkdik, mint a PUSH SP a 8086
processzoron.
5. Lptets vagy forgats tbb mint 31 bittel. A Pentium processzor a
lptets s forgats szmllinak csak az als 5 bitjt veszi
figyelembe. Ez a szmll rtkt legtbb 31-re korltozza.
6. Redundns prefixek. A Pentium processzor az utastsok hosszt 15
Byte-ra korltozza. E hatr megsrtsre az egyetlen lehetsg az
utasts eltti redundns prefixek hasznlata. Az utastshossz-hatr
megsrtse esetn ltalnos vdelmi kivtel generldik. A 8086
processzor nem korltozza az utastsok hosszt.
ltalnos CPU programozsi informcik
294
7. A 0 vagy 65535 rtk ofszetet tlp operandus. A 8086
processzoron egy, a 65535 ofszetet (pldul a 65535 ofszetre egy szt
msol MOV) vagy 0 ofszetet (pldul egy sz kiemelse a verembl
egy PUSH ltal, amikor az SP regiszter rtke 1) tlp operandushoz
val hozzfrs esetn az ofszet modulo 65535 alapon megcsonkul. A
Pentium processzor ebben az esetben egy kivtelt generl, ltalnos
vdelmi kivtelt, ha a szegmens egy adatszegmens (azaz a szegmenset
a CS, DS, ES, FS, vagy GS regiszterek cmzik), vagy veremkivtelt,
ha a szegmens egy veremszegmens (melyet az SS regiszter cmez).
8. A 65535 ofszetet tlp sorozatos vgrehajts. A 8086 processzor
esetben, ha az utastsok sorozatos vgre hajtsa a 65535 ofszet
tlpse utn is folytatdik, akkor a processzor a kvetkez utastst
ugyanazon szegmens 0 ofszetjrl tlti be. A Pentium processzor
ebben az esetben ltalnos vdelmi kivtelt generl.
9. A LOCK hasznlata csak bizonyos utastsokra van korltozva. A
LOCK prefix s az ltala vezrelt jel kizrlag annak megelzsre
hasznlhat, hogy ms buszvezrlk az adattviteli mveletet
megszaktsk. A LOCK prefix csak a memrit mdost, kvetkez
Pentium utastsokkal hasznlhat. A LOCK brmilyen ms
utastssal (vagy az albbiakban felsoroltakkal abban az esetben, ha
azok nem a memrit mdostjk) val hasznlata rvnytelen-opkd
kivtelt eredmnyez.
Bitteszt s -vltoztats: a BTS, BTR s BTC utastsok.
Csere: az XCHG, XADD, CMPXCHG s CMPXCHG8B
utastsok (az XCHG esetben nincs szksg a LOCK prefixre).
Egyoperandus aritmetikai s logikai: INC, DEC, NOT s NEG
utastsok.
Ktoperandus aritmetikai s logikai: ADD, ADC, SUB, SBB,
AND, OR s XOR utastsok.
10. Lpsenknti vgrehajts kls megszaktskezelk. A Pentium
processzor lpsenknti vgrehajts kivteleinek prioritsa
8086-os virtulis zemmd
295
klnbzik a 8086 processzortl. Ez a vltoztats megelzi hogy a
kls megszaktskezel is lptetve legyen akkor, amikor a program
megszaktott. A Pentium processzor lpsenknti vgrehajts
kivtelnek minden ms kls megszaktsnl nagyobb prioritsa van.
Az NT utasts vagy egy kivtel ltal meghvott megszaktskezelt a
Pentium azonban mg mindig lpsenknt hajt vgre.
11. IDIV kivtelek a 80H s 8000H hnyadosok esetben. Az IDIV
utasts hnyadosaknt a Pentium kpes a legkisebb negatv szm
generlsra. A 8086 processzor ehelyett azonban osztshiba kivtelt
generl.
12. Flagek a veremben. Az EFLAGS regiszter PUSH utasts,
megszaktsok, vagy kivtelek ltal trolt tartalma a 8086
processzoron trolttl a 12.-tl 15.-ig terjed bitekben klnbzik. A
8086 processzoron ezek a bitek gy troldnak, mintha 1-re lettek
volna lltva, a Pentiumon azonban 8086-os virtulis mdban a 15. bit
rtke mindig 0 s a 12.-tl 14.-ig terjed bitekben mindig az utoljra
beljk tlttt rtk van.
13. Az NMI kezelt megszakt NMI. Miutn a Pentium processzor egy
NMI kivtelt elfogad, a kvetkez IRET utasts vgrehajtsig
maszkolja az NMI megszaktst.
14. A lebegpontos-hiba kivtelt hv lebegpontos hibk. A
lebegpontos-hiba kivtelek a Pentium processzoron meghvjk a
lebegpontos-hiba kivtel kezeljt. Ha a 8086 processzor a 8087
megszakts szmra ms kivtelt hasznl, akkor mindkt
kivtelvektor a lebegpontos-hiba kivtel kezeljre kell mutasson. A
Pentium processzornak olyan jelei vannak, melyek kls logika
hozzadsval tmogatjk a szmos szemlyi szmtgpen hasznlt
megszakts-kezel mechanizmus emulcijnak a felhasznl ltal
definilt hibajelentseit.
15. A numerikus kivtelek meg kell engedjk a prefixek hasznlatt. A
Pentium processzoron a lebegpontos kivtelek szmra lementett CS
s IP regiszterek az ESC utasts eltt esetleg jelenlev prefixekre
ltalnos CPU programozsi informcik
296
mutatnak. A 8086 processzoron az elmentett CS:IP az ESC utastsra
mutat.
16. A Lebegpontos Egysg (FPU) nem hasznlja a megszakts-
kontrollert. A Pentium processzornak kldtt lebegpontos hibajel
nem halad t a megszaktskontrolleren (A 8087 koprocesszor INT
jele viszont thalad). A koprocesszor-hiba kivtel kezeljbl egyes
utastsokat trlni kell, amennyiben azok a megszaktskezelt
hasznljk. A Pentium processzornak olyan jelei vannak, melyek
kls logika hozzadsval tmogatjk a szmos szemlyi
szmtgpen hasznlt megszaktskezel mechanizmus
emulcijnak a felhasznl ltal definilt hibajelentseit.
17. A busz tartsra adott vlasz. A 8086 s Intel286 processzoroktl
eltren a Pentium processzor vlaszol a buszvezrls tvevsre
irnyul, ms lehetsges buszvezrlktl (pldul DMA kontrollertl)
rkez krsekre egy olyan nem illeszked operandus rszeinek
tvitele esetn, mint pldul egy dupla szt kpez kt sz.
18. A 8086-os virtulis zemmdban a CPL rtke 3. A 8086 processzor
nem tmogatja a vdelmet, gy CPL-je sincs. A 8086-os virtulis md
egy 3 rtk CPL-t hasznl, mely megakadlyozza a privilegizlt
utastsok vgrehajtst. Ezek a kvetkezk:
LIDT utasts
LGDT utasts
LMSW utasts
A MOV utastsnak a vezrlregiszterek feltltsre s
elmentsre szolgl specilis alakjai.
CLTS utasts
HLT utasts
INVD utasts
WBINVD utasts
INVLPG utasts
RDMSR utasts
WRMSR utasts
RSM utasts
8086-os virtulis zemmd
297
A fenti utastsok a processzornak az inicializlst kvet vals
zemmdjban hajthatk vgre. Lehetv teszik a rendszer-
adatstruktrk (pldul a deszkriptortblzatok) inicializlst a
vdett mdba val belps eltt. Mivel a 8086-os virtulis
zemmdba csak vdett mdbl lehet belpni, ezek a struktrk a
belpskor mr inicializlva vannak.
19. A denormlt kivtel kezelse klnbzik. A kivtelkezels
klnbsgeinek rszletei a 23. fejezetben tallhatk.
3.11.9. Klnbsgek a 286 CPU-hoz kpest
A 8086-os virtulis zemmd s az Intel286 vals zemmdja
kzti klnbsgek az alkalmazsok s az opercis rendszer kzti
interfszre vannak hatssal. Az alkalmazs a 3. privilgiumszinten
(felhszanli mdban) fut, gy a vdett privilgium utastsok s
architekturlis lehetsgek hasznlatra tett minden ksrlet a 8086-os
virtulis felgyelprogramot fogja meghvni. A felgyelprogram elemzi
ezeket a hvsokat s emullja ket.
3.11.9.1. Privilgiumszint
A 8086-os virtulis mdban fut programok privilgiumszintje 3
(felhasznli md), mely megakadlyozza a privilegizlt utastsok
vgrehajtst. A privilegizlt utastsok a kvetkezk:
LIDT utasts
LGDT utasts
LMSW utasts
A MOV utastsnak a vezrl- s debugregiszterek feltltsre s
elmentsre szolgl specilis alakjai.
CLTS utasts
HLT utasts
INVD utasts
WBINVD utasts
INVLPG utasts
ltalnos CPU programozsi informcik
298
RDMSR utasts
WRMSR utasts
RSM utasts
A 8086-os virtulis mdba csak vdett mdbl lehet belpni, gy
ennek nincs szksge ezeknek az utastsoknak a vgrehajtsra. Mg a
8086-os virtulis zemmdban nem, addig vals zemmdban ezek az
utastsok vgrehajthatk.
3.11.9.2. A busz lezrsa
A 286 processzor a buszlezr funkcit a 386, 486 s Pentium
processzoroktl eltr mdon implementlja. Ez a tny a 8086 programok
szmra attl fggen lehet szrevehet vagy sem, hogy a 8086-os
virtulis felgyelprogram a LOCK prefixet hogyan kezeli. Az LOCK
prefix-szel elltott utastsok rzkenyek az IOPL-re, a software-tervezk
tetszs szerint emullhatjk ket. Ezrt ha a 8086 programoknak a LOCK
kzvetlen vgrehajtsa engedlyezve van, a memria lezrsnak a 8086
processzorra jellemz mdjt hasznl programok a Pentium s ms 32
bites processzorokon lehet, hogy nem fognak megfelelen futni.
A LOCK prefix s az ltala vezrelt buszjel kizrlag annak
megelzsre hasznlhat, hogy ms buszvezrlk az adattviteli
mveletet megszaktsk. A LOCK prefix csak a memrit mdost,
kvetkez Pentium utastsokkal hasznlhat. A LOCK brmilyen ms
utastssal (vagy az albbiakban felsoroltakkal abban az esetben, ha azok
nem a memrit mdostjk, pldul ha a cloperandus egy regiszter) val
hasznlata rvnytelen-opkd kivtelt eredmnyez.
Bitteszt s -vltoztats: a BTS, BTR s BTC utastsok.
Csere: az XCHG, XADD, CMPXCHG s CMPXCHG8B
utastsok (az XCHG esetben nincs szksg a LOCK prefixre).
Egyoperandus aritmetikai s logikai: INC, DEC, NOT s NEG
utastsok.
8086-os virtulis zemmd
299
Ktoperandus aritmetikai s logikai: ADD, ADC, SUB, SBB,
AND, OR s XOR utastsok.
A lezrt utastsok garantltan csak a cloperandus ltal megadott
memriarszt zrjk le, egyes esetekben azonban nagyobb rszeket is
lezrhatnak.
A 8086 s 286 processzoroktl eltren a Pentium processzor
vlaszol a buszvezrls tvevsre irnyul, ms lehetsges
buszvezrlktl (pldul DMA kontrollertl) rkez krsekre egy olyan
nem illeszked operandus rszeinek tvitele esetn, mint pldul egy
dupla szt kpez kt sz.
3.11.10. Klnbsgek a 386 s 486 CPU-hoz kpest
A vals zemmd az Intel386, Intel486 s Pentium
processzorokon ugyangy viselkedik. Amikor a virtulis md
kiterjeszts le van tiltva (a CR4 VME bitjnek rtke 0), akkor a Pentium
processzor 8086-os virtulis zemmdjnak viselkedse a 386 s 486
processzorokvel megegyez. A virtulis md kiterjeszts
engedlyezsvel (a CR4 VME bitjnek rtke 1) a Pentium processzor
8086-os virtulis zemmdjnak teljestmnye jelents mrtkben megn.
E kiterjesztsekkel kapcsolatos informcik a fggelkben tallhatk. A
maximlis teljestmny elrse rdekben a Pentium processzorra portlt
programok engedlyezett cache-el kell fussanak.
ltalnos CPU programozsi informcik
300
bra- s pldajegyzk
1.1. bra: A Pentium processzor blokkvzlata.............................. 12
1.2. bra: Az INTEGER egysg.................................................... 13
1.3. bra: A PIPELINE-ok bels felptsnek blokkvzlata ....... 14
1.4. bra: Cache-vonal llapotai a MESI protokoll szerint ........... 16
1.5. bra: Az FPU pipeline-ja........................................................ 19
1.6. bra: Cache kezelsi modellek............................................... 20
1.7. bra: DRAM iddiagramok.................................................... 21
1.8. bra: Az M1- es s a Pentium processzorok pipelinejainak
sszehasonltsa ........................................................... 24
1.9. bra: Az M1-es definilatlan CACHE-e brmilyen
arnyban tartalmazhat adatot s utastst. Az
utastsvonal CACHE pedig az INTEGER egysg
ltal leginkbb hasznlt utastsokat trolja................. 27
1.10. bra: Az M1-es processzor szuperpipeline-okbl
felptett INTEGER egysge........................................ 29
1.11. bra: Kiugrs a vgrehajtsi sorrendbl. Az M1-es
processzorban az egyik pipeline vgrehajtsi
sorban lv utastsnak nem kell megvrnia a
msik pipeline lassbb utastst. Kiugorva a
vgrehajtsi sorbl, idt lehet megtakartani a
vrehajts sor................................................................ 30
1.12. bra: Nx586 alap IBM PC kompatibilis szmtgp
felptse NxVL vagy NxPCI rendszerinterface chip
felhasznlsval. A matematikai processzor kln
tokban helyezkedik el, mg a msodszint cache
vezrlje a processzorlapkn kapott helyet.................. 32
1.13. bra: A NexGen szabadalmaztatott RISC86-os
architektrja dinamikusan fordtja az sszetett
X86-os (CISC) utastsokatRISC86-os utastsokk,
gy teht kihasznlhatja a RISC utastsok sebessgi
elnyeit. ........................................................................ 34
3.1. bra: Szegmentlt cmzs....................................................... 64
3.2. bra: Alkalmazsok szmra elrhet regiszterkszlet .......... 66
3.3. bra: Szegmentlt memria.................................................... 68
3.4. bra: A verem mkdse........................................................ 71
3.5. bra: Az EFLAGS regiszter ................................................... 72
bra- s pldajegyzk
301
3.6. bra: llapotbitek................................................................... 73
3.7. bra: A vezrl regiszterek felptse .................................... 78
3.8. bra: Nyomkvet regiszterek ............................................... 83
3.9. bra: Az EDX regiszter tartalma reszetels utn.................... 87
3.10. bra: A CR0 regiszter tartalma reszetels utn .................... 88
3.11. bra: A processzor llapota a reszetelst kveten.............. 90
3.12. bra: A processzor llapota a reszetet kveten .................. 100
3.13. bra: Az algoritmus s a forrsszveg ezzel kapcsolatos
sorainak szma ............................................................. 101
3.14. bra: A BLD s az ASM forrsllomny kzti
sszefggs .................................................................. 104
3-1 plda: STARTUP.ASM.......................................................... 104
3-2 plda: MAIN.ASM................................................................. 113
3.15. bra: A TEMP_GDT ltrehozsa s a vdett mdba val
tkapcsols (a forrsszveg 162-172 sorai) ................. 115
3.16. bra: A GDT, IDT s TSS ROM-bl RAM-ba msolsa
(a forrsszveg 196-261 sorai)..................................... 115
3.17. bra: tkapcsols a taszkra (a forrsszveg 282 296
sorai)............................................................................. 116
3-3 plda: Az alkalmazs lefordtsra s felptsre szolgl
parancskteg-llomny ................................................ 117
3-4 plda: Build-llomny............................................................. 117
3.18. bra: Cmek lefordtsa ........................................................ 120
3.19. bra: Kivtelek s megszaktsok ........................................ 123
3.20. bra: Memria kezel regiszterek........................................ 125
3.21. bra: Sk modell ................................................................... 132
3.22. bra: Vdett sk modell ........................................................ 134
3.23. bra: Multiszegmens modell ................................................ 135
3.24. bra: TI BIT - A deszkriptor tbla kivlasztsa ................... 137
3.25. bra: Szegmens fordts ....................................................... 138
3.26. bra: Szegmens regiszterek.................................................. 139
3.27. bra: Szegmens szelektor ..................................................... 140
3.28. bra: Szegmens deszkriptorok.............................................. 142
3.29. bra: Alkalmazsi szegmens tpusok ................................... 145
3.30. bra: Szegmens deszkriptor (a szegmens nincs jelen) ......... 148
3.31. bra: Deszkriptor tblzatok ................................................ 149
3.32. bra: Pszeud deszkriptor formtum.................................... 150
3.33. bra: A lineris cm formtuma............................................ 152
ltalnos CPU programozsi informcik
302
3.34. bra: Lapfordts .................................................................. 153
3.35. bra: A lapcmtr formtuma s a laptblzatok elemei a
4K-s lapokhoz. ............................................................. 154
3.36. bra: Laptblzat bejegyzs formtuma nem jelenlv
lapoknl ........................................................................ 155
3.37. bra: Kombinlt szegmens- s lapcm fordts .................... 160
3.38. bra: minden egyes szegmensnek biztostani kell sajt
laptblzatot ................................................................. 161
3.40. bra: Rendszer szegmens- s kapu tpusok .......................... 164
3.39. bra: Vdett mdban hasznlt deszkriptor mezk ............... 166
3.41. bra: Vdelmi gyrk........................................................... 171
3.42. bra: Privilgium ellenrzs adathozzfrseknl ............... 172
3.43. bra: Privilgium ellenrzs taszkkapu nlkli
vezrlstadsoknl...................................................... 175
3.44. bra: Call kapu ..................................................................... 177
3.45. bra: A call kapu mechanizmusa.......................................... 178
3.46. bra: Privilgium ellenrzs call kapuval trtn
vezrlstadsnl.......................................................... 180
3.47. bra: Kezdeti stack pointerek egy TSS-ben ......................... 182
3.48. bra: Stack keret szintek kztti hvs alatt ......................... 184
3.49. bra: Szintek kztti visszatrs ellenrzs ......................... 187
3.50. bra: rvnyes deszzkriptor tpusok LSL mveletekhez..... 191
3.51. bra: Egy laptblzat bejegyzs vdelmi mezi................... 195
3.52. bra: Kombinlt lapcmtr s laptblzat vdelem.............. 198
3.53. bra: 32 bites taszk llapot szegmens................................... 203
3.54. bra: TSS Deszkriptor .......................................................... 204
3.55. bra: Taszk regiszter ............................................................ 207
3.56. bra: Taszk kapudeszkriptor ................................................ 208
3.57. bra: Taszkokra jellemz taszk kapuk ................................. 209
3.58. bra: Taszkvlts alatti ellenrzs........................................ 213
3.59. bra: Begyazott taszkok...................................................... 215
3.60. bra: A taszkvltsok hatsa a Busy, NT s LINK
mezkre ........................................................................ 216
3.61 bra: Lineris tfeds a fizikai memriban ......................... 221
3.62. bra: Kivtelek s megszaktsvektorok.............................. 224
3.63. bra: Kivtelek s megszaktsok egyms kztti
prioritsa....................................................................... 229
bra- s pldajegyzk
303
3.64. bra: IDT lokalizlsa a memriban az IDTR
segtsgvel .................................................................. 230
3.65. bra: IDT kapudeszkriptor ................................................... 232
3.66. bra: Megszakts procedura hvs ...................................... 234
3.67. bra: Verem keret egy megszakts vagy kivtel utn......... 235
3.68. bra: Megszakts taszkkapcsols........................................ 238
3.69. bra: Hibakd....................................................................... 240
3.70. bra: Megszakts s kivtel osztlyok ................................ 244
3.71. bra: Dupla hiba viszonyok.................................................. 245
3.72. bra: rvnytelen TSS llapotok.......................................... 247
3.73. bra: Laphiba hibakdok...................................................... 253
3.74. bra: Adattpusok ltal ignyelt illeszkedsi felttelek........ 260
3.75. bra: Kivtelek sszefoglalsa ............................................. 262
3.75. bra: Hibakdok sszefoglalsa........................................... 263
3.76. bra: Az zemmd-llapotok kzti tmenetek..................... 266
3.77 bra: Az SMM kezdeti llapota............................................. 267
3.78. bra: Az llapottrol formtuma ........................................ 270
3.79. bra: llapot-beoszts.......................................................... 271
3.80. bra: SMM revzi-azonost............................................... 271
3.81. bra: SMM revzi-azonost tblzat ................................. 272
3.82. bra: Felfggesztett llapotbl val automatikus
jraindts..................................................................... 273
3.83. bra: Belps a 8086-os virtulis zemmdba s az abbl
val kilps................................................................... 280
3.84. bra: A 0. privilgiumszint verem llapota 8086-os
virtulis mdban, a megszaktst kveten.................. 281
3. 85. bra: A software-megszakts mveletei ............................ 287
ltalnos CPU programozsi informcik
304
Elzetes a msodik ktet tartalmbl
Cmzsmdok - amit, s amivel cmezhetnk
FPU - felpts, szerkezet
- veremkezels
- mkds, kivtelek
- adatformtumok, pontossg
- prhuzamos kezels
Optimalizci - hogy a programjaink jobbak legyenek
I/O kezels - portkezelsi lehetsgek
Trace, debug - a hibk feldertse
Lehetsgek - az tdik genercis processzorok ltal nyjtott
tovbbi lehetsgek
Utastskszlet - A Pentium processzor teljes utastskszlete
Fggelkek - A P54 Pentium processzor rszletesebb blokkvzlata
s egyb adatai
- A PowerPC 601, 603, 604 processzorok
blokkvzlatai, s egyb adataik
Products mentioned in this book are mentioned for
identification purposes only. Product names appearing in
this book may or may not be registered trade marks or
copyrights of their respective companies.