The design of the UNIX Operating System 96 страница



 

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

 

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


Основы операционных систем 133

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

 

В большинстве современных компьютеров процессор стараются полностью освободить от необходимо-сти опроса внешних устройств, в том числе и от определения с помощью опроса устройства, сгенериро-вавшего сигнал прерывания. Устройства сообщают о своей готовности процессору не напрямую, а через специальный контроллер прерываний, при этом для общения с процессором он может использовать не одну линию, а целую шину прерываний. Каждому устройству присваивается свой номер прерывания , ко-торый при возникновении прерывания контроллер прерывания заносит в свой регистр состояния и, воз-можно, после распознавания процессором сигнала прерывания и получения от него специального запро-са выставляет на шину прерываний или шину данных для чтения процессором. Номер прерывания обыч-но служит индексом в специальной таблице прерываний, хранящейся по адресу, задаваемому при ини-циализации вычислительной системы, и содержащей адреса программ обработки прерываний – векторы прерываний. Для распределения устройств по номерам прерываний необходимо, чтобы от каждого уст-ройства к контроллеру прерываний шла специальная линия, соответствующая одному номеру прерыва-ния. При наличии множества устройств такое подключение становится невозможным, и на один провод-ник (один номер прерывания) подключается несколько устройств. В этом случае процессор при обработ-ке прерывания все равно вынужден заниматься опросом устройств для определения устройства , выдав-шего прерывание, но в существенно меньшем объеме. Обычно при установке в систему нового устройст-ва ввода-вывода требуется аппаратно или программно определить, каким будет номер прерывания, выра-батываемый этим устройством.


Дата добавления: 2021-01-21; просмотров: 131; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!