20.1 Дескриптор процесса
Для того чтобы операционная система могла управлять процессами, она должна располагать всей необходимой для этого информацией. С этой целью на каждый процесс заводится специ¬альная информационная структура, называемая дескриптором про¬цесса (описателем задачи, блоком управления задачей). В общем случае дескриптор процесса содержит следующую информацию:
• идентификатор процесса (так называемый РID — process identificator);
• тип (иди класс) процесса, который определяет для супервизора (часть управляющей программы операци¬онной системы ЭВМ, предназначен для организации многопрограммного режима работы данной ЭВМ.) не¬которые правила предоставления ресурсов;
• приоритет процесса, в соответствии с которым суперви¬зор предоставляет ресурсы. В рамках одного класса процессов в первую очередь, обслуживаются более приоритетные процессы;
• переменную состояния, которая определяет, в каком со¬стоянии находится процесс (готов к работе, в состоянии выполнения, ожидание устройства ввода/вывода и т. д.);
• защищенную область памяти (или адрес такой зоны), в которой хранятся текущие значения регистров процес¬сора, если процесс прерывается, не закончив работы. Эта информация называется контекстом задачи
• информацию о ресурсах, которыми процесс владеет и/или имеет право пользоваться (указатели на открытые файлы, информация о незавершенных операциях ввода/вывода и т. п.);
• место (или его адрес) для организации общения с дру¬гими процессами;
• параметры времени запуска (момент времени, когда процесс должен активизироваться, и периодичность этой процедуры);
• в случае отсутствия системы управления файлами — ад¬рес задачи на диске в ее исходном состоянии и адрес на диске, куда она выгружается из оперативной памяти, если ее вытесняет другая (для диск — резидентных за¬дач, которые постоянно находятся во внешней памяти на системном магнитном диске и загружаются в опера-тивную память только на время выполнения).
Описатели задач, как правило, постоянно располагаются в оперативной памяти с целые ускорить работу супервизора, который организует их в списки (очереди) и отображает изменение состоя¬ния процесса перемещением соответствующего описателя из од¬ного списка в другой. Для каждого состояния (за исключением со¬стояния выполнения для однопроцессорной системы) операционная система ведет соответствующий список задач, находящихся в этом состоянии. Однако для состояния ожидания может быть не один список, а столько, сколько различных видов ресурсов могут вызы¬вать состояние ожидания. Например, состояний ожидания заверше¬ния операции ввода/вывода может быть столько, сколько устройств ввода/вывода имеется в системе.
20.2 Прерывания
Прерывания представляют собой механизм, позволяющий координировать параллельное функционирование отдельных устройств вычислительной системы и реагировать на особые состо¬яния, возникающие при работе процессора. Таким образом, преры¬вание — это принудительная передача управления от выполняемой программы к системе (а через нее — к соответствующей программе обработки прерывания), происходящая при возникновении опреде¬ленного события.
Идея прерываний была предложена в середине 50-х годов и можно без преувеличения сказать, что она внесла наиболее весо¬мый вклад в развитие вычислительной техники. Основная цель вве¬дения прерываний — реализация асинхронного режима работы и распараллеливание работы отдельных устройств вычислительного комплекса.
Механизм прерываний реализуется аппаратно-программ¬ными средствами. Структуры систем прерывания (в зависимости от аппаратной архитектуры) могут быть самыми разными, но все они имеют одну общую особенность — прерывание непременно влечет за собой изменение порядка выполнения команд процессором.
Механизм обработки прерываний независимо от архитек¬туры вычислительной системы включает следующие элементы:
- Установление факта прерывания (прием сигнала на прерыва¬ние) и идентификация прерывания (в операционных системах иногда осуществляется повторно, па шаге 4).
- Запоминание состояния прерванного процесса. Состояние процесса определяется прежде всего значением счетчика ко¬манд (адресом следующей команды, который, например, в 180х86 определяется регистрами СS и IР — указателем ко¬манды), содержимым регистров процессора и может вклю¬чать также спецификацию режима (например, режим пользо¬вательский или привилегированный) и другую информацию.
- Управление аппаратно передается подпрограмме обработки прерывания. В простейшем случае в счетчик команд зано¬сится начальный адрес подпрограммы обработки прерыва¬ний, а в соответствующие регистры — информация из слова состояния. В более развитых процессорах, например в том же 180286 и последующих 32-битовых микропроцессорах, начи¬ная с 180386, осуществляется достаточно сложная процедура определения начального адреса соответствующей подпро¬граммы обработки прерывания и не менее сложная процедура инициализации рабочих регистров процессора.
- Сохранение информации о прерванной программе, которую не удалось спасти на шаге 2 с помощью действий аппара¬туры. В некоторых вычислительных системах предусматри¬вается запоминание довольно большого объема информации о состоянии прерванного процесса.
- Обработка прерывания. Эта работа может быть выполнена той же подпрограммой, которой было передано управление на шаге 3, но в ОС чаще всего она реализуется путем после¬дующего вызова соответствующей подпрограммы.
- Восстановление информации, относящейся к прерванному процессу (этап, обратный шагу 4),
- Возврат в прерванную программу.
Шаги 1-3 реализуются аппаратно, а шаги 4-7 — программно.
Итак, главные функции механизма прерываний;
• распознавание или классификация прерываний;
• передача управления соответствующему обработчику прерываний;
• корректное возвращение к прерванной программе.
Переход от прерываемой программы к обработчику и об¬ратно должен выполняться как можно быстрей. Одним из быстрых методов является использование таблицы, содержащей перечень всех допустимых для компьютера прерываний и адреса соответ-ствующих обработчиков. Для корректного возвращения к прерван¬ной программе перед передачей управления обработчику прерыва¬ний содержимое регистров процессора запоминается либо в памяти с прямым доступом, либо в системном стеке.
Прерывания, возникающие при работе вычислительной си¬стемы, можно разделить на два основных класса: внешние (их ино¬гда называют асинхронными) и внутренние (синхронные).
Внешние прерывания вызываются асинхронными событи¬ями, которые происходят вне прерываемого процесса, например:
• прерывания от таймера;
• прерывания от внешних устройств (прерывания по вводу/выводу);
• прерывания по нарушению питания;
• прерывания с пульта оператора вычислительной системы;
• прерывания от другого процессора или другой вычислительной системы.
Внутренние прерывания вызываются событиями, которые связаны с работой процессора и являются синхронными с его опе¬рациями. Примерами являются следующие запросы на прерывания:
• при нарушении адресации (в адресной части выполняемой команды указан запрещенный или несуществующий адрес, обращение к отсутствующему сегменту или странице при организации механизмов виртуальной памяти);
• при наличии в поле кода операции незадействованной двоичной комбинации;
• при делении на нуль;
• при переполнении или исчезновении порядка;
• при обнаружении ошибок четности, ошибок в работе различных устройств аппаратуры средствами контроля.
Могут еще существовать прерывания при обращении к су¬первизору ОС — в некоторых компьютерах часть команд может ис¬пользовать только ОС, а не пользователи. Соответственно в аппара¬туре предусмотрены различные режимы работы, и пользователь¬ские программы выполняются в режиме, в котором эти привилеги¬рованные команды не исполняются. При попытке использовать ко¬манду, запрещенную в данном режиме, происходит внутреннее прерывание и управление передается супервизору ОС. К привиле-гированным командам относятся и команды переключения режима работа центрального процессора.
Наконец, существуют собственно программные прерыва¬ния. Эти прерывания происходят по соответствующей команде прерывания, то есть по этой команде процессор осуществляет прак¬тически те же действия, что и при обычных внутренних прерыва¬ниях. Данный механизм был специально введен для того, чтобы переключение на системные программные модули происходило не просто как переход в подпрограмму, а точно таким же образом, как и обычное прерывание. Этим обеспечивается автоматическое пере¬ключение процессора в привилегированный режим с возможностью исполнения любых команд.
Сигналы, вызывающие прерывания, формируются вне про¬цессора или в самом процессоре; они могут возникать одновре¬менно. Выбор одного из них для обработки осуществляется на ос¬нове приоритетов, приписанных каждому типу прерывания. Оче¬видно, что прерывания от схем контроля процессора должны обла¬дать наивысшим приоритетом (если аппаратура работает непра¬вильно, то не имеет смысла продолжать обработку информации). На рисунке 72 изображен обычный порядок (приоритеты) обра¬ботки прерываний в зависимости от типа прерываний. Учет прио¬ритета может быть встроен в технические средства, а также опре¬деляться операционной системой, то есть кроме аппаратно реализо¬ванных приоритетов прерывания большинство вычислительных машин и комплексов допускают программно-аппаратное управле¬ние порядком обработки сигналов прерывания. Второй способ, до¬полняя первый, позволяет применять различные дисциплины об¬служивания прерываний.


