В диспетчере принята следующая логика, уменьшающая вероятность потери прерываний. Любая программа, реагирующая на конкретную причину прерываний, состоит из двух блоков: блока минимально необходимой реакции, идущего с закрытым прерыванием, и блока, который может производить работу с открытым (незапрещенным) прерыванием. После выполнения блоков минимально необходимой реакции управление передается на блок поиска старшего разряда, давшего прерывание. В том случае, если не появилось новых прерываний, управление передается блоку реакции, который идет с открытым прерыванием. Блок-схема программы реакции на прерывания представлена на рис. 2. Из приведенной блок-схемы видно, что блоки минимальной реакции на соответствующее прерывание завершают свою работу постановкой в очередь заказа на дальнейшую обработку данного прерывания, которая может идти уже с открытым прерыванием. Чтобы была более понятна разница между блоком минимальной реакции на i-е прерывание и блоком дальнейшей обработки, приведем следующий пример.
рис. 2
В процессе считывания информации с перфокарт прерыванием фиксируется момент появления считанной строки (или столбца) на регистре мультиплексного канала. Эта информация должна как можно скорее быть снята с этого регистра, чтобы освободить его для дальнейшей работы.
Блок минимальной реакции выполняет работу по освобождению входного регистра и записи информации в ячейки ОЗУ. Кроме этой работы блок реакции на прерывания должен выполнить большой объем работы по семантическому контролю содержания строки, по компоновке символов для засылки их в память машины, т. е. выполнить работы по редактированию введенной информации. Эта работа должна быть выполнена до прихода со считывающего устройства следующей строки информации. Между моментами появления строк проходит сравнительно большой промежуток времени, и эти работы по редактированию на проходе можно выполнять "не спеша".
Блок минимальной реакции заканчивается выдачей заказа на работу по редактированию, причем этой работе назначается сравнительно невысокий приоритет. Блок выбора работы для продолжения обслуживаний прерываний выбирает на исполнение работу с наивысшим приоритетом, вообще говоря, вне зависимости от того, в какой последовательности реально возникли прерывания, поставившие в очередь работы на исполнение.
Для того чтобы лучше пояснить значение аппарата защиты памяти в БЭСМ- 6, расскажем о том, как этим аппаратом пользуется операционная система (ОС). Задача, поступающая в систему, снабжается некоторым описанием тех ресурсов, которые она потребует от системы в процессе своего решения. Эта информация называется паспортом задачи. В частности, в паспорте указывается число листов ОЗУ, которое ей потребуется для решения.
На основе описания ресурсов требуемой математической памяти ОС анализирует наличие свободных ресурсов в машине к моменту поступления задачи, и если свободных ресурсов достаточно, то задача вводится в решение. При этом ОС назначает каждому требуемому математическому листу памяти задачи физический лист оперативного запоминающего устройства либо страницу на магнитном барабане. В результате такого назначения в операционной системе формируется таблица соответствия математических листов их физическому месторасположению.
В тот момент, когда данная задача начинает решаться, точнее, в тот момент, когда в ее распоряжение отдается центральный процессор, на основе этой таблицы формируется содержание аппаратных регистров приписки для тех математических листов, которым выделена в данный момент оперативная физическая память. Тем математическим листам, которым выделена память на барабанах или которые вообще не затребовала задача, приписывается признак защиты. Если в ходе своего решения задача не обращается к листам, отображенным на магнитные барабаны, или к листам, для нее не существующим, то процесс счета происходит нормально. В том случае, если программа задачи обратилась к математическому листу, который находится на барабане, срабатывает прерывание по защите, и операционная система, анализируя причину прерывания, стремится "перекачать" этот лист с барабана. на первый свободный лист оперативной памяти. Иногда для этого ей приходится "сбросить" какой-либо лист на барабан, освободив тем самым лист оперативной памяти. Пока производится "подкачка" листов для того, чтобы можно было продолжить решение задачи, прерванное по защите программы, центральный процессор отдается в распоряжение другой задаче. Очевидно, стратегия, т. е. методы распределения листов задач между оперативной памятью и памятью на магнитном барабане должны быть выбраны так, чтобы минимизировать число "сбросов" и "подкачек", так как это прямо влияет на эффективность мультипрограммной работы. Таких методов существует много, и о них должен быть особый разговор, выходящий за рамки данной книги. Итак, система защиты и приписки используется операционной системой для организации динамического распределения ресурсов двухуровневой памяти. Но этой же системой ОС пользуется для того, чтобы совместить вычисления с работой внешних запоминающих устройств и устройств ввода-вывода.
Как только программа задачи обращается к процедуре вывода (ввода) информации с какого-либо математического листа, этот лист "закрывается" по защите вплоть до окончания процесса вывода (ввода). Теперь задача, задав ОС директиву выполнить ввод-вывод, может свободно продолжать вычисления, которые не пользуются информацией с листа, находящегося в обмене, и в этом случае работа по вводу-выводу будет совмещена со счетом. Стоит лишь задаче обратиться к листу, находящемуся в процессе обмена, как произойдет прерывание и операционная система заставит эту задачу подождать окончания обмена. Тем самым достигается синхронизация параллельных процессов счета и ввода-вывода. И, наконец, если программа задачи обратилась к незаказанному листу ОЗУ, т.е. совершила попытку обратиться к "чужому" листу, то опять срабатывает прерывание по защите и операционная система фиксирует ошибку в программе и выбрасывает задачу из решения, предоставляя занятые ею ресурсы в распоряжение других задач.