Segment de stare a sarcinii
Un segment de stare de activitate ( TSS ) este o structură specifică a procesoarelor familiei x86 în care este stocat contextul unui proces . Descriptorul său se găsește în Tabelul descriptorului global (GDT).
Ca segmente , segmentele de stare sunt menționate de descriptorul de segment al stării activității (TSSD) situat în GDT .
Structura unui TSS
TSS conține diferite tipuri de informații:
- Registrele generale EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI
- Registrele CS, ES, SS, DS, FS, GS
- Registrul EFLAGS
- Registrul EIP
- Registrul CR3
- Registrul LDTR
- Selectorele TSS ale procesului care a fost rulat anterior
- Adresa de bază a hărții I / O și harta I / O
- Indicatoarele stivei de niveluri de privilegii 0,1,2
decalaj | 31-16 | 15-0 |
---|---|---|
0x64 | Compensarea IOPB | Rezervat |
0x60 | Rezervat | LDTR |
0x5C | Rezervat | GS |
0x58 | Rezervat | FS |
0x54 | Rezervat | DS |
0x50 | Rezervat | SS |
0x4C | Rezervat | CS |
0x48 | Rezervat | ES |
0x44 | ȘI DE | |
0x40 | EI BINE, DA | |
0x3C | EBP | |
0x38 | ESP | |
0x34 | EBX | |
0x30 | EDX | |
0x2C | ECX | |
0x28 | EAX | |
0x24 | EFLAGS | |
0x20 | EIP | |
0x1C | CR3 | |
0x18 | Rezervat | SS2 |
0x14 | ESP2 | |
0x0C | Rezervat | SS1 |
0x10 | ESP1 | |
0x08 | Rezervat | SS0 |
0x04 | ESP0 | |
0x00 | Rezervat | LEGĂTURĂ |
Utilizare
Linux
Sub Linux , la fiecare comutare de context , nucleul (datorită macro-ului "SWITCH_TO") actualizează TSS cu informațiile (registre generale, EIP, EFLAGS etc.) ale noului proces.
TSS este folosit printre altele de către nucleu pentru a reveni dintr-un apel de sistem sau pentru a gestiona excepția „dublă eroare” ( procesorul , neputând să se bazeze pe registrele sale, folosește TSS).
TSS în arhitectura x86-64
Arhitectura x86-64 nu acceptă comutarea contextului hardware, totuși TSS poate fi încă utilizat pe o mașină folosind modul pe 64 de biți. În acest mod, TSS este utilizat pentru a stoca:
- Indicatorul stivei pentru fiecare nivel de privilegiu.
- Adresa indicatorului către tabelul de stivă de întrerupere
- Decalarea bitmap-ului permisiuni IO
Registrul de sarcini este extins pentru a conține adrese pe 64 de biți.
linkuri externe
- ( RO ) Intel Architecture Software Intel® 64 și IA-32 Architectures Software Developer's Manual Volumele combinate: 1, 2A, 2B, 2C, 3A, 3B și 3C ( PDF ), la download.intel.com .