Архітектура 32-розрядних мікропроцесорів
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