Архитектура современных операционных систем
142 Поддержка отдельного устройства часто распределяется между нескольки- ми драйверами, каждый из которых обеспечивает часть функциональности, не- обходимой для нормальной работы. Драйвер файловой системы принимает за- прос на запись данных в определенное место конкретного файла. Он преобра- зует его в запрос на запись определенного числа байтов по определенному «ло- гическому» адресу на диске. После этого передает этот запрос (через диспетчер ввода-вывода) драйверу диска. Последний в свою очередь преобразует запрос в физический адрес на диске (цилиндр/дорожка/сектор) и позиционирует головки дискового устройства для записи данных. Все драйверы, управляющие дисковыми файловыми системами в Windows, являются частью как минимум трехуровневого стека драйверов: драйвер фай- ловой системы находится на верхнем уровне, диспетчер томов — на среднем, а драйвер диска — на нижнем. Кроме того, между этими драйверами может раз- мещаться любое число драйверов фильтров. Таким образом, драйверы Windows могут быть одноуровневые (рис. 4.22. а) и многоуровневые (рис. 4.22. б). Одноуровневые драйверы, непосредственно работающие с устройствами, являются низкоуровневыми. Подробно рассмотрим выполнение одноуровневым драйвером операций ввода/вывода. В случае синхронной операции последовательность действий имеет сле- дующий вид (рис. 4.23.): 1. Процесс с помощью системного вызова запрашивает выполнение опе- рации ввода/вывода над каким-либо файловым объектом; 2. Диспетчер ввода/вывода, получив этот запрос, формирует на его основе IRP и передает его драйверу;
Made with FlippingBook
RkJQdWJsaXNoZXIy MTY0OTYy