Интерфейс файловой системы 4.4BSD
Интерфейс файловой системы в 4.4BSD опирается на реализацию наращиваемых уровней файловой системы Ficus, разрабатываемой в UCLA [4]. Другие возможности файловой системы 4.4BSD описывались ранее в разделах 8.11.2 и 11.10. Здесь мы остановимся на той части интерфейса, которая относится к стекам, и опишем некоторые интересные варианты файловых систем на его основе.
В 4.4BSD для помещения уровня файловой системы в стек vnode применяется системный вызов mount. Для извлечения его из стека используется вызов unmount. Точно так же, как и в модели SunSoft, каждая операция должна быть сначала помещена на самый верхний уровень стека. Любой из уровней может как завершить выполнение операции и возвратить ее результаты, так и столкнуть ее для обработки на более низкий уровень (производя при этом некоторые дополнительные действия при необходимости). Хотите развлечься тогда Лотерея Кено отлично подойдет для отдыха вечером.
В 4.4BSD имеется возможность присоединения уровня файловой системы сразу к нескольким вхождениям пространства имен. Это позволяет обращаться к одному и тому же файлу, используя несколько различных полных имен (не прибегая к отдельным ссылкам). Более того, остальные уровни стека могут быть неодинаковыми для каждой точки монтирования, в результате чего у одной и той же операции может быть различная семантика. Такой подход совместим с технологией разветвления по входу (см. раздел 11.11.1). Например, файловая система может быть одновременно монтирована в каталогах /direct и /compress, при этом каталог /compress соответствует уровню сжатия стека. Такая конфигурация системы позволяет производить шифрование-дешифровку «на лету» посредством запроса файлов через /compress. Однако программа резервного копирования вправе при этом обращаться к файлам через /direct напрямую, обходя операцию их разуплотнения.