Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ГЭК(вопросы и ответы).doc
Скачиваний:
13
Добавлен:
10.09.2019
Размер:
5.98 Mб
Скачать

2.36.Алгоритми та механізми переключення задач

Механизм переключения задач:

Переключение задач осуществляется межсегментными командами JMP, CALL, IRET.

JMP <селектор> <смещение>

CALL <селектор> <смещение>

1. Микропроцессор (МП) из регистра TR определяет адрес TSS текущей задачи и переписывает в TSS содержимое регистров текущей задачи (контекст задачи).

2. Для команд JMP и CALL МП берет селектор из команды, а для команды IRET – селектор из поля возврата TSS. Селектор загружается в регистр TR => текущей становится новая задача.

3. По селектору МП находит в памяти TSS новой задачи. Из TSS МП загружает регистры новым содержимым. Это называется переключением контекста задачи.

4. Поле <смещение> не используется.

5. В новой задаче устанавливается бит B(Busy)=1. Если была команда JMP или IRET, то бит В предыдущей задачи сбрасывается. При CALL – не сбрасывается (т.к. задача не может вызвать саму себя). Рекурсия запрещена, т.к. каждая задача имеет только один TSS. При рекурсии мы потеряем старое содержимое TSS. Но внутри задачи рекурсия разрешена.

6. В регистре CR0 есть бит TS (Task Switched). При любом переключении задач бит TS устанавливается в 1. Если при этом встретится программа сопроцессора, то вызывается исключение №7 (FPU недоступен). Бит TS аппаратно не сбрасывается. Поэтому каждая задача должна сама сбрасывать бит TS.

7. При выполнении команды CALL устанавливается бит NT (Nesting Task) в поле регистра флагов TSS. Если NT=1, то команда IRET выполняет действия, описанные выше. Если NT=0, то IRET выполняется обычным образом.

2.37. Сторінкова організація пам’яті. Розробка покажчиків таблиць та сторінок формування фізичної адреси для 4к-, 2м- і 4м-байтних сторінок.

В защищ режиме сегм могут иметь размер до 4 Гб, что может превышать размер физич памяти. Поэтому в режиме Р-32 кроме сегментной организации реализована страничн организ памяти. Эти две стр-ры работают независимо. Один сегм состоит из неск стр. Границы сегментов и страниц могут не совпадать. Логич адреса всех задач образуют виртуальную память, которая может достигать 64 Тб. Реально процессор работает с физич памятью. Загрузка виртуальных блоков в физич память по мере необх называется свопингом, или подкачкой. Эти действия выполняются на ур-не страниц. Стр имеют фиксиров размер – 4Кб, 2Мб, 4Мб, который позволяет эффективно выполнять свопинг.

Страничная организация разрешается старшим разрядом регистра CR0 – PG (Paging). При этом полученный после сегментного преобразования 32-разрядный линейный адрес преобразуется в 32-разрядный физич адрес. Процесс преобразования еще называют трансляцией адреса. Алгоритм трансляции адреса (для 4Кб страниц):

В исходном линейном адресе младшие 12 разр действительно явл. адресом внутри стр и никогда не меняются при преобразованиях. Старшая часть линейного адреса разбита на две части по 10 разр. Одна из них явл. индексом в каталоге (макс – 1024 эл-тов), другая – индексом в табл страниц (макс – 1024 эл-тов). С каждым эл-том каталога связана своя табл страниц, а каждый эл-нт табл стр хранит физич адрес одной стр в памяти. В рег CR3 хранится начальный адрес каталога стр.

Эл-тами каталога явл. PDE, а эл-тами табл стр – PTE. Эл-ты PDE и PTE имеют одинак стр-ру:

0: P (Present) – флаг присутствия. Показывает, имеется ли в данный момент данная стр в ОЗУ.

1: R/W

2: User/System

Биты 2 и 1 задают права доступа к странице:

Бит 2

Бит 1

Доступ

User

System

0

0

-

R

0

1

-

R/W

1

0

R

R/W

1

1

R/W

R/W

3: PWT – кэширование на уровне стр. PWT=0 – Write Through, PWT=1 – Write Back/

4: PCD – запрет кэширования страниц.

5: A (Access - )флаг доступа. Показывает, было ли обращение к данной странице.

6: D (Dirty - )флаг мусора. Равен 1, если в соотв стр/табл была запись инфо, т.е. при записи стр ее надо скопиров на диск.

7: PS (Page Size) (только для таблиц). PS=0 – 4Kb, PS=1 – 4Mb/2Mb/

8: G (Global) (только для станиц). G=1 – страница глобальная.

9-11: резерв для ОС.

12-31: Указатель на таблицу страниц (для PDE), либо на страницу (для PTE).

Для 4Мб страниц поле смещения в линейном адресе занимает 22 младших разряда, а 10 старших разрядов – индекс в каталоге таблиц. Таблицы страниц отсутствуют.