double arrow

Прерывания. Обработка прерываний в реальном режиме работы процессора

Прерывания. Аппаратные прерывания(Внешние). Системные вызовы. Исключения. (Внутренние)

Реализация потоков в ядре. Смешанная реализация.

Реализация потоков в ядре

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

Смешанная реализация

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

Прерывание – событие, генерируемое внешним по отношению к процессору устройством.

Аппаратное прерывание – асинхронное событие, соответственно обработка апп. прерывания не учитывает, какой процесс является текущим.

Системный вызов – интерфейс между пользователем, программой и ОС. При системном вызове задача переходит в режим ядра.

Исключение – событие, возникающее в результате попытки выполнения команды, которая не может быть выполнена до конца. Бывают исправимые и неисправимые.

8. Прерывания. Программные и аппаратные средства системы прерываний.

К программным средствам системы прерываний относятся:

- таблица векторов прерываний - содержит 256 векторов по 4 байта на каждый вектор. Каждый вектор представляет собой пару значений для регистров cs:ip, которые указывают на процедуры обработки соответсвтвующих прерываний. Таблица располагается с нулевого адреса;

- флаги:

‡ if (interrupt flag) - флаг прерывания, предназначен для запрета аппаратных прерываний (по входу INTR). При единичном значении микропроцессор обрабатывает входные сигналы прерываний, при нулевом - нет. Флаг сбрасывается с помощью команды cli и устанавливается командой sti. Не влияет на обработку сигналов по входу NMI;

‡ tf (trace flag) - флаг трассировки, при установленном состоянии после выполнения каждой машинной команды генерируется внутреннее прерывние с номером 1;

- команды int, into, iret, cli, sti - машинные команды.

К аппаратным относятся:

- контролер прерываний;
- ЦП

Обработка прерываний в реальном режиме

Производится в 3 этапа:

- прекращение выполнения текущей программы;

- переход к выполнению программы обработки прерывания;

- возврат управления прерванной программе.

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

Второй этап заключается в определении источника прерывания и вызова соответствующей процедуры обработки. Адрес вектора прерывания определяется следующим образом: если возникло прерывание n, то смещение вектора прерывания будет n*4. Первые 2 байта по этому смещению заносятся в регистр ip, следующие 2 байта - в регистр cs. Далее управление передается процедуре по адресу cs:ip.

Третий этап заключается в восстановлении контекста прерванной программы. Восстанавливаются значения регистров микропроцессора, в том числе трех основных регистров. Этот участок кода необходимо защитить от внезапных аппаратных прерываний, сбросив флаг if с помощью команды cli. Последние команды при обработке прерывания - это команды sti (разрешение прерываний) и iret (восстановление flags, ip, cs).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: