Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 6004.doc
Скачиваний:
21
Добавлен:
30.04.2022
Размер:
1.29 Mб
Скачать

3.4.1.Переключение задач

Переключение возможно по командам JMP, CALL и по прерыванию.

В первом и втором случаях операндом является адрес TSS вызываемой задачи. Если переключение производится по команде JMP, то для возврата к выполнению первой задачи необходимо вновь использовать JMP с адресом ее TSS в качестве операнда. Команда CALL позволяет организовать вызов вложенных задач. Обратное переключение задач происходит по команде IRET. Адрес TSS для возврата команда IRET берет из поля LINK текущего сегмента TSS. При переключении командой CALL в поле EFLAGS сегмента TSS вызванной задачи устанавливается в 1 бит вложенной задачи NT. Команда JMP, если она использована для переключения задачи, сбрасывает бит NT. Вентили задач, вызываемых по команде CALL, располагаются в GDT или LDT.

Переключение по прерыванию обеспечивается размещением вентиля задачи в IDT.

3.5.Обработка прерываний

Прерывание — это событие, при котором меняется нормальная последовательность команд, выполняемых процессором. Выполняемый процесс приостанавливается и управление передается программе обработки прерывания. Точнее так:

- процесс переводится в состояние блокировки;

- управление передается операционной системе;

- ОС запоминает состояние процесса в PCB;

- ОС анализирует тип прерывания и передает управление соответствующей программе обработки этого прерывания.

Типы прерываний

1. SVC—прерывания (супервизорные прерывания), обращение к операционной системе. Инициатор - работающий процесс, выполняющий команду SVC, т.е. осуществляющий запрос на предоставление конкретной системной услуги - выполнения операции ввода-вывода, изменения размера памяти и т.п.

2. Прерывания ввода-вывода — инициируются аппаратурой ввода-вывода. Сигнализируют об изменении состояния устройств ввода-вывода.

3. Внешние прерывания — истечение кванта времени, сигнал прерывания от другого процессора.

4. Прерывания по рестарту — перезагрузка ОС.

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

6. Прерывания по контролю (ошибке) машины — аппаратные ошибки. Для каждого типа прерываний предусмотрены обработчики прерываний. (IН — Interrupt Нandler). При обработке прерываний используются слова состояния программы (Process Status Word - PSW), которые управляют порядком выполнения команд и содержат информацию о состоянии процесса.

Существуют:

- текущее PSW;

- новое PSW;

- старое PSW.

В текущем PSW содержится адрес следующей команды, подлежащей выполнению. Кроме того, в нем указаны типы разрешенных и запрещенных прерываний (на данный момент). Центральный процессор реагирует только на разрешенные прерывания, однако ему нельзя запретить реагировать на прерывания типов 1, 4, 5. Для каждого типа прерываний создается новое PSW с адресом IН. При прерывании аппаратно происходит переключение PSW:

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

- новое PSW для прерываний этого типа становится текущим PSW.

После завершения работы IН старое PSW для прерываний этого типа становится текущим PSW и прерванный процесс продолжается.