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


         

Реализация файловой системы VFS


UNIX System V Release 4 имеет массив структур vfssw [ ], каждая из которых описывает файловую систему конкретного типа, которая может быть установлена в системе. Структура vfssw состоит из четырех полей:

  • символьного имени файловой системы;

  • указателя на функцию инициализации файловой системы;

  • указателя на структуру, описывающую функции, реализующие абстрактные операции VFS в данной конкретной файловой системе;

  • флаги, которые не используются в описываемой версии UNIX.

    Пример инициализированного массива структур vfssw:

    struct vfssw vfssw[] = {

    {0, 0 , 0 ,0 }, - нулевой элемент не используется

    {"spec", specint, &spec_vfsops, 0}, - SPEC

    {"vxfs", vx_init, &vx_vfsops, 0}, - Veritas

    {"cdfs", cdfsinit, &cdfs_vfsops, 0}, - CD ROM

    {"ufs", ufsinit, &ufs_vfsops, 0}, - UFS

    {"s5", vx_init, &vx_vfsops, 0}, - S5

    {"fifo", fifoinit, &fifovfsops, 0}, - FIFO

    {"dos", dosinit, &dos_vfsops, 0}, - MS-DOS

    Функции инициализации файловых систем вызываются во время инициализации операционной системы. Эти функции ответственны за создание внутренней среды файловой системы каждого типа.

    Структура vfsops, описывающая операции, которые выполняются над файловой системой, состоит из 7 полей, так как в UNIX System V Release 4 предусмотрено 7 абстрактных операций над файловой системой:

    VFS_MOUNT монтирование файловой системы,

    VFS_UNMOUNT размонтирование файловой системы,

    VFS_ROOT получение vnode для корня файловой системы,

    VFS_STATVFS получение статистики файловой системы,

    VFS_SYNC выталкивание буферов файловой системы на диск,

    VFS_VGET получение vnode по номеру дескриптора файла,

    VFS_MOUNTROOT монтирование корневой файловой системы.

    Рис. 5.6. Монтирование файловых систем в VFS

    Операция VFS_MOUNT выполняет традиционное для UNIX монтирование файловой системы на указанный каталог уже смонтированной файловой системы для образования общего дерева, а операция VFS_UNMOUNT отменяет монтирование.

    Содержание  Назад  Вперед