Zamiast tego up musi sięgnąć do tablicy wyjątków i przerwań. Jej położenie wskazuje rejestr IDTR. Tablica ta zawiera oczywiście deskryptory i to deskryptory systemowe. Mogą to być wyłącznie deskryptory
1. bramy przerwania
2. bramy pułapki
3. bramy zadania
Analizując ich format stwierdzamy, że zawierają one następny selektor i przemieszczenie (jest ono ignorowane w przypadku bramy zadania). Selektor wskazuje: dla 1. i 2. deskryptor segmentu kodu
- dla 3. deskryptor TSS
Deskryptor segmentu kodu określa tylko skąd rozpoczyna się procedura i jej limit. Natomiast przesunięcie w bramach przerwania i pułapki precyzuje „mniejsze wejścia” do tej procedury (tj. przesunięcie względem jej początku). W przypadku bramy zadania selektor w jej deskryptorze wskazuje na kolejny deskryptor. Jest to oczywiście deskryptor segmentu stanu zadania (TSS). Ponieważ w przypadku przerwania i pułapki (stanu wyjątkowego wewnętrznego) selektora nie podaje rozkaz (tak jak poprzednio instmkcja JMP międzysegmentowego) dlatego musi on się znaleźć w skojarzonym z danym przerwaniem czy stanem wyjątkowym deskryptorze w tablicy IDT. Przerwanie zewnętrzne numer pozycji z IDT podają oczywiście w drugim cyklu INTA (poprzez bity 0-7 szyny danych), natomiast różne wewnętrzne stany wyjątkowe mają przypisane sobie stałe miejsca w tej tablicy.
Jeśli obsługujemy przerwanie czy wewnętrzny wyjątek przez oddzielne zadanie to selektor w deskryptorze bramy zadania wskazuje na TSS skąd up załaduje stan wszystkich swoich rejestrów. Między innymi będą to rejestry EIP zawierające przesunięcie i CS z selektorem. Selektor ten dotyczy deskryptora z opisem segmentu kodu zadania. Dlatego więc w deskryptorze bramy zadania pole przesunięcie jest przez up pomijane.
W naszym przykładzie up stwierdza wewnętrzny wyjątek nr 13. Jego deskryptor rozpoczyna się od lokacji 400+D*8=468H
LOCK |
RD |
0000046C |
-fWO&i |
;F00 Atrybuty 8F: 1 00 |
0 |
1111 |
LOCK |
RD |
468 |
Looóbt selektor |
P DPLG HJOO-przesunięcie |
S |
brama pułapki |
(w deskryptorach systemowych nie występuje bit A, dlatego też nie ma cykli jego wstawiania w GDT)
tablica globalna
Selector 006B: 0000000001101 0 11
nr 13 RPLG
Na podstawie selektora (w deskryptorze bramy pułapki) odczytywany jest z GDT deskryptor segmentu kodu z procedury obsługi wyjątku.
LOCK
LOCK
rd\
RD
LOCK WRj
00000C6C -W40-9AJ C68 WoLdOe, baza^ limit7 C6C -----9B00
atrybuty 9A: 1 P
ustawienie bitu A
program obsługi
rozpocznie się od lokacji 8000+0000 (przesunięcie z deskryptora bramy pułapki)