1 101 0
S kod - A
wykonanie i odczyt
y nieprawidłowości
02 00 Status F6: 1 11
GD AVL P DPL
więc pp ustawia w deskryptorze bit A -segment użyty
Dla kodu bit D=1
- 32/8-bitowe argumenty (można zmienić na przeczone tj. 16/8-bitowe przedrostkiem
rozmiaru argumentu FF66)
- 32-bitowe przemieszczenie (można zmienić na przeciwne tj. 16-bitowe przedrostkiem
rozmiaru adresu FF67).
Zadania użytkownika wykonuje się na najbardziej zewnętrznym, trzecim poziomie uprzywilejowania. Wielkość bieżąca CPL określa pole DPL z segmentu kodu. Dla segmentu stosu wymaga się aby w zadaniu jego poziom uprzywilejowania (DPL z segmentem stosu) był zawsze równy CPL (własny stos).
W TSS wartości CS-ESP ładowane do pp definiują stos 3-go poziomu uprzywilejowania właściwy CPL zadania. Ponieważ zadanie może korzystać z procedur na swoim i wewnętrznym (bardziej uprzywilejowanych poziomach) więc aby zachować zgodność z CPL należy „przełączyć” go na poziom bieżący. Dlatego też TSS zawiera parametry stosów poziomu 2, 1 i 0 (w postaci Ssi - ESPi). Dokładniej mechanizm przełączania stosu będzie wyjaśniony przy okazji obsługi wyjątku przez procedurę systemową pracującą na poziomie 0 (najbardziej wewnętrznym).
Ponieważ TSS nie określa segmentów danych więc umieszczono tam tzw. selektory zerowe. Odpowiadający mu deskryptor może mieć wartość dowolną (tu: 0...0). Następuje ustawienie bitu P=0 w ukrytych rejestrach skojarzonych z rejestrami DS., ES, FS, GS - pp wykonuje także rutynowe, nie mające znaczenia operacje na pierwszym deskryptorze z GDT.
LOCK |
RDś |
00000C04 |
00000000 |
LOCK |
WR, |
i C04 |
-----oooo |
LOCK |
C04 |
00000000 | |
LOCK |
WR, |
1 C04 |
-----oooo |
LOCK |
RD' |
C04 |
00000000 |
LOCK |
WR, |
1 C04 |
-----oooo |
LOCK |
RD') |
C04 |
00000000 |
LOCK |
WR, |
i 00000C04 |
-----oooo |
Jeśli zajdzie potrzeba to pp odczyta z TSS Ssi - ESPi. Podobnie jest przy dostępie do układów we-wy (64-kbajtowa przestrzeń we-wy nie podlega mechanizmowi segmentacji i oczywiście stronicowaniu) TSS może zawierać bitową mapę każdego układu we-wy z 216-kbajtowej przestrzeni. Mapa taka zawiera maksymalnie 216:23-213 - 8-kbajtów. Jeśli wystąpią instrukcje IN, OUT, INS, OUTS to pp odczytuje przesunięcie mapy bitów, potem 2 bajty z odpowiednim bitem mapy (lub bitami przy przesłaniach 2 lub 4-bajtowych - 2 2 lub 4 kolejne adresy z przestrzeni we-wy). Wartość bitu mapy oznacza
0 - dostęp zawsze
1 - dostęp dozwolony jeśli IOPL >CPL (IOPL - 2-bitowe pole w rejestrze EFLAGS)