Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Операционные системы_лекции.doc
Скачиваний:
47
Добавлен:
28.09.2019
Размер:
1.71 Mб
Скачать

1.4. Машинная команда, способы адресации, привилегированные команды

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

Существуют следующие способы адресации:

  • непосредственная (данные указываются непосредственно в команде);

  • прямая (в адресной части указывается адрес ячейки памяти данных);

  • регистровая (адрес хранится в одном из регистров процессора);

  • несколько разновидностей косвенной адресации (адрес ячейки памяти данных хранится в регистре процессора, который называется индексным или вычисляется по содержимому одного из регистров процессора).

Существуют команды, которые могут выполняться только операционной системой, но не программами пользователя. Такие команды называются привилегированными.

1.5.Система прерываний

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

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

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

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

В простых системах запрос на прерывание вызывает следующие действия:

  • адрес возврата, т.е. адрес команды, продолжающей выполнение программы, записывается в специальный стек;

  • адрес программы обрабатывающей прерывание (вектор прерывания), записывается в регистр адреса команд РС, тем самым управление передаётся программе обработки прерывания;

  • выполняется программа, обрабатывающая прерывание;

  • адрес возврата из стека возвращается в регистр адреса команд РС, тем самым передаётся управление ранее выполняющейся программы.

а)

б)

Рис. 1.3. Схема обслуживания прерывания в простых (а) и сложных (б) системах

Программа, обрабатывающая прерывание, состоит из трёх блоков:

  • отключение прерывания и сохранения в памяти контекста программы, установка временного режима работы прерываний;

  • выполнение обработки прерывания;

  • восстановление контекста прерванной программы, восстановление исходного режима прерываний, передача управления прерванной программе.

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

  • 1_С – отключение прерываний, сохранение контекста прерванной программы в её дескрипторе, установка временного режима работы прерываний, сохранение адреса возврата;

  • 2_С – определение вектора прерывания и передача ему управления посредством записи вектора прерывания в регистр РС.

Программа обслуживания прерывания ПОП выполняет только обработку прерывания, не несёт никакой ответственности за дальнейшие действия вычислительной машины и передаёт управление диспетчеру задач. Диспетчер задач состоит также из двух блоков, которые выполняют следующие действия:

  • 1_Д – отыскивает программу, готовую к выполнению, ею может быть или прерванная программа или друга в соответствии с дисциплиной обслуживания программ;

  • 2­_Д – если обслуживанию подлежит прерванная программа, то восстанавливает контекст программы, устанавливает контекст программы и переписывает адрес возврата из стека в регистр РС, передавая тем самым управление прерванной программе.

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

Таким образом, главные функции системы прерывания:

  • фиксация и распознавание прерываний;

  • передача управления программе обработки прерывания;

  • корректное возвращение управления выполняемой программе.

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

Источниками внешних прерываний являются:

  • системный таймер;

  • внешние устройства ввода-вывода;

  • нарушение питания;

  • пульт оператора;

  • другой процессор или другая вычислительная система.

К источникам внутренних прерываний относятся:

  • нарушение адресации (в адресной части указан запрещённый или несуществующий адрес);

  • неправильный код операции в команде;

  • деление на ноль;

  • переполнение или исчезновение порядка;

  • средства контроля, например, контроля чётности;

  • попытка выполнения привилегированной или запрещённой в данном режиме работы операционной системы команды.

Программные прерывания вызываются необходимостью временного изменения порядка выполнения программ с последующим возвратом к естественной последовательности выполнения команд программы1. Они предусмотрены для обеспечения переключения процессора в привилегированный режим с возможностью выполнения любых операций.

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

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

Средства контроля процессора

Системный таймер

Внешние устройства

Магнитные диски

Сетевое оборудование

Терминалы

Программные прерывания

Рис. 1.4. Естественные приоритеты прерываний

Существует три основных дисциплины обслуживания прерываний:

  • с относительными приоритетами – обслуживание не прерывается даже при наличии запроса с более высоким приоритетом;

  • с абсолютным приоритетом – первыми обслуживаются прерывания с наивысшим приоритетом;

  • по принципу стека – запросы помещаются в стек и первыми обслуживаются последние пришедшие в стек (правило LCFS или LIFO).

Комбинация разрешённых и запрещённых прерываний и приоритетов называется режимом прерываний.