Процедура - обработка - прерывание - Большая Энциклопедия Нефти и Газа, статья, страница 4
Единственное, о чем я прошу - дайте мне шанс убедиться, что деньги не могут сделать меня счастливым. Законы Мерфи (еще...)

Процедура - обработка - прерывание

Cтраница 4


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

Однако напомним, что проблема состоит в том, что процедура withdraw возобновляется точно с той точки, где была прервана. До возникновения прерывания она создает локальную копию переменной cnt и уменьшает ее значение. Эта копия сохраняется, пока работает процедура обработки прерывания, а после окончания обработки прерывания процедура withdraw помещает уже некорректное значение в переменную cnt. Увеличение cnt, выполненное процедурой обработки прерывания, игнорировано.  [47]

48 Блок-схема процесса прерываний при чтении с перфоленты. [48]

Соответствующая блок-схема показана на рис. 7.17. Программа написана в коде Р1С и включает установку вектора прерываний ( ячейка памяти 70) для устройства ввода перфоленты. В ней используются две отдельные процедуры. Первая, начинающаяся с метки INIT, инициализирует счетчик слов для процедуры обработки прерываний и затем вычисляет фактор перемещаемости на основе смещения PRSER - X - 2 следующим образом.  [49]

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



Страницы:      1    2    3    4