- •Глава 11
- •Глава 12. Управление файлами
- •Глава 11 Управление вводом-выводом и дисковое планирование
- •11.1. Устройства ввода-вывода
- •11.2. Организация функций
- •11.3. Вопросы проектирования операционных систем
- •11.4 Буферизация операций ввода-вывода
- •11.5. Дисковое планирование
- •Выбор в соответствии с источником запроса
- •Выбор в соответствии с содержимым запроса
- •11.6. Raid
- •Буфер кэша
- •Очередь символов
- •Небуферизированный ввод-вывод
- •11.9. Ввод-вывод в windows 2000
- •Асинхронный и синхронный ввод-вывод
- •11.10. Резюме, ключевые термины и контрольные вопросы
- •Ключевые термины
- •Рекумендуемая литература
- •11.12. Задачи
- •Приложение. Дисковые устройства Магнитный диск
- •Оптическая память
Асинхронный и синхронный ввод-вывод
W2K предоставляет два режима выполнения ввода-вывода — асинхронный и синхронный. Асинхронный ввод-вывод используется там, где можно оптимизировать производительность приложения. При асинхронном вводе-выводе приложение инициирует операцию ввода-вывода, а затем может продолжить свою работу (во время выполнения этого запроса). При синхронном вводе-выводе приложение блокируется до завершения выполнения операции ввода-вывода.
С точки зрения вызывающего потока асинхронный ввод-вывод более эффективен, поскольку позволяет продолжать выполнение, в то время как операция ввода-вывода ставится диспетчером ввода-вывода в очередь и впоследствии выполняется. Однако приложение, использующее асинхронный ввод-вывод, требует механизма определения завершенности этой операции. W2K предоставляет четыре различных способа извещения о завершении ввода-вывода.
Сигнал объекту устройства ядра. При завершении операции ввода-вывода устанавливается индикатор, связанный с объектом устройства. Поток, вызвавший операцию ввода-вывода, может продолжить свое выполнение до тех пор, пока не достигнет точки, в которой он должен дождаться завершения выполнения операции ввода-вывода. В этой точке поток может находиться в состоянии ожидания до завершения операции ввода-вывода, после чего продолжить свою работу. Эта технология проста и легка в использовании, но не подходит для обработки множественных запросов ввода-вывода. Например, если потоку необходимо выполнить множество одновременных операций над одним файлом (таких,' как чтение одной и запись другой части в файл), то при описанной методике поток будет не в состоянии отличить завершение операции чтения от завершения операции записи. Он будет просто знать о том, что завершена некоторая операция ввода-вывода для этого файла.
Сигнал объекту события ядра. Эта методика допускает одновременные запросы ввода-вывода к единственному устройству или файлу. Для каждого запроса поток создает событие; позже поток может ожидать завершения одного из этих запросов (или завершения серии запросов).
Оповещение о вводе-выводе. При этом методе используется очередь, связанная с потоком и известная как очередь вызовов асинхронных процедур (asynchronous procedure call — АРС). Поток создает запросы ввода-вывода, а диспетчер ввода-вывода размещает результаты этих запросов в очереди АРС вызывающего потока.
Порты завершения ввода-вывода. Эта технология используется в W2K Server для оптимизации использования потоков. По сути, для использования доступен пул потоков, так что нет необходимости в создании нового потока для обработки нового запроса.
Программное обеспечение RAID
W2K поддерживает две разновидности конфигураций RAID, определенные в [MS96] следующим образом.
Аппаратный RAID. Раздельные физические диски скомбинированы контроллером в один или несколько логических дисков.
Программный RAID. Дисковое пространство, состоящее из несмежных участков, скомбинировано в один или несколько логических разделов посредством отказоустойчивого программного драйвера диска (fault-tolerance disk driver — FTDISK).
В аппаратном RAID созданием и восстановлением резервной информации руководит интерфейс контроллера. Программный RAID, доступный в W2K Server, реализует функциональность RAID как часть операционной системы и может использоваться с любым множеством дисков. Программный RAID реализует уровни RAID 1 и RAID 5. При RAID 1 (зеркальное дублирование дисков) два диска, содержащие первичный и зеркальный разделы, могут располагаться как на одном, так и на разных контроллерах дисков (последний случай известен как дуплексирование диска).