Синхронизация с внешними и внутренними внештатными событиями



 

СРВ соединены с внешней средой через аппаратные интерфейсы. Доступ к интерфейсам и, следовательно, к внешним данным осуществляется либо по опросу, либо по прерыванию.

При опросе СРВ циклически последовательно проверяет все входные порты на наличие у них новых данных, которые затем считываются и обрабатываются. Опрос является простым, но эффективным методом из-за повторяющихся проверок входных портов.

Больший эффект достигается при использовании прерываний, когда интерфейсное устройство, получившее новые данные привлекает внимание процессора, посылая ему сигнал прерывания через системную шину. По отношению к текущему процессу прерывания являются асинхронными событиями, требующими немедленной реакции. Получив сигнал прерывания, процессор приостанавливает исполнение текущей задачи, сохраняя в стеке ее контекст, считывает из таблицы адрес программы обработки прерывания и передает управление ей. Эту программу называют обработчиком прерывания.

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

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

Хорошим стилем для обработчиков прерываний является использование реентерабельного кода (смотри реентерабельность). Это позволяет избежать конфликта, если прерывается сам обработчик и тот же код вызывается для обслуживания нового прерывания, прежде чем закончилась обработка предыдущего.

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

Приемлемая при интерактивной многопользовательской, последовательной обработке внезапная остановка процессора в СРВ должна быть абсолютно исключена.

В СРВ все возможные исключения должны анализироваться заранее с определением соответствующих процедур обработки.

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

Реализация рассмотренного механизма ОСРВ связано со следующими тенденциями:

1.Стремление обеспечить максимально быструю и детерминированную реакцию системы на внешнее событие.

2.Старания добиться минимально возможных периодов времени, когда в системе запрещены прерывания.

3.Обработчик прерываний должен выполнять минимальный объем функций за максимально короткое время.

 

Синхронизация по времени

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

В ОСРВ задается эталонный интервал времени (тик), который используется в качестве базовой единицы измерения времени. Размерность этой единицы для разных ОСРВ может быть разной, также как разными могут быть наборы функций и механизмы взаимодействия с таймером. Функции по работе с таймером используют для приостановки выполнения задачи на какое-то время, для запуска задачи в определенное время, для относительной синхронизации нескольких задач по времени и т.п.

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

 


Дата добавления: 2018-08-06; просмотров: 282; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!