Система прерываний – важнейший инструмент в вычислительной системе.
Главная цель прерываний :
1. Обеспечить высокое быстродействие Центрального процессора.
2. Совместно с системой Ввода-вывода не допустить потери ни одного бита, тем более байта, при вводе-выводе.
Например. Началась печать на принтере 10 страниц текста. Если бы не было прерываний, то ЦП ждал бы, пока напечатается 10 страниц и тем самым был бы в простое.
При наличии системы прерываний в этом случае ЦП останавливается на программе печати и переходит на другую программу. А печать текста из 10 страниц выполняет канал Ввода-вывода.
В современных ЦП можно выполнять «одновременно» много программ или Приложений. Поэтому ЦП переходит на другую загруженную программу, пока идёт печать 10 страниц текста. Такой переход делается с помощью системы прерываний. Выбор следующей программы для работы ЦП осуществляется под управлением Операционной системы с учётом приоритета.
«Одновременно» не означает в прямом смысле выполнение нескольких программ одновременно. Быстродействие ЦП так велико по сравнению со скоростью Ввода-вывода, что создаётся впечатление одновременной работы нескольких программ. На самом деле ЦП в каждый момент времени выполняет только одну программу.
Итак, если бы не было системы прерываний, то не было бы большого смысла увеличивать скорость работы ЦП. В настоящее время мы наблюдаем соревнование производителей ЦП в увеличении быстродействия. И это благодаря наличию системы прерываний.
Прерывания или переход на работу другой программы центральным процессором происходит исключительно электроникой. Программным способом производится подготовка информации для перехода к другой программе.
Напомним некоторые понятия.
Система команд ЦП, доступная пользователю, это третий уровень внутренних команд в ЦП. Первый уровень – команды АЛУ. Второй уровень – система микрокоманд. Есть еще небольшая система команд Ввода-вывода, но сейчас не о ней речь, а о командах ЦП.
Первый и Второй уровень команд ЦП недоступны пользователю. Третий уровень команд ЦП доступен пользователю. По-другому, этот уровень называют ассемблером.
Команды третьего уровня состоят из цепочки микрокоманд и являются подпрограммами из микрокоманд. Подпрограммы находятся постоянно в локальной памяти ЦП.
Их команд третьего уровня состоят все программы пользователя и вся операционная система.
В своей работе ЦП выполняет не только команды из третьего уровня, т.е. из Системы команд ЦП. Центральный процессор выполняет другие цепочки микрокоманд, не относящиеся к системе команд ЦП. Такие цепочки микрокоманд ЦП выполняет в процессе работы системы Ввода-вывода.
Есть классы прерываний и приоритет.
1. Наивысший класс прерываний – прерывания от схем контроля ЦП,
если произошёл сбой в электронике. ЦП либо останавливается, либо немедленно выводится сообщение об ошибке.
2. Прерывание от Ввода-вывода. Если требуется принять байт информации с внешнего устройства до тех пор, пока этот байт находится в зоне физического считывания и не ушёл из неё, происходит прерывание от системы Ввода-вывода и ЦП переходит на программу обработки Ввода-вывода и принимает байт в память. Иначе байт потеряется.
3. Программно-управляемое прерывание. Если происходит ввод информации в память и он не закончился, но введённая информация нужна программе. Пока Ввод-вывод не закончился, данные в памяти недоступны. Если вводится большой объём информации в память и нужен допуск к начальному участку информации ещё до окончания Ввода-вывода, применяют программно-управляемое прерывание. Указывается, что после некоторого числа введённых в память байтов, еще до окончания всего ввода, уже можно пользоваться этим числом байтов. Это делается с помощью программно-управляемого прерывания.
При работе с интернетом в современных ПК, при обращении к какому-то сайту элементы сайта появляются на экране по очереди, не сразу. Это благодаря Программно-управляемому прерыванию, ПУП (сокращённо).
Основные типы прерываний при нормальной работе вычислительной системы это прерывания Ввода-вывода и Программно-Управляемое Прерывание.
Рассмотрим подробнее процесс прерывания по Вводу-выводу сначала на примере ЭВМ ЕС-1020 с операционной системой DOS 2.2.
ОЗУ здесь 128-256 Кбайт, ЭВМ ЕС-1020 с DOS 2.2 однозадачная, т.е. машина может выполнять только одну программу (приложение). Скорость ЦП 20 000 операций в секунду. В ОЗУ ЕС-1020 можно загрузить только одну программу в отличие от ЕС-1035, в ОЗУ которой можно загрузить 15 программ (приложений). У обеих машин в ОЗУ кроме проблемных программ (приложений) находится ядро операционной системы – супервизор.
Процессор ЕС-1020 инициирует Ввод-вывод на жёсткий диск командой
9B 00 01 90
Здесь 9В – код команды, 01 90 – адрес жёсткого диска.
Заметим еще раз, что в команде не указано сколько байт нужно ввести или вывести, по какому адресу в ОЗУ нужно делать Ввод-вывод. Информация о количестве байтов Ввода-вывода и об адресе в ОЗУ формируется при открытии соответствующего файла. Файл должен быть открыт до команды Ввода-вывода. При открытии файла для вывода становиться известен адрес начала файла в ОЗУ и размер файла в байтах. При открытии файла для Ввода адрес ОЗУ назначается диспетчером памяти ОС, размер файла определяется по окончанию Ввода.
Ввод-вывод осуществляет Канал ввода-вывода, это электронный блок отдельный от ЦП (смотрите предыдущую статью).
Что делает ЦП после команды 9В 00 01 90 ?
Ему ничего не остаётся как перейти в состояние Ожидания до того как отработает механическая часть дисковода и головка считывания установится на нужную дорожку и найдёт нужный сектор. Обозначит это время ожидания буквой Т0. За время Т0 ЦП мог выполнить возможно 1000 команд из системы команд ЦП.
Почему происходит переход к состоянию Ожидания?
1. Формально команда 9В 00 01 90 ещё не выполнена.
2. Сразу за командой 9В 00 01 90 могла стоять команда обращения к данным Ввода-вывода в ОЗУ, а этих данных ещё нет.
Через время Т0 первый байт данных подошел к зоне физического считывания дисковода (под магнитную головку), считался и его необходимо передать в ОЗУ, иначе под головку подойдёт следующий байт, а первый пропадёт. Поэтому, как только сосчитался первый байт, электронные схемы стойки управления дисковода посылают электронный сигнал в канал Ввода-вывода типа ТРА (Требование Абонента) и Канал по этому сигналу вырабатывает электронный сигнал для начала процедуры Прерывания Ввода-вывода.
Т.е. вызывается Прерывание Ввода-вывода для приёма байта с жёсткого диска.
Как происходит приём байта в ОЗУ? У ЦП нет для этого средств, нет таких команд из системы команд ЦП чтобы принять байт из Канала и поместить его в ОЗУ. Микрокоманда может только записать байт данных из внутренних регистров ЦП только в ОЗУ.
Канал вызвал Прерывание и предоставил байт данных на выходе.
Далее вступает в действие механизм DMA (Direct Memory Allocation) – механизм Прямого обращения к Памяти. Для этого нужен адрес ОЗУ, он находится в КСК в зарезервированной области ОЗУ и байт. Он тоже есть на выходе из Канала. Канал напрямую записывает байт в ОЗУ. Надо понимать, что следующий байт будет записан в ОЗУ по следующему адресу и надо как-то модернизировать адрес памяти для приёма следующего байта.
При Вводе-выводе необходимо сосчитать количество переданных байт. Как это происходит? Канал не имеет вычислительных средств. Во время прерывания копия Командного Слова Канала (см. предыдущую статью) загружается в локальную память из зарезервированной области ОЗУ в начальных адресах (см. соответствующую статью ранее). Командное слово канала (КСК) содержит счетчик текущих байтов и адрес ОЗУ. В локальной памяти они модернизируются и возвращаются в начальную зарезервированную область ОЗУ для дальнейшей работы до конца операции Ввода-вывода. Это происходит с помощью микропрограммного кода.
Очень важно! Переход к выполнению микропрограммы по приёму байта в ОЗУ из Канала происходит исключительно электронными схемами.
Байт принят, ЦП ждёт следующего прерывания и т.д. Как только все байты переданы, команда 9В 00 01 90 заканчивается и ЦП продолжает выполнять прерванную программу.
Рассмотрим подробнее процесс прерывания по Вводу-выводу на примере ЭВМ ЕС-1035 с операционной системой OS 2.0
ЭВМ ЕС-1035 с ОС 2.0 многозадачная. Одновременно можно загрузить в ОЗУ 15 приложений. ОЗУ здесь 3 Мбайта. Скорость ЦП 200 000 операций в секунду.
Пусть в ОЗУ загружено для выполнения 5 приложений.
Процессор ЕС-1035 инициирует Ввод-вывод на жёсткий диск командой
9B 00 01 30
Здесь 9В – код команды, 01 30 – адрес жёсткого диска.
Что делает ЦП после команды 9B 00 01 30 ?
В отличие от ЕС-1020 ЦП ЕС-1035 не переходит в состояние ожидания.
ОС 2.0 сразу переходит на одну из 4 оставшихся загруженных в ОЗУ программ и начинает её выполнять, не теряя времени. Пусть это будет программа 2.
ОС 2.0 многозадачная и способна передавать управление другим загруженным программам двумя способами.
1. По прерыванию Ввода - вывода
2. Путем предоставления всем программам небольшого интервала времени для работы. По-другому, способом квантования.
Таким образом, ЦП практически не бывает в простое и достигается наивысшая производительность ЦП.
Далее первая программа или приложение1 ждёт время Т0, пока байт данных не окажется в зоне физической фиксации или считывания.
Как только байт считан, канал Ввода-вывода вызывает прерывание программы 2 на микрокомандном уровне внутри текущей команды. Текущая команда состоит из цепочки микрокоманд, которая реализует выполнение самой команды ЦП. В ЕС-1035 это называется Разделённый цикл. В разделённом цикле в локальной памяти происходит модернизация КСК первой программы.
Далее происходит так же, как в ЕС-1020 при выполнении Ввода-вывода первой программы.
Замечательно то, что в программе2 при выполнении своей команды Ввода-вывода ОС передаёт управление программе3, если ввод-вывод у программ 1 и 2 не закончен и так далее.
Поэтому создаётся впечатление, что одновременно выполняются все программы. А если присутствуешь в зале ЭВМ ЕС-1035, то порой кажется, что работают все внешние устройства одновременно.
Это благодаря умению ОС распределять время работы между приложениями способом квантования и наличием системы ПРЕРЫВАНИЙ и системы Ввода-вывода.
Современные ПК имеют ЦП с огромной скоростью и впечатляющим размером ОЗУ по сравнению с ЕС-1035. Но система Прерываний в принципе остаётся такой же. Современные ПК могут «одновременно» открывать до 99 приложений.
Сотрудники Вычислительного Центра Главсредволговодстроя г. Саратов, 1977-1993.
Если Вам понравился материал статьи, подпишитесь пожалуйста на мой канал в целом.
Для этого пройдите по ссылке ниже и нажмите кнопку "Подписаться"
https://dzen.ru/profile/editor/id/62cd3cfc63f88417d7e74b79