Операционные системы -вопросы теории

       

Драйверы файловых систем



Драйверы файловых систем

При эксплуатации ОС может возникнуть необходимость монтировать файловые системы, отличающиеся от "родной" ФС. Особенно часто она возникает в организациях, где используются ОС нескольких разных типов. Да и в организациях, работающих с монокультурой MS DOS/MS Windows, такая потребность возникает все чаще. Во-первых, доступ к файлам на файловом сервере осуществляется существенно иными способами, чем к файлам локальном диске, даже если на сервере стоит та же ДОС с той же Фс тип FAT. Во-вторых, дисководы для CD-ROM становятся все дешевле и расгт страняются все шире. При этом стандартная ФС на CD-ROM — вовсе FAT.
Решение этой проблемы приходит в голову сразу — необходим драйвеп файловой системы со стандартным интерфейсом, подобный драйверу ннеш него устройства. Естественно, набор функций такого драйвера должен быть существенно иным.

  • mount — монтирование ФС. В зависимости от типа ФС параметры тгой функции должны различаться. Для ФС на локальных дисках достаточно передать системный идентификатор монтируемого диска. Для ФС на удаленной машине мы должны передать сетевой адрес этой машины и имя требуемой файловой системы. Во многих случаях проводится различие между монтированием ФС для чтения/модификации или только для чтения: при монтировании с модификацией устанавливается флаг загрязнения (dirty flag) ФС.
  • umount — размонтирование ФС.
  • GetFreeSpace или df — получение информации о ФС: общее пространство, свободное пространство, количество файлов и т. д.
  • FindFirst/FindNext ИЛИ opendir/readdir — функции длячтения из каталога. Считанную информацию необходимо привести к формату, принятому в данной ОС. В частности, может оказаться необходимым сократить и/или преобразовать считанные имена файлов. Например, драйвер HPFS, используемый в-эмуляторе MS DOS, в системе OS/2 не выполняет такого преобразования. В результате — программы DOS не видят файлов и каталогов с длинными именами.
  • access — проверить существование файла и возможность доступа к нему в заданном режиме, например, для чтения или для записи.
  • stat — функция для получения информации о файле с заданным именем. Драйвер ФС должен считать доступную информацию о файле и привести ее к принятому в ОС формату. При этом возможно придется проигнорировать часть считанной информации, а другую часть, напро-- тив, драйвер вынужден сочинять сам. Так, драйвер файловой системы FAT в ОС семейства Unix вынужден сочинять идентификатор хозяина файла, права доступа и т. д.
  • open - открыть существующий или создать новый файл с заданным именем.
  • read и write — функции считывания данных из файла ц записи в него.
  • lseek — позиционирование в файле.


  • lock — функция (в действительности, набор функций) блокировки для
    синхронизации доступа к файлу или его участкам. (Подробнее о них см. в
    разд. Захват участков файлов). При работе с локальными ФС операции блокировки могут прослеживаться ядром системы и не доходить до драйвера ФС, но при
    работе с разделяемыми по сети ФС блокировки необходимо отслеживать
    на уровне протокола разделения файлов, поэтому драйвер сетевой ФС
    обязан знать о блокировках.
  • close — закрыть файл.
  • delete или unlink — удалить файл или его имя.
  • link — создать связь с файлом (новое имя). Далеко не все ОС и ФС поддерживают эту операцию.
  • mkdir — создать каталог.
  • rmdir — удалить каталог. Обычно разрешено удаление только пустых каталогов.

Кроме собственно драйвера ФС, для ее полноценной поддержки нужны следующие программы:

  • программа создания ФС — mkfs или FORMAT;
  • программа контроля и починки ФС — fsck или CHKDSK;
  • программа fstyp, которая смотрит на содержимое устройства и пытается определить, "ее" это ФС или не ее. Она полезна при монтировании ФС с автоматическим определением ее типа;
  • программа mount, которая принимает из командной строки зависящие от типа ФС параметры, проверяет их допустимость и инициализирует драйвер ФС.


Содержание раздела