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

2.4.3. Основные режимы ввода/вывода:

1. режим обмена с опросом готовности Центральный процессор посылает устройству управления команду для ввода/вывода, которую оно исполняет, преобразуя в сигнал, понятный ему самому. Устройства ввода/вывода намного медленнее центрального процессора, поэтому сигнал готовности приходится очень долго ждать, постоянно опрашивая устройство интерфейса. В режиме опроса готовности драйвер, управляющий процессом обмена данными с внешним устройством, выполняет в цикле команду «проверить готовность устройства». Центральный процессор в таком режиме используется нерационально.

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

2.4.5. Виды ввода-вывода:

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

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

Для организации асинхронного ввода необходимо:

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

  • связать выделенный буфер с задачей, заказавшей операцию ввода;

  • запрос на операцию ввода разбить на две части (два запроса).

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

Накопители на магнитных дисках обладают крайне низкой скоростью по сравнению с быстродействием центральной части процессора. С учетом того, что операции чтения/записи на диск производятся несколькими большими процессами или сегментами памяти, средняя скорость работы процессора с оперативной памятью на 2 – 3 порядка выше, чем скорость передачи данных из внешней памяти на магнитных дисках в оперативную память. Чтобы сгладить такое несоответствие в производительности основных подсистем, используется буферирование и/или кэширование данных.

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]