TSS

TSS (англ. Task State Segment — сегмент состояния задачи) — специальная структура в архитектуре x86, содержащая информацию о задаче (процессе). Может использоваться ОС для диспетчеризации задач, но обычно (например в Linux[1]) применяется только для переключения на стек ядра при обработке прерываний и исключений. В TSS содержится информация о:

Расположение TSS

Может находиться где угодно в памяти. Специальный сегментный регистр (Регистр Задачи — TR) содержит селектор сегмента, который указывает на действительный сегментный дескриптор TSS, постоянно хранящийся в GDT (может не храниться в LDT). Для использования TSS ядро ОС должно выполнить следующие шаги:

  • Создать дескриптор TSS в глобальной таблице дескрипторов;
  • Загрузить регистр процесса (TR) с селектором сегмента для этого сегмента;
  • При необходимости добавить информацию в TSS в памяти.

В целях безопасности TSS должен быть расположен в области памяти, доступной только для ядра.

Регистр задачи TR

TR — 16-битный регистр, содержащий селектор сегмента для TSS. Может быть загружен через инструкцию LTR. Состоит из двух частей: одна из них видима и доступна программисту, а другая, не видимая часть, автоматически подгружается из дескриптора TSS.

Примечания

  1. Understanding the Linux Kernel, 3rd Ed. Daniel P. Bovet; 2005 "3.3.2. Task State Segment": "Although Linux doesn't use hardware context switches, it is nonetheless forced to set up a TSS for each distinct CPU in the system.... 80×86 CPU switches from User Mode to Kernel Mode, it fetches the address of the Kernel Mode stack from the TSS."

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.