Файловые системы (1114721), страница 8
Текст из файла (страница 8)
АналогомUnix файлового дескриптора в Windows NT служит описатель файловогообъекта. Весь контроль доступа, учет ресурсов, аудит и т.д. осуществляется как35и со всеми остальными объектами системы. Рассмотрим, что происходит всистеме, когда пользовательская программа на С вызывает функцию fopen.ПриложениеWin32DLLбиблиотеки Сfp = fopen(myfile.dat,r)CreateFile(myfile.dat,...)DLL Win32NTCreateFile(myfile.dat,...)Вернуть описатель файлаПользовательский режимИсполнительнаясистемаРежим ядраСистемные сервисыДиспетчеробъектовСоздать файловый объектВернуть описатель файлового объектаЯДРОДиспетчерввода-выводаФайловые системыДиспетчер кэшаДрайверы устроуствСетевые драйверыДиспетчерокон(GDI)ДрайверыграфическихустройствСлой абстрагирования от аппаратуры (HAL)Структура файлового объекта.Тип объектаАтрибутытела объектаСервисыФайлИ мя файлаТип устройстваРежим разделенияБайтовое смещениеРежим доступа...Создать файлОткрыть файлЧ итатьП исать...Соответственно, вызов пользовательского приложения например на чтение илизаписьпреобразуется защищеннойподсистемойсредыввызовсоответствующего сервиса файлового объекта.
Следует также заметить, чтодрайверы, пакет IRP и даже устройства рассматриваются в Windows NT какобъекты, но мы не будем подробно разбирать структуру данных объектов.Рассмотрим по-этапно функционирование системы ввода-вывода приобращении к ней какого-либо пользовательского приложения.Диспетчер ввода-вывода получает запрос через один из своих системныхсервисов, создает IRP пакет и передает его драйверу ФС. В зависимости отсодержимого пакета драйвер ФС может просто переслать данный IRPнижележащему драйверу (драйверу устройства - простейшем случае или вболее сложном варианте: отказоустойчевому драйверу или драйверу тома), аможет сгенерировать ряд дополнительных пакетов и также отослать ихследующему драйверу.
Каждый IRP содержит область, называемую стеком,куда каждый следующий драйвер вносит дополнительную служебную36информацию (необходимые операции с пакетом и параметры данныхопераций), когда пакет проходит «к устройству» и читает (стирая) информациюиз стека, когда пакет возвращается «с устройства».П одсистемасреды илл DLL(7) Возвра ща ет кодза вершения:«ввод-вывод выполняется»П ользовательский режимРежим ядра(1) Вызовсервиса ввода выводаИсполнительнаясистемаСистемные сервисы(2) Созда ет IRP. За полняетпервую обла сть стека .Вызыва ет дра йвер Ф СIRP===Диспетчерввода -вывода(3) За полняет следующуюобла сть стека и вызыва етследующий дра йверДра йверфа йловойсистемыIRP======(4) П осыла ет да нные IRP наустройство (или ста вит IRP вочередь). Вызыва етупра вление устройством.(6) Возвра ща ет кодза вершения:«ввод-вывод выполняется»Здесь могут быть ещепромежуточныедра йверы(5) Возвра ща ет кодза вершения:«ввод-вывод выполняется»Дра йвердискаДискПосле оканчания записи на диск генерируется прерывание и запрос вводвывода завершается по обратной траектории.37П одсистемасреды илл DLLИсполнительнаясистема(11) В за вершение опера ции ввода вывода результа ты помеща ются ва дресное простра нствовызыва ющей програ ммыП ользовательский режимРежим ядраСистемные сервисыДиспетчерввода -выводаIRPДра йверфа йловойсистемы(10) Дра йвер Ф С за верша етра боту с IRP.
Очища ет его стек иотда ет диспетчеру ввода -вывода .Здесь могут быть ещепромежуточныедра йверы(9) Дра йвер диска обслужива етпрерыва ние. И звлека ет своюча сть информа ции из стека IRP ивызыва ет вышестоящий дра йвер.IRP======Дра йвердиска(8) П роисходит прерыва ниеДискНетрудно видеть, что все операции ввода-вывода в Windows NT ассинхронны,хотя защищенные подсистемы среды могут предоставлять своим приложениямсинхронные API ввода-вывода, самостоятельно реализуя ожидания оканчанияоперации. В данной модели функционирования системы ввода-выводареализовано большое колличество оптимизирующих алгоритмов и средств.Например, если к драйверу ФС пришел запрос на чтение данных, которыеразбросаны по разным участкам диска, то драйвер ФС генерирует набор IRPпакетов, которые обрабатываются независимо и параллельно, причем каждыйсодержит запрос на чтения одного локального участка данных.
По оканчаниидрайвер ФС собирает их обратно в один пакет и отдает диспетчеру вводавывода. Драйверы всех уровней являются динамически подгружаемыми, азначит не занимают ОП, если их никто не использует. Помимо этого, какговорилось выше, все драйверы также являются объектами со строгоспецифицированными интерфейсами, а значит они легко заменяются.2.2. Файловая система NTFS.2.2.1. Основные особенности NTFS и модель функционирования38Кратко по пунктам опишем основные особенности NTFS. Мы будемрассматривать только функции и особенности, реализованные на моментвыхода Windows NT 4.0.1.
Работа с носителями большого объема.NTFS распределяет дисковое пространство по кластерам. Размер кластераназывается кластерным множителем. Физически кластер - этопоследовательность секторов на диске. Для нумерации кластеров используется64-битовоечисло,т.е.числокластеровможетбытьсвыше16.000.000.000.000.000.000, каждый объемом от 512 байт до 64 Кбайт взависимости от установок при форматировании и объема диска. В частностинельзя отформатировать диск 1Гбайт с кластером 64Кбайта.2.
ВосстанавливаемостьВ случае программного или аппаратного сбоя и порчи данных на диске NTFSавтоматически восстанавливает последнее “правильное” (по терминологии “согласованное” или консистентное) состояние данных. Для этих целейиспользуется модель обработки транзакций и резервное копирование наиболеекритических данных ФС.
При обращении к испорченному участку диска NTFSавтоматически помечает его как “плохой”, и в случае наличия резервной копии(всегда для системных данных и для пользовательских данных в случаеиспользования отказоустойчивых устройств) перераспределяет дисковоепространство для восстановления испорченного участка в другой части диска.3. Избыточность данных и отказоустойчивостьВ общем случае свойство восстанавливаемости NTFS гарантирует тольковозможность продолжения работы системы после сбоя и сохранностьсистемных данных, но не гарантирует полной сохранности всехпользовательских данных, записанных на диск до сбоя. Для критическихприложений, таких как банковские, правительственные, военные и др.
системытакая модель неприемлема. В результате в NTFS была добавлена поддержкаотказоустойчивых дисковых хранилищ, использующих RAID технологию,причем в связи с многоуровневой организацией драйверов устройств NTFSиспользование таких устройств так же прозрачно для пользователя иприкладных программ.
(Данная возможность есть только в Windows NTAdvanced Server).4. Защита от несанкционированного доступа.Организация контроля доступа в NTFS непосредственно реализована черезобъектную модель NT. Каждый открытый файл представляется в видефайлового объекта со своим дескриптором защиты, который хранится на дискекак часть файла. Прежде чем процесс сможет открыть описатель любогообъекта, в том числе и файлового, система контроля проверяет, есть ли упроцесса соответствующие права.5. Соответствие UNIX стандартамNTFS соответствуюет стандартам файловых систем, аналогичных Unix ФС, т.е.например, различие имен в зависимости от регистра букв, отметки времениизменения файла, иерархическую структуру ФС и т.д. Реализована такжеподдержка жестких связей (hard links).
Единственное, что пока неподдерживается из стандарта это символические связи (symbolic links).7. Множественные потоки данныхВ NTFS с каждым атрибутом файла таким как имя, дата создания, дескрипторзащиты и т.д. связан отдельный поток данных. Поскольку непосредственно39данные в файле интерпретируются как отдельный атрибут и существуетвозможность добавлять новые атрибуты, то легко добавлять новые потокиданных, связанные с этим файлом.
Например file.dat : stream1 и file.dat : stream2есть два различных потока, открытых для одного файла данных. Каждый потокобладает собственными атрибутами, такими как выделенный ФС размердискового пространства, реально использованный размер дисковогопространства и т.д., поддерживается система захватов (lock), используемых дляблокировки частей потока при параллельном доступе, но реально покаиспользуются механизмы захвата только на уровне файла.8.
Сжатие данныхNTFS позволяет осуществлять автоматическую архивацию/разархивацию приработе с ФС, но алгоритмы и принципы функционирования данной подсистемыдостаточно интересны и сложны, они заслуживают отдельного рассмотрения,поэтому в данной работе мы не будем их рассматривать.Рассмотрим модель функционирования NTFS.С точки зрения компонент ФС Windows NT NTFS - это комплект загружаемыхдрайверов, предназначенных для обработки запросов ввода-вывода (см. выше).Запись журналатранзакций надискСервис Ж урналатранзакцийЗапротоколировать транзакциюЗапись в кэшДиспетчер К эшаЧтение/запись в файлДоступ к проецируемомуфайлу или сброс кэшаДиспетчервиртуальнойпамятиЗагрузить данныес диска в памятьДиспетчерввода-выводаДрайвер N TF SОтказоустойчивыйдрайверДрайвер УстройстваДискВсе драйверы неявно вызываются приложениями, обращающимися к APIввода-вывода.