6. Перемикання задач в 32-розрядному МП

У багатозадачних системах і систе­мах з великою кількістю користувачів МП виконує деяку частину команд однієї задачі (програм), після цього перемикається на виконання іншої задачі і так триває доти, доки знову не повертається до першої задачі. Для підтримки ба-гатозадачного режиму в МП є такі засоби:

•  сегмент стану задачі TSS;

•  дескриптор сегмента стану задачі;

•  регістр задачі TR;

•  вентиль задачі.

Дескриптор сегмента стану задачі вказує на сегмент, що містить повний стан задачі, а вентиль задачі містить селектор, що вказує на дескриптор TSS. Регістр TR є селектором сегмента TSS поточної задачі. Кожна задача має свій сегмент стану. В сегменті TSS міститься інформація про стан проце­сора на час перемикання задач — вміст майже всіх регістрів МП, включаючи регістр прапорців, роздільні покажчики стеків для рівнів привілеїв 0, 1, 2 і посилання на селектор TSS задачі, що її викликала.

Перемикання задач здійснюється або за командами міжсег-ментних переходів JMP FAR чи викликів підпрограм CALL FAR, або за апаратними чи програмними перериваннями і винятками. У першому випадку програма має посилатися на сегмент стану задачі TSS або на дескриптори вентиля задачі в GDT(LDT), у другому — відповідний перериванню дес­криптор в таблиці переривань IDT має бути дескриптором вентиля задачі.

Під час передавання керування викликаній задачі за коман­дою IRET перевіряється прапорець вкладеної задачі NT (Nested Task). Якщо NT = 0, команда IRET працює у зви­чайному режимі, залишаючись у поточній задачі. Якщо NT = 1, команда IRET виконує перемикання на попередню задачу.

Рисунок 8 - Структурна схема 32-розрядного процесора Pentium