20.3 Процедура обработки прерывания
Процедура обработки прерывания — это программа, которая выполняется при возникновении прерывания. Её назначение — отре¬агировать на прерывание путём выполнения определённых дей¬ствий. Переход к процедуре прерывания осуществляется из любой программы, а после выполнения процедуры прерывания обяза¬тельно происходит возврат в прерванную программу. Для того чтобы впоследствии можно было бы восстановить состояние пре¬рванной программы, перед обращением к процедуре прерывания должно быть сохранено состояние всех регистров и флагов, исполь¬зуемых процедурой прерывания, а после окончания обработки пре¬рывания эти регистры должны быть восстановлены. Поскольку программа обработки прерываний являете внешней по отношению к прерванной программе, то она может находиться в другом про¬граммном сегменте (чаще всего так оно и есть). В связи, с чем для указания её адреса нужно иметь как адрес сегмента, так и адрес ко-манды внутри этого сегмента (CS и IP).
Некоторыми видами прерываний управляют флажки IF и TF, которые для восприятия прерываний должны быть правильно установлены
Если условия для прерывания удовлетворяются и необхо¬димые флажки установлены, то микропроцессор завершает теку¬щую команду, а затем реализует последовательность прерывания:
- текущее значение регистра PSW включается в стек;
- текущее значение кодового сегмента CS включается в стек;
- текущее значение указателя инструкции IP включается в стек;
- сбрасываются флажки IF и TF.
Новое содержимое IP и CS определяет начальный адрес вы¬полняемой процедуры прерывания (обслуживание прерывания). Возврат в прерванную программу осуществляется командой IRЕТ, которая извлекает из стека содержимое: IP. CS; PSW. Двойное слово (первое CS. второе IP), в котором находится новое содержи¬мое IP и CS, называется указателем прерывания, или вектором. Каждому типу прерывания назначено число (номер) из диапазона 0…255. Адрес указателя прерывания находится путём умножения номера прерывания на четыре. Например, вектор прерывания с но¬мером 3lh (функции BIOS дисков) находится по адресу 004Ch.
20.4 Алгоритм прерывания
Алгоритм обработки прерываний показан на рис. 73.
20.5 Виды прерываний
Только первые 5 типов прерываний с 0 по 4 закреплены явно за определёнными событиями: - тип 0 — прерывание возникает при делении на 0. Прерывание возникает вне зависимости от флажков 1F и TF;
- тип 1 — обеспечивает пошаговое выполнение команд процессором. Прерывание управляется флажком TF. Если TF=1, то по окончании команды возникает прерывание типа 1. Так как в процедуре обработки данного прерывания TF сбрасывается, то прерывания типа 1 в процедуре обработки не возникают. Но при завершении процедуры (после восста¬новления PSW) прерывания типа 1 будут вновь иметь место. Этот эффект используется отладчиками для трассировки про¬грамм;
- тип 2 — немаскируемое внешнее прерывание от схем контроля машины;

- тип 3 — формируется при выполнении команды INT без пара¬метров. Используется отладчиками для установки контроль¬ных точек в отлаживаемых программах;
- тип 4 — формируется при выполнении команды INTO. Прерывание возникает если флаг OF=l (обнаружено перепол¬нение). Эту команду обычно помещают для выполнения спе-циальных операций в случае переполнения разрядной сетки машины следом за арифметическими командами.
Прерывания с остальными номерами могут возникать как от периферийных устройств, так и задаваться в программах при по¬мощи команды INT N (N — номер прерывания). Например, команда INT 21h вызовет прерывание с номером 21h, которое используется в MS DOS для обращения к функциям операционной системы.

Оставить комментарий