Princip víceúlohového zpracování, přepínání úloh
Víceúlohové zpracování je možné až od procesoru I80286. Jde o více spuštěných programů, ze kterých vždy běží jen jeden, ostatní jsou ovšem spustitelné přepnutím úlohy. Přepínání se provádí hardwarové, procesor ho má plně ve své režii, to proto, aby nebylo zapotřebí speciálních instrukcí. Přepínání úloh umožňuje chráněný režim, který je proto uzpůsoben (TSS, GDT, LDT, TR a systém ochran)
Princip:
Přepnutí úlohy prakticky znamená přechod do jiného adresového prostoru, který má svou LDT. Musíme to tedy realizovat bezpečně. K tomuto účelu nám slouží segment TSS, tzv. segment stavu úlohy, má 44 bajtů a patří ke každému procesu. Do tohoto segmentu, jehož adresa je v TR, se uloží všechny registry procesoru a potřebné informace ze současného stavu procesoru. TR se naplní selektorem deskriptoru TTS nového procesu z task gate, procesor pak naplní všechny své registry obsahem nového TSS a předá řízení novému procesu. Do TSS se ukládají tyto informace: 1 zpětný ukazatel, 6 ukazatelů zásobníku (3x SS:SP), 14 registrů, 1 selektor LDT. TSS není programově přístupný neboť je v systémovém segmentu.
Ukazatel na segment TSS je uložen v registru TR, který je složen ze dvou částí:
viditelná část neviditelná část
Selektor, 16b | P.p, 8b | Báze, 24b | Limit TSS, 16b |
Pozn.: Z deskriptoru systémového segmentu, resp. z jeho slabiky P.p, se dovíme, zda ukazuje na TSS aktivního procesu nebo na TSS neaktivního procesu.
Brána zpřístupňující TSS, task gate může být umístěna v GDT nebo LDT a vypadá takto:
0 | 0 | P.p. | 0 | Selektor deskriptoru TSS | 0 | 0 |