189
Последние являются вспомогательными программными единицами,
выполняющими некоторый общий сервис, необходимый для всех или
нескольких драйверов устройств (например, управление шиной SCSI).
Если первые два вида драйверов доступны для пользовательских
приложений через API, то модули полностью скрыты от пользователей и
вызываются только из других драйверов.
Обращения к драйверам из приложений выполняются через API
POSIX (open(), read(), write() и т.д.). Перевод API POSIX во
внутренние системные вызовы ядра BeOS осуществляет "файловая
система устройств" devfs. Для того, чтобы драйвер был доступен для devfs,
он золжен быть записан (опубликован) в соответствующем каталоге
иерархической файловой системы.
К сожалению, нам не удалось найти исчерпывающей информации о
файловой системе BeOS, но даже та неполная информация, которую нам
удалось получить, представляет существенный интерес.
Первая файловая система BeOS не имела иерархической структуры.
Вместо этого логическая структура файловой системы поддерживалась
"базой данных файлов". Навигация по логической структуре
осуществляется средствами, напоминающими средства, принятые в
реляционных базах данных – запросами. Поиск файла выполняется
запросом, содержащим предикат (иногда довольно сложный),
проверяющий значение одного или нескольких атрибутов файла. Хотя бы
для одного из атрибутов, участвующих в предикате, должен быть создан
индекс. Наряду с запросами, формулируемыми при каждом обращении, в
системе существуют и "постоянно живущие" запросы – аналоги
представлений (view) в реляционных базах данных. Подобно
представлению, постоянный запрос представляет собой не
зафиксированную выборку, а зафиксированный предикат, выборка же при
каждом обращении выполняется заново. Постоянные запросы