Вытесняющая многозадачность.
Некоторый прообраз многозадачности, реализованной аппаратно, можно вывести из процессоров, имеющих систему прерываний. Обобщенно прерываниями микропроцессора называют реакцию на особые случаи, которая заключается в передаче управления от текущей программы специальной процедуре обслуживания. К таким требующим обработки случаям относится появление сигналов от аппаратных компонентов (клавиатуры, динамически обновляемой памяти, видеокарты, таймера) о важных внешних событиях и сообщения внутренних блоков микропроцессора об ошибках или затруднениях в работе программы (например, деление на ноль, запрещенный доступ к памяти). Часто под прерываниями узко понимают только запросы первого типа, а запросы второго типа называют исключениями.
Схема обработки прерывания следующая:
·Работа основной программы пользователя.
·Возникновение прерывания.
·Сохранение параметров работающей программы (регистров процессора).
·Переход по адресу процедуры обработки прерывания.
– 73 –
·Выполнение процедуры обработки прерывания.
·Восстановление параметров работающей программы.
·Переход по адресу следующей команды основной программы.
Прерывания с более высоким приоритетом, в свою очередь, могут прервать обработку текущего прерывания и т.д.
Прерывания использовались для написания так называемых резидентных ( terminate - and - stay - resident , TSR ) программ. Данные программы позволяли писать драйверы клавиатуры, спулеры печати, копировальщики экрана, которые работали в фоновом режиме. Но порядок работы процессора оставался прежним – в конкретный момент времени процессор выполнял только одну программу, и только эта программа могла вернуть управление той, которую прервала. И, если происходил сбой в работе резидентной программы или при обработке прерывания, компьютер "зависал" и не давал возможности вернутся к прерванной программе.
Другой очевидный недостаток работы по прерываниям, заключается в том, что порядок смены программных участков аналогичен использованию процедур и функций – то есть четкая схема порядка следования программных элементов – из прерывания можно было вернутся только в ту программу, во время которой произошло прерывания, и это невозможно сделать до окончания всех действий прерывания.
Другим примером вытесняющей многозадачности являются многопользовательские операционные системы, которые используют системный таймер для периодического прерывания одной задачи и запуска другой. Таким образом, новая задача как бы вытесняет выполняемую.
Дата добавления: 2016-11-22; просмотров: 602;