шпаргалка

Обработка прерываний периферийных устройств

[ Назад ]

Обработка прерываний

Прерывания должны быть скрыты как можно глубже в недрах операционной системы, чтобы как можно меньшая часть ОС имела с ними дело. Наилучший способ состоит в разрешении процессу, инициировавшему операцию ввода-вывода, блокировать себя до завершения операции и наступления прерывания. Процесс может блокировать себя, используя, например, вызов DOWN для семафора, или вызов WAIT для переменной условия, или вызов RECEIVE для ожидания сообщения. При наступлении прерывания процедура обработки прерывания выполняет разблокирование процесса, инициировавшего операцию ввода-вывода, используя вызовы UP, SIGNAL или посылая процессу сообщение. В любом случае эффект от прерывания будет состоять в том, что ранее заблокированный процесс теперь продолжит свое выполнение.

44. Драйверы устройств

Драйверы устройств

Драйвером устройства называется программа управления функционированием периферийными устройствами, которая выполняет следующие функции:

• управление интерфейсом контроллера ПУ;

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

• обнаружение и обработка ошибок.

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

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

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

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

• по опросу готовности;

• по прерываниям;

• по прямому доступу к памяти.

По опросу готовности драйвер выполняет следующие действия:

1. Запрещает прерывания от устройства и инициирует операцию на устройстве.

2. Переходит в состояние ожидания.

3. Циклически проверяет завершенность операции.

4. Дождавшись завершения операции, проверяет отсутствие ошибки при ее выполнении, разрешает прерывания и возвращает управление прерванному процессу.

По опросу готовности реализуется синхронный ввод/вывод, при котором отсутствует параллелизм между обработкой и передачей информации. ЦП находится в активном ожидании завершения операции ввода/вывода. Такой способ работы драйверов используется в однопрограммных однопользовательских ОС.

Достоинство - простота. Недостаток - синхронный ввод/вывод, отсутствие параллелизма между вводом/выводом и обработкой.

При работе по прерываниям действия выполняются в следующей последовательности:

1. Инициализируется операция ввода/вывода и разрешает прерывания от устройства.

2. Возвращает управление ЦП для выполнения других действий до момента прерывания.

3. При прерывании происходит переход на программу обработки, в которой проверяется отсутствие ошибки ввода/вывода, и после завершения обработки осуществляется возврат на прерванную программу.

Достоинство - асинхронный ввод/вывод, то есть параллельная работа ЦП и ПУ. Используется в мультипрограммных системах.

При работе по прямому доступу к памяти (ПДП) (Direct Memory Access-DMA)действия выполняются в следующем порядке:

1. ЦП запускает канальную программу командой "запустить канал", которая содержит адрес канала и периферийного устройства. С этого момента канал и ЦП работают параллельно.

2. Канал выполняет свою программу, которая заканчивается нормально либо с ошибкой, либо по команде ЦП "остановить канал".

3. В любой момент ЦП может проверить состояние канала, выполняющего канальную программу, командой "тестировать канал". Эта проверка не влияет на выполнение программы. Обработка ошибок ввода/вывода здесь осуществляется супервизором ввода/вывода.















КАТЕГОРИИ:

Network | английский | архитектура эвм | астрономия | аудит | биология | вычислительная математика | география | Гражданское право | демография | дискретная математика | законодательство | история | квантовая физика | компиляторы | КСЕ - Концепция современного естествознания | культурология | линейная алгебра | литература | математическая статистика | математический анализ | Международный стандарт финансовой отчетности МСФО | менеджмент | метрология | механика | немецкий | неорганическая химия | ОБЖ | общая физика | операционные системы | оптимизация в сапр | органическая химия | педагогика | политология | правоведение | прочие дисциплины | психология (методы) | радиоэлектроника | религия | русский | сертификация | сопромат | социология | теория вероятностей | управление в технических системах | физкультура | философия | фотография | французский | школьная математика | экология | экономика | экономика (словарь) | язык Assembler | язык Basic, VB | язык Pascal | язык Си, Си++ |