- •Глава 11
- •Глава 12. Управление файлами
- •Глава 11 Управление вводом-выводом и дисковое планирование
- •11.1. Устройства ввода-вывода
- •11.2. Организация функций
- •11.3. Вопросы проектирования операционных систем
- •11.4 Буферизация операций ввода-вывода
- •11.5. Дисковое планирование
- •Выбор в соответствии с источником запроса
- •Выбор в соответствии с содержимым запроса
- •11.6. Raid
- •Буфер кэша
- •Очередь символов
- •Небуферизированный ввод-вывод
- •11.9. Ввод-вывод в windows 2000
- •Асинхронный и синхронный ввод-вывод
- •11.10. Резюме, ключевые термины и контрольные вопросы
- •Ключевые термины
- •Рекумендуемая литература
- •11.12. Задачи
- •Приложение. Дисковые устройства Магнитный диск
- •Оптическая память
11.2. Организация функций
В разделе 1.7 рассмотрены три способа осуществления ввода-вывода.
Программируемый ввод-вывод. Процессор посылает необходимые команды контроллеру ввода-вывода; после этого процесс находится в состоянии ожидания завершения операции ввода-вывода.
Ввод-вывод, управляемый прерываниями. Процессор посылает необходимые команды контроллеру ввода-вывода и продолжает выполнение следующих команд. Выполнение процесса прерывается контроллером ввода- вывода, когда последний выполнит свое задание. Выполняющийся процессором код может быть кодом процесса, обратившегося к устройству ввода- вывода, если нет необходимости в ожидании выполнения операции ввода- вывода. В противном случае процесс приостанавливается до получения прерывания, и процессор переключается на выполнение другого процесса.
Прямой доступ к памяти. Модуль прямого доступа к памяти управляет обменом данных между основной памятью и контроллером ввода-вывода. Процессор посылает запрос на передачу блока данных модулю прямого доступа к памяти, а прерывание происходит только после передачи всего блока данных.
В табл. 11.1 показана связь между перечисленными способами. В большинстве компьютерных систем основным способом передачи данных, поддерживаемым операционной системой, является прямой доступ к памяти.
Таблица 11.1. Способы ввода-вывода
Без использования С использованием преры- прерываний ваний |
Передача данных из устройства Программируемый Ввод-вывод, управляемый ввода-вывода в память с исполь- ввод-вывод прерыванием зованием процессора Прямая передача данных из уст- Прямой доступ к памяти ройства ввода-вывода в память (DMA)
|
Параллельно с развитием компьютерных систем возрастает сложность и интеллектуальность их отдельных компонентов, что заметнее всего в области ввода-вывода. Этапы развития функциональности устройств ввода-вывода можно охарактеризовать следующим образом.
Процессор непосредственно управляет периферийным устройством.
К устройству добавляется контроллер или модуль ввода-вывода. Процессор использует программируемый ввод-вывод без прерываний. На этом этапе процессор становится в некоторой степени отделенным от конкретных деталей интерфейсов внешних устройств.
Применяется та же конфигурация, что и в пункте 2, только с использованием прерываний. В результате процессору нет необходимости расходовать время на ожидание выполнения операций ввода-вывода, что приводит к увеличению производительности.
Модуль ввода-вывода получает возможность непосредственной работы с памятью с использованием DMA. Появляется возможность перемещения блока данных в память или из нее без использования процессора (за исключением моментов начала и окончания передачи данных).
Модуль ввода-вывода совершенствуется и становится отдельным процессором, обладающим специализированной системой команд, предназначенных для ввода-вывода. Центральный процессор дает задание процессору ввода- вывода выполнить программу ввода-вывода, находящуюся в основной памяти. Процессор ввода-вывода производит выборку и выполнение соответствующих команд без участия центрального процессора. Такая процедура позволяет центральному процессору определить последовательность выполняемых функций ввода-вывода и быть прерванным только при выполнении всей последовательности.
Модуль ввода-вывода обладает своей локальной памятью и является, по сути, отдельным компьютером. При такой архитектуре управление многочисленными устройствами ввода-вывода может осуществляться при минимальном вмешательстве центрального процессора. Обычно такая архитектура используется для управления связью с интерактивными терминалами. Процессор ввода-вывода берет на себя большинство задач, связанных с управлением терминалами.
Если проследить описанный выше путь развития устройств ввода-вывода, то можно заметить, что вмешательство процессора в функции ввода-вывода становится все менее заметным. Центральный процессор все больше и больше освобождается от задач, связанных с вводом-выводом, что приводит к повышению общей производительности. Этапы 5 и 6 отражают изменение концепции устройства ввода-вывода — отныне он способен к самостоятельному выполнению программы.
Обратите внимание на терминологию. Для всех модулей, описанных в пунктах 4-6, вполне применим термин "прямой доступ к памяти", поскольку каждый из них использует непосредственное управление основной памятью модулем ввода-вывода. Модуль ввода-вывода, описанный в пункте 5, часто называется также каналом ввода-вывода, а модуль, описанный в пункте 6, — процессором ввода-вывода. Впрочем, иногда в литературе каждый из этих терминов используется и для описания другого типа устройств. В оставшейся части главы мы используем термин "канал ввода-вывода" для обоих типов модулей ввода-вывода.
Прямой доступ к памяти
На рис. 11.2 представлена логическая схема прямого доступа к памяти. Устройство прямого доступа к памяти способно дублировать функции процессора, в частности получать от процессора управление системой. Эта возможность необходима ему для передачи данных по системной шине — как в память, так и из нее. Обычно модуль DMA использует системную шину лишь в том случае, когда процессор не нуждается в ней (в противном случае ему придется вынудить процессор временно приос тановить свою работу). Этот способ наиболее распространен и именуется захватом цикла, так как модуль DMA выполняет захват цикла шины
Рис. 11.2. Блок-схема прямого доступа к памяти
Рассмотрим работу схемы прямого доступа к памяти. В тот момент, когда процессору необходимо произвести считывание или запись блока данных, он выполняет запрос к модулю DMA, передавая ему следующую информацию.
Какая из операций — чтения или записи — запрашивается. В зависимости от этого будет использоваться либо управляющая линия чтения, либо записи между процессором и модулем DMA.
Адрес используемого устройства ввода-вывода, подключенного к данных.
Начальный адрес считываемой (или записываемой) области памяти, хранящийся в адресном регистре модуля DMA.
Какое количество слов необходимо прочесть или записать. Эта величина хранится в регистре счетчика данных модуля DMA.
После этого процессор продолжает свою работу с другим заданием, передав управление операцией ввода-вывода модулю DMA. В свою очередь модуль DMA, минуя процессор, передает весь блок данных непосредственно в память (или считывает данные из нее). После выполнения передачи данных модуль DMA посылает процессору сигнал прерывания. Таким образом, процессор включается в этот процесс лишь в начале и в конце передачи данных (рис. 1.19,в).
На рис. 11.3 показаны позиции цикла команд, в которых работа процессора может быть приостановлена. В любом случае приостановка работы процессора происходит только при необходимости использования шины. После этого устройство
DMA выполняет передачу одного слова и возвращает управление процессору. Обратите внимание на то, что это не прерывание: процессор не сохраняет контекст с переходом к выполнению другого задания. Процессор просто делает паузу на время одного цикла шины. Общее влияние DMA состоит в несколько более замедленной работе процессора. Тем не менее для передачи большого блока данных модулем ввода-вывода метод прямого доступа к памяти более эффективен, чем метод с использованием прерываний или программируемый ввод-вывод.
Рис. 11.3. DMA и точки прерывания цикла команд
Конфигурирование прямого доступа к памяти может быть выполнено различными способами; некоторые из них представлены на рис. 11.4. В первом примере все модули подключены к одной и той же системной шине. Модуль DMA, выступающий в качестве дублера процессора, использует программируемый ввод-вывод для обмена данными между памятью и устройством ввода-вывода с участием модуля DMA. Несмотря на достоинство такой конфигурации, заключающееся в относительной дешевизне, она малоэффективна. Поскольку используется программируемый ввод-вывод под управлением процессора, на передачу каждого слова затрачиваются два цикла шины (после запроса на передачу следует передача данных).
Число необходимых циклов шины может быть в значительной степени уменьшено путем интегрирования DMA и функций ввода-вывода. При этом подразумевается (как показано на рис. 11.4,6) наличие магистрали между модулем DMA и одним или несколькими устройствами ввода-вывода без подключения . системной шины. Логический узел DMA на самом деле может быть как частью модуля ввода-вывода, так и отдельным модулем, контролирующим один или несколько устройств ввода-вывода. Эту идею можно развивать путем добавления модулей ввода-вывода к модулю DMA с использованием шины ввода-вывода (рис. 11.4,в). Такая схема позволяет свести количество интерфейсов ввода-вывода в модуле DMA к одному и предусматривает легкое расширение этой конфигурации. Во всех представленных случаях (рис. 11.4,6 и в) совместно используемая модулем DMA, процессором и основной памятью системная шина служит модулю DMA только для обмена данными с памятью и обмена управляющими сигналами — с процессором. Обмен данными между DMA и модулями ввода-вывода происходит вне системной шины.
Рис. 11.4. Альтернативные конфигурации прямого доступа к памяти