Po sprawdzeniu poprawności deskryptora pp, na czas operacji przełączania zadań, oznacza go jako zajęty. Blokada zwolnienia magistrali jest dalej utrzymywana.
LOCK WR C94 ------EB00
-atrybuty: E8: 1 11 0 1011
P DPL zajęty TSS
Podczas operacji na deskryptorze pp nie reaguje na zadanie zwolnienia magistrali (linią HOŁD) aby w systemie wieloprocesorowym tylko jeden pp mógł, w tym przypadku, oznaczyć TSS jako zajęty chroniąc go przed wykorzystaniem ze strony innego mikroprocesora.
Identyczne operacje są wykonywane odnośnie deskryptora TSS zadania wznawianego
LOCK |
RD |
00000 COC |
0000E9001 |
_ Adres bazowy 9000, atrybuty jak |
LOCK |
RD |
COS |
90000100J |
poprzednio, wielkość 100 |
LOCK |
WR |
COC |
-----EB00 |
- pp oznacza TSS jako zajęty |
Powyżej opisane „zajęcie” TSSów było możliwe ponieważ pp nie stwierdził wyjątków (błędów). W przypadku gdy pole segment w instrukcji SMP zawiera selektor wskazujący wprost na TSS (a nie pośrednio przez deskiyptor systemowy bramy zadania) to dla pól poziomów uprzywilejowania:
CPL - bieżący ( zerowy, bo w trybie rzeczywistym pp musi mieć dostęp do wszystkich instrukcji)
RPL - 00 (bo selektor w instrukcji SMP 0008: 0000 0000 00001 0 00)
DPL-11 ^tablica
globalna
Obowiązują testy jak dla danych (TSS jest strukturą danych) DPL >CPL, DPL >RPL tj.3 >0. 3 >0
Ponieważ zadania zostają przełączone całkowicie niezależnie od siebie to nie obowiązuje reguła korzystania w nowym zadaniu z poziomu identycznego lub bardziej uprzywilejowanego. (Tak będzie gdy przełączenia zadań dokonuje rozkaz dalekiego wywołania CALL i zadanie wznawiane jest jakby podprogramem zadania zawieszonego) Dla rozważanego przykładu, gdy przełączania zadań dokonuje instrukcja dalekiego skoku JMP, nowy bieżący CPL zostanie przejęty z deskryptora kodu rozpoczynanego zadania.
Teraz pp zapisuje swój stan do TSS0. Zapisywane są stany rejestrów które mogą ulec zmianie w trakcie realizacji zadania. Dlatego też pp nie zachowuje danych niezmienniczych zadania. Dotyczy to zawartości:
- LGT (selektor lokalnej tablicy deskryptoró)
- CR3 (położenie katalogu tablic translacji przy włączonym stronicowaniu) (stronicowanie dzieli wszystkie segmenty na 4kbajtowe bloki w celu ułatwienia operacji wymiany danych pamięć operacyjna - dyski i w celu lepszego wykorzystania pojemności dysku)
Oprócz LGT i CR3 pp nie zapisuje danych które jeśli zachodzi taka potrzeba, odczytuje za każdym razem ze swojego TSSa. Dotyczy to położeń stosów poziomów 0, 1 i 2 (w konwencji selektor - przesunięcie tj. SSi - ESPi), są one wykorzystywane gdy w trakcie realizacji zadania zostanie zgłoszony wyjątek wewnętrzny (błąd) lub zostanie zgłoszone przerwanie,