Task State Segment — Änderungen 3221 → 4830

Zeile 1: Zeile 1:
−
Das Task State Segment (kurz TSS) wird von der CPU benötigt um bei einen Ringwechsel den richtigen [[Stack]] zu laden. Man kann das TSS auch benutzen um Hardware-[[Multitasking]] zu realisieren. Dafür wird der TSS-Deskriptor mit einem Longjump angesprungen. Dabei werden auch andere Register (wie EIP) geladen. Um ein TSS für den Ringwechsel benutzen zu können, muss es vorher mit ''ltr <Selektor>'' geladen werden.
+
Das '''Task State Segment''' (kurz TSS) wird von der CPU benötigt, um bei einen Ringwechsel den richtigen [[Stack]] zu laden. Man kann das TSS auch benutzen, um Hardware-[[Multitasking]] zu realisieren. Dafür wird der TSS-Deskriptor mit einem Longjump angesprungen. Dabei werden auch andere Register (wie EIP) geladen. Um ein TSS für den Ringwechsel benutzen zu können, muss es vorher mit ''ltr <Selektor>'' geladen werden.
  
 
== Aufbau - Task State Segment ==
 
== Aufbau - Task State Segment ==
  
−
{| border="1" align="center" cellpadding="5" cellspacing="0"
+
<center>
 +
{| {{prettytable}}
 
! Offset || 31-16                || 0-15
 
! Offset || 31-16                || 0-15
 
|-
 
|-
Zeile 58: Zeile 59:
 
| 0x64  || I/O Map Base Address ||
 
| 0x64  || I/O Map Base Address ||
 
|}
 
|}
 +
</center>
  
 
== Aufbau - TSS-Deskriptor ==
 
== Aufbau - TSS-Deskriptor ==
  
−
{|border="1" align="center" cellpadding="5" cellspacing="0"
+
<center>
 +
{| {{prettytable}}
 
|+ Task State Segment Deskriptor (BITs) Teil 1
 
|+ Task State Segment Deskriptor (BITs) Teil 1
 
|-
 
|-
−
| ''' 31 - 24''' || '''23''' || '''21 - 22''' || '''20''' || '''19 - 16''' || '''15''' || '''13 - 14''' || '''12''' || ''' 11 - 8'''
+
! ''' 31 - 24''' || '''23''' || '''21 - 22''' || '''20''' || '''19 - 16''' || '''15''' || '''13 - 14''' || '''12''' || ''' 11 - 8''' || ''' 0 - 7 '''
−
|| ''' 0 - 7 '''
 
 
|-
 
|-
 
|Basisadresse 31-24
 
|Basisadresse 31-24
Zeile 79: Zeile 81:
 
|}
 
|}
  
−
{|border="1" align="center" cellpadding="5" cellspacing="0"
+
{| {{prettytable}}
 
|+ Task State Segment Deskriptor (BITs) Teil 2
 
|+ Task State Segment Deskriptor (BITs) Teil 2
 
|-
 
|-
−
| '''31 - 24''' || '''16 - 0'''
+
! '''31 - 24''' || '''16 - 0'''
 
|-
 
|-
 
|Basisadresse 15 - 0
 
|Basisadresse 15 - 0
 
|Größe 15 - 0
 
|Größe 15 - 0
 
|}
 
|}
 +
</center>
  
 
===Type = Deskriptor Typ===
 
===Type = Deskriptor Typ===
−
Hier muß als Wert 1001b eingetragen werden. Die hintere Null wird zusätzlich als Busy-Flag verwendet.
+
Hier muss als Wert 1001b eingetragen werden. Die hintere Null wird zusätzlich als Busy-Flag verwendet. Dies wird auf 1 gesetzt, sobald der Task in das System geladen ist und gestartet wurde. Tasks sind nicht redundant. Das heißt, sie dürfen sich nicht selbst aufrufen. Dies wird mit dem Busy-Flag verhindert.
−
Dies wir auf 1 gesetzt, sobald der Task in das System geladen ist und gestartet wurde.
+
 
−
Tasks sind nicht redundant. Das heißt sie dürfen sich nicht selbst aufrufen. Dies wird mit dem Busy Flag
+
[[Kategorie:Glossar]]
−
verhindert.