Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Сборка Часть2 / АВМиС / Лекции / Сегмент состояния задачи

.doc
Скачиваний:
38
Добавлен:
15.09.2014
Размер:
67.58 Кб
Скачать

Сегмент состояния задачи

Состояние процессора, необходимое для восстановления задачи, хранится в системном сегменте, называемом сегментом состояния задачи (Task State Segment - TSS).

Формат 32-битного TSS

Формат 16-битного TSS

31

15

0

 

15

0

Адрес карты вв-выв

  T

100

 

Селектор LDT

42

 

Селектор LDT

96

 

DS

40

 

GS

92

 

SS

38

 

FS

88

 

CS

36

 

DS

84

 

ES

34

 

SS

80

 

DI

32

 

CS

76

 

SI

30

 

ES

72

 

BP

28

EDI

68

 

SP

26

ESI

64

 

BX

24

EBP

60

 

DX

22

ESP

56

 

CX

20

EBX

52

 

AX

18

EDX

48

 

FLAGS

16

ECX

44

 

IP

14

EAX

40

 

SS2

12

EFLAGS

36

 

SP2

10

EIP

32

 

SS1

8

CR3 (PDBR)

28

 

SP1

6

 

SS2

24

 

SS0

4

ESP2

20

 

SP0

2

 

SS1

16

 

Связь TSS

0

ESP1

12

 

SS0

8

 

  - резерв

ESP0

4

 

Связь TSS

0

Назначение специальных полей:

  • Связь TSS (Link TSS) - содержит селектор TSS предыдущей задачи (обновляется при вызове новой задачи или обработчика исключения/прерывания в новой задаче). Это поле обеспечивает обратное переключение по команде IRET.

  • Флаг отладки (Debug Trap flag - T) - если выставлен, при переключении на задачу вызывается особый случай отладки.

  • Базовый адрес карты ввода-вывода (I/O Permission Map Base Address) - содержит 16-битное смещение двоичной карты разрешения ввода-вывода от начала TSS. Эта карта используется в случае выполнения операции ввода-вывода, когда IOPL<CPL или задача находится в состоянии VM86. Если бит соответствующий запрашиваемому порту равен 0, операция ввода-вывода проходит успешно, в противном случае генерируется нарушение общей защиты.

Сегмент состояния задачи содержит динамические (обновляемые) и статические (необновляемые) поля. К динамическим относятся поля, соответствующие регистрам общего назначения, сегментным регистрам, регистру флагов, указателю команд EIP, и поле "Связь TSS". Динамические поля автоматически обновляются процессором при сохранении контекста задачи во время переключения на другую задачу. К статическим относятся все остальные поля: селектор LDT, адрес каталога таблиц (PDBR), указатели привилегированных стеков (SS0:SP0, SS1:SP1, SS2:SP2), флаг отладки (T) и базовый адрес карты разрешения ввода-вывода (I/O Permission Map Base Address). Статические поля заполняются системным ПО при создании задачи (при создании TSS) и не изменяются процессором при переключении задач.

Дескриптор TSS должен находиться в GDT. Процессор генерирует нарушение общей защиты при попытке переключиться на задачу, селектор TSS которой содержит бит TI=1. Для запущенной в данный момент задачи (или приостановленной) дескриптор TSS имеет тип "занятый TSS" (S=0, типы 3 и 11). Процессор не поддерживает рекурсию задач, поэтому попытка переключения задач при помощи селектора "занятого TSS" вызывает исключение.