| 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 == | ||
| − | {| | + | <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 == | ||
| − | {| | + | <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''' || ''' 0 - 7 ''' | |
| − | |||
|- | |- | ||
|Basisadresse 31-24 | |Basisadresse 31-24 | ||
| Zeile 79: | Zeile 81: | ||
|} | |} | ||
| − | {| | + | {| {{prettytable}} |
|+ Task State Segment Deskriptor (BITs) Teil 2 | |+ Task State Segment Deskriptor (BITs) Teil 2 | ||
|- | |- | ||
| − | + | ! '''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 | + | 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 | + | |
| − | Tasks sind nicht redundant. Das heißt sie dürfen sich nicht selbst aufrufen. Dies wird mit dem Busy Flag | + | [[Kategorie:Glossar]] |
| − | verhindert. | ||