Task State Segment

Uno Task state segment (TSS) è una struttura specifica dei processori della famiglia x86 dove si trova memorizzato il contesto di un processo. Il suo descrittore si trova nella Global Descriptor Table (GDT).

In quanto segmenti, i segmenti di stato sono referenziati da descrittori di stato di processo (task state segment descriptor) (TSSD) situati nella GDT.

Struttura di un TSS modifica

Il TSS contiene vari tipi di informazioni:

  • I registri generali EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI
  • I registri di segmento CS, ES, SS, DS, FS, GS
  • Il registro EFLAGS
  • Il registro EIP
  • Il registro CR3
  • Il registro LDTR
  • I selettori del TSS del processo che era precedentemente eseguito
  • L'I/O map base address e l'I/O map
  • I puntatori agli stack dei livelli di privilegio 0,1,2
offset 31-16 15-0
0x64 IOPB offset riservato
0x60 riservato LDTR
0x5C riservato GS
0x58 riservato FS
0x54 riservato DS
0x50 riservato SS
0x4C riservato CS
0x48 riservato ES
0x44 EDI
0x40 ESI
0x3C EBP
0x38 ESP
0x34 EBX
0x30 EDX
0x2C ECX
0x28 EAX
0x24 EFLAGS
0x20 EIP
0x1C CR3
0x18 riservato SS2
0x14 ESP2
0x0C riservato SS1
0x10 ESP1
0x08 riservato SS0
0x04 ESP0
0x00 riservato LINK

Utilizzo modifica

Linux modifica

Sotto Linux, a ogni commutazione di contesto, il kernel (grazie alla macro "SWITCH_TO") aggiorna il TSS con le informazioni (registri generali, EIP, EFLAGS, ecc) del nuovo processo.

Il TSS è utilizzato tra l'altro dal kernel per ritornare da una chiamata di sistema o per la gestione dell'eccezione "errore doppio" (il processore, non potendo fare affidamento sui suoi registri, usa il TSS).

TSS nell'architettura x86-64 modifica

L'architettura x86-64 non supporta il cambio di contesto hardware, tuttavia il TSS può essere ancora utilizzato in una macchina utilizzante la modalità a 64 bit. In questa modalita il TSS viene utilizzato per memorizzare:

  1. Lo stack pointer per ogni livello di privilegio.
  2. L'indirizzo del puntatore all' Interrupt Stack Table
  3. Offset della bitmap dei permessi IO

Il task register viene espanso per contenere indirizzi a 64 bit.

Collegamenti esterni modifica

  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica