Помощь в учёбе, очень быстро...
Работаем вместе до победы

Вопросы ввода/вывода в операционной системе

РефератПомощь в написанииУзнать стоимостьмоей работы

Пример простого контроллера устройства ввода/вывода приведен на рис. 5. Здесь показаны буфер ввода, в котором может храниться один входной символ, и буфер вывода, также позволяющий хранить не более одного выходного символа. Кроме того, есть регистры управления и состояния. Поместив символ в буфер ввода, контроллер взводит бит в регистре состояния, показывающий, что буфер ввода полон. При выводе… Читать ещё >

Вопросы ввода/вывода в операционной системе (реферат, курсовая, диплом, контрольная)

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

Контроллеры устройств. Устройства ввода/вывода общаются с операционной системой при помощи контроллеров, которые находятся на интерфейсных платах устройства (см. рис. 7.1 и 7.2). Центральный процессор работает именно с контроллером, а не с самим устройством. У контроллера есть набор регистров, используемых для обмена информацией с ЦП. В некоторых компьютерах имеются специальные команды для доступа к регистрам контроллера. Если же применяется отображение устройств на память, то регистры контроллера представляются в виде обычных ячеек адресного пространства.

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

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

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

Обработка прерываний. Если ввод/вывод управляется прерываниями, то при поступлении входных данных и завершении операции вывода генерируется прерывание. Есть множество способов, но наиболее распространены ввод/вывод с управлением от программы и ввод/вывод, запускаемый программой. В первом случае прерывание обычно генерируется после чтения или записи каждого символа, во втором между устройством ввода/вывода и основной памятью помещается устройство прямого доступа к памяти (Direct Memory Access — DMA), управляющее передачей блоков данных между ними. По завершении передачи устройство DMA генерирует прерывание.

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

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

Рассмотрим обмен данными между задачей и контроллером устройства посредством описанных выше регистров контроллера. В случае ввода драйвер устройства ввода посылает контроллеру команду прочитать символ, а затем приостанавливается до тех пор, пока снова не будет активизирован обработчиком прерывания. Контроллер получает символ от внешнего устройства, помещает его в буфер ввода, устанавливает в регистре состояния бит «буфер ввода полон» и генерирует прерывание. Обработчик получает это прерывание и пробуждает задачу драйвера. Драйвер считывает символ из буфера ввода и устанавливает в регистре состояния бит «буфер ввода пуст».

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

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

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

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

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

Показать весь текст
Заполнить форму текущей работой