Безопасность операционных систем. Безбогов А.А - 59 стр.

UptoLike

Рис. 5.10. Архитектура современной файловой системы
Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддер-
живает определенную организацию файловой системы. Переключатель является единственным модулем, который может
обращаться к драйверу файловой системы. Приложение не может обращаться к нему напрямую.
Драйвер файловой системы может быть написан в виде реентерабельного кода, что позволяет сразу нескольким прило-
жениям выполнять операции с файлами. Каждый драйвер файловой системы в процессе собственной инициализации регист-
рируется у переключателя, передавая ему таблицу точек входа, которые будут использоваться при последующих обращени-
ях к файловой системе.
Для выполнения своих функций драйверы файловых систем обращаются к подсистеме ввода-вывода, образующей сле-
дующий слой файловой системы новой архитектуры. Подсистема ввода выводаэто составная часть файловой системы,
которая отвечает за загрузку, инициализацию и управление всеми модулями низших уровней файловой системы. Обычно
эти модули представляют собой драйверы портов, которые непосредственно занимаются работой с аппаратными средствами.
Кроме этого подсистема ввода-вывода обеспечивает некоторый сервис драйверам файловой системы, что позволяет им осу-
ществлять запросы к конкретным устройствам. Подсистема ввода-вывода должна постоянно присутствовать в памяти и ор-
ганизовывать совместную работу иерархии драйверов устройств. В эту иерархию могут входить драйверы устройств опреде-
ленного типа (драйверы жестких дисков или накопителей на лентах), драйверы, поддерживаемые поставщиками (такие
драйверы перехватывают запросы к блочным устройствам и могут частично изменить поведение существующего драйвера
этого устройства, например зашифровать данные), драйверы портов, которые управляют конкретными адаптерами.
Большое число уровней архитектуры файловой системы обеспечивает авторам драйверов устройств большую гибкость
драйвер может получить управление на любом этапе выполнения запросаот вызова приложением функции, которая за-
нимается работой с файлами, до того момента, когда работающий на самом низком уровне драйвер устройства начинает
просматривать регистры контроллера. Многоуровневый механизм работы файловой системы реализован посредством цепо-
чек вызова.
В ходе инициализации драйвер устройства может добавить себя к цепочке вызова некоторого устройства, определив
при этом уровень последующего обращения. Подсистема ввода-вывода помещает адрес целевой функции в цепочку вызова
устройства, используя заданный уровень для того, чтобы должным образом упорядочить цепочку. По мере выполнения за-
проса, подсистема ввода-вывода последовательно вызывает все функции, ранее помещенные в цепочку вызова.
Внесенная в цепочку вызова процедура драйвера может решить передать запрос дальшев измененном или в неизме-
ненном видена следующий уровень, или, если это возможно, процедура может удовлетворить запрос, не передавая его
дальше по цепочке.