Система прерываний 32-разрядных микропроцессоров i80х86

Рис.1. Дескриптор сегмента

 

При переключении микропроцессора в защищенный режим он начинает совершенно другим образом, чем в реальном режиме, вычислять физические адреса команд и операндов. Прежде всего, содержимое сегментных регистров интерпретируется иначе: считается, что там содержится не адрес начала сегмента, а номер соответствующего сегмента. Каждый сегментный регистр (в этом случае его называют селектор сегмента) разбивается на три поля:

a) поле индекса ─ старшие 13 битов (3-15). Определяют номер сегмента:

b) поле индикатора таблицы сегмента ─ бит с номером 2. Определяет часть виртуального адресного пространства.

c) поле уровня привилегий ─ биты 0 и 1. Указывает запрашиваемый уровень привилегий.

Страничная организация виртуальной памятисостоит в том, что все фрагменты программы, на которые она разбивается произвольным образом, имеют одинаковую длину. Эти одинаковы части называют страницами и говорят, что память разбивается на физические страницы, а программа ─ на виртуальные страницы. Часть виртуальных страниц задачи размещается в оперативной памяти, а часть ─ во внешней. Величина страницы выбирается кратной степени двойки. Таким образом, вместо одномерного адресного пространства можно говорить о двумерном. Первая координата адресного пространства ─ это номер страницы, а вторая ─ номер ячейки внутри выбранной страницы (его называют индексом). Таким образом, физический адрес определяется парой (Pp,i), а виртуальный адрес ─ парой (Pν,i), где Pν ─ номер виртуальной страницы, Pp ─ номер физической страницы, i ─ индекс ячейки внутри страницы. Количество битов, отводимое под индекс, определяет размер страницы, а количество битов, отводимое под номер виртуальной страницы ─ объем возможной виртуальной памяти, которой может воспользоваться программа. При это нет необходимости ограничивать число виртуальных страниц числом физических, то есть не поместившиеся страницы можно размещать во внешней памяти, которая в этом случае служит расширением оперативной. Для отображения виртуального адресного пространства задачи на физическую память для каждой задачи, как и в случае сегментного способа, необходимо иметь таблицу страниц для трансляции адресных пространств. Для описания каждой страницы диспетчер памяти ОС заводит соответствующий дескриптор.

В микропроцессорах i80х86 размер страницы равен 212=4096=4Кбайт, а поле номера страницы, имеющей размер 20 битов, разбивается на два поля и осуществляется двухшаговая страничная трансляция. Для описания каждой страницы создается соответствующий 32-битовый дескриптор. Это дает возможность адресоваться к любому байту из 232, а шина адреса как раз и позволяет использовать физическую память с таким объемом. Так что можно отказаться от сегментного способа адресации. Т.е. можно считать, что задача состоит из одного сегмента, который разбит на страницы. Такой подход получил название «плоская память». При использовании плоской памяти упрощается создание ОС и систем программирования. Поэтому в большинстве 32-разрядных ОС для микропроцессоров i80х86 используется плоская модель памяти.

 

В реальном режиме работы система прерываний работает так же, как и для 16-разрядного микропроцессора i8086/8088. Имеется 16 линий запросов на прерывания (IRQ – Interrupt ReQuest), реализуемых с помощью двух контроллеров прерываний i8259A, соединенных каскадным образом.

Линии IRQ:

1) 1 – контроллер клавиатуры;

2) 3 – COM2;

3) 4 – COM1;

4) 6 – контроллер FDD;

5) 8 – часы реального времени с автономным питанием;

6) 12 – контроллер мыши типа PS/2;

7) 13 – математический сопроцессор;

8) 14 – контроллер IDE (первый канал);

9) 15 – контроллер IDE (второй канал);

10) 16 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C2 ;

11) 17 – SoundMax Integrated Digital Audio;

12) 18 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C7;

13) 19 – Intel (R) 82801DB/DBM USB Universal Host Controller – 24C4;

14) 20 – ASUSTeK/Broadcom 440x10/100 Int…

