Każde zadanie dysponuje własnym segmentem stanu zadania - TSS (jego format - patrz str. 7 danych o pp 80386). Zadania Zawieszane zapisuje w tym obszarze pamięci swój stan tj. zawartość rejestrów pp, a ładuje je z segmentu zadania inicjowanego. Każdy segment stanu zadania (TSSi) posiada swój własny opis (deskryptor) w który podaje się adres bazowy, rozmiar i atrybuty. Opisy TSSów ulokowane są w GDT (tablicy deskryptorów globalnych). Atrybut TSSa zawiera min. Wspomniany wyżej bit P, a także informację czy TSS jest wolny czy zajęty. TSS jest oznaczany jako zajęty jeśli związane z nim zadanie jest wykonywane. Natomiast podczas przełączania zadań jako zajęte są oznaczane TSS zadania zawieszonego i wznawianego.
Następujące poniżej instrukcje ustawiają początkowe wartości atrybutów w opisach TSSów. Jest to konieczne ze względu na np. przesuwanie programu w dowolnym miejscu sygnałem
Reset. RD |
4018 |
06C7E900 | |
RD |
401C |
E9000C14 | |
WR |
COC |
------E900 |
(w deskryptorze TSSI) TSSI zaczyna się od lokacji 9000 rozmiar 100 |
WR |
C14 |
------E900 |
(w deskryptorze TSS2) TSS2 zaczyna się od lokacji 9100 rozmiar 100 |
RD |
4020 |
0C1C06C7 | |
RD |
4024 |
06C78900 | |
RD |
4028 |
E9000C94 | |
WR |
C1C |
------8900 |
(w deskryptorze TSS3) TSS3 zaczyna się od lokacji 9200 rozmiar 100 |
WR |
C94 |
------E900 |
(w deskryptorze TSS0) TSS0 zaczyna się od lokacji |
9300 rozmiar 100
W dołączonych do instrukcji ćwiczenia tabelach podane są zawartości TSSów. Zostały one wprowadzone wcześniej do pamięci - pp ładuje je przeważnie jeszcze w trybie rzeczywistym. Działania te, ze względu na przejrzystość nie zawarto w programie ćwiczenia. Segment zerowy (TSS0) nie musi być ładowany. Jest to segment o znaczeniu pomocniczym. 80386 po przejściu do trybu wirtualnego składa tam swój stan (z trybu rzeczywistego) na etapie przełączania zadań. Inicjowane zostanie wtedy zadanie nrl i pp załąduje wartości początkowe swoich rejestrów z TSSI.
W polu atrybutów deskryptorów występuje 2 bitowe pole poziomu uprzywilejowania (DPL). Poziom 0 jest najbardziej uprzywilejowany (korzystają z niego procedury systemowe). Ponadto ładując rejestr segmentowy wpisujemy doń oprócz numeru deskryptora z tablicy (globalnej bądź lokalnej) także poziom uprzywilejowania RPL (też zakres 0-3). Oprócz tego każde zadanie wykonuje się na tzw. bieżącym poziomie uprzywilejowania CPL (0-3). Szczegółowe zasady praw dostępu zostaną wyjaśnione sukcesywnie w trakcie ich występowania w dalszej części programu demonstracyjnego. Generalnie należy powiedzieć że:
- procedury mogą być wywołąne z poziomu bieżącego lub wewnętrznych (tj. bardziej uprzywilejowanych)
- dostęp do danych jest na poziomie bieżącym lub zewnętrznych (mniej uprzywilej owanych)
Relacje odwrotne są niedopuszczane, bo procedury systemowe nie mogą korzystać z mniej wiarygodnych programów użytkownika, a on sam nie może ingerować np. w zmienne systemowe (lokacje w których system umieszcza informacje o aktualnej sytuacji).