Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
л. Клопа.docx
Скачиваний:
3
Добавлен:
26.09.2019
Размер:
53.22 Кб
Скачать

Спулинг и захват устройств.

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

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

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