15) 22 – Microsoft ASPI – Compliant System

16) 23 – Intel PCI to USB enhanced Host Controller

 

 

В защищенном режимесистема прерываний действует совершенно иначе. Вместо таблицы векторов используется таблица дескрипторов прерываний IDT. Здесь хранятся не адреса обработчиков прерываний ISR, а специальные системные структуры данных, доступ к которым пользовательским программам запрещен. Каждый элемент в таблице дескрипторов прерываний имеет 8-байтовую структуру и может принадлежать к одному из трех типов:

1. Коммутатор прерывания;

2. Коммутатор перехвата;

3. Коммутатор задачи.

При обнаружении запроса на прерывание и при условии, что прерывания сейчас разрешены, процессор действует в зависимости от типа дескриптора, соответствующего номеру прерывания. Первые два типа дескриптора прерываний вызывают переход на соответствующие сегменты кода, принадлежащие виртуальному адресному пространству текущего вычислительного процесса. Последний тип дескриптора вызывает полное переключение процессора на новую задачу.

Рассмотрим обработку прерываний в контексте текущей задачи. После анализа дескриптора процессор выполняет следующие действия:

1. В стек на уровне привилегий текущего сегмента кода помещаются:

a) значения SS и SP, если уровень привилегий в коммутаторе выше уровня привилегий ранее исполнявшегося кода;

b) регистр флагов EFLAGS;

c) регистры CS и IP.

2. Если тип дескриптора – коммутатор прерывания, то другие прерывания запрещаются, если – коммутатор перехвата, новые прерывания на период обработки текущего прерывания не запрещаются;

3. Поле селектора из дескриптора прерываний используется для индексирования таблицы дескрипторов задачи. Дескриптор сегмента заносится в теневой регистр, а смещение относительно начала нового сегмента определяется полем смещения из дескриптора прерывания.

Совершенно иначе обрабатываются прерывания, если дескриптор является коммутатором задачи. В этом случае происходит полное переключение на новую задачу, при этом сохраняются все регистры процессора.

В основном обработку прерываний осуществляют в контексте текущей задачи, так как это повышает быстродействие системы

 

 

Управление задачами в операционных системах

Время центрального процессора и оперативная память являются основными ресурсами при реализации мультипрограммных вычислений.

Операционная система выполняет следующие основные функции, связанные с управлением задачами:

1. Создание и удаление задачи;

2. Планирование процессов и диспетчеризация задач;

3. Синхронизация задач, обеспечение их средствами коммуникации.

Система управления задачами обеспечивает прохождение их через компьютер. Создание и удаление задач осуществляется по соответствующим запросам от пользователей или от самих задач. Задача может породить новую задачу. Основным подходом к организации того или иного метода управления процессами является организация очередей и ресурсов.

На распределение ресурсов влияют конкретные потребности тех задач, которые должны выполняться параллельно. Можно столкнуться с ситуациями, когда невозможно эффективно распределять ресурсы с тем, чтобы они не простаивали. Например, устройство с последовательным доступом не может распределяться между параллельно выполняющимися процессами. Если же мы возьмем набор таких процессов, которые не будут конкурировать между собой за неразделяемые ресурсы при параллельном выполнении, то процессы смогут выполниться быстрее. Таким образом, возникает задача подбора такого множества процессов, что при выполнении они будут как можно реже конфликтовать из-за имеющихся в системе ресурсов. Такая задача называется планированием вычислительных процессов.

В настоящее время на первый план вышли задачи динамического (краткосрочного) планирования, т.е. текущего наиболее эффективного распределения ресурсов, возникающего практически при каждом событии. Задачи динамического планирования называют диспетчеризацией.

Долгосрочный планировщик решает, какой из процессов, стоящий во входной очереди, должен быть переведен в очередь готовых процессов в случае освобождения ресурсов памяти. Краткосрочный планировщик решает, какая из задач, находящихся в очереди готовых к выполнению, должна быть предана на исполнение. В большинстве современных ОС долгосрочный планировщик отсутствует.