русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2013-12-23; просмотров: 837; Нарушение авторских прав


Файлы, отображенные в памяти

Именованные конвейеры

Символьные связи

Версия UNIX System V Release 4 вводит новый тип связи - мягкая связь, называемая символьной связью и реализуемая с помощью системного вызова symlink.

Символьная связь - это файл данных, содержащий имя файла, с которым предполагается установить связь. (!)Символьная связь может быть создана даже с несуществующим файлом.

При создании символьной связи образуется как новый вход в каталоге, так и новый индексный дескриптор inode. Кроме этого, резервируется отдельный блок данных для хранения полного имени файла, на который он ссылается.

Многие системные вызовы пользуются файлом символьных связей для поиска реального файла. Связанные файлы не обязательно располагаются в той же файловой системе.

Имеются три системных вызова, которые имеют отношение к символьным связям:

  • readlink - чтение полного имени файла или каталога, на который ссылается символьная связь. Эта информация хранится в блоке, связанном с символьной связью.
  • lstat - аналогичен системному вызову stat, но используется для получения информации о самой связи.
  • lchown - аналогичен системному вызову chown, но используется для изменения владельца самой символьной связи.

Конвейер - это средство обмена данными между процессами.

Конвейер буферизует данные, поступающие на его вход, таким образом, что процесс, читающий данные на его выходе, получает их в порядке "первый пришел - первый вышел" (FIFO).

Именованные конвейеры позволяют обмениваться данными произвольной паре процессов, т.к. каждому такому конвейеру соответствует файл на диске. Никакие данные не связываются с файлом-конвейером, но все равно в каталоге содержится запись о нем, и он имеет индексный дескриптор. В UNIX System V Release 4 конвейеры реализуются с использованием коммуникационных модулей STREAMS.



UNIX System V Release 4 реализована возможность отображать содержимое файла (или устройства) в виде последовательности байтов в виртуальное адресное пространство (ВАП) процесса. Это упрощает процедуру доступа процесса к данным.

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

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

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

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

4.флаги, которые не используются в описываемой версии 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 отменяет монтирование.

Операция VFS_ROOT используется при разборе полного имени файла, когда встречается дескриптор vnode, который связан со смонтированной на него файловой системой. Операция VFS_ROOT помогает найти vnode, который является корнем смонтированной файловой системы.

Операция VFS_STATVFS позволяет получить независимую от типа файловой системы информацию о размере блока файловой системы, о количестве блоков и количестве свободных блоков в единицах этого размера, о максимальной длине имени файла и т.п.

Операция VFS_SYNC выталкивает содержимое буферов диска из оперативной памяти на диск.

Операция VFS_MOUNTROOT позволяет смонтировать корневую файловую систему, то есть систему, содержащую корневой каталог / общего дерева. Для указания того, какая файловая система будет монтироваться как корневая, в UNIX System V Release 4 используется переменная rootfstype, содержащая символьное имя корневой файловой системы, например "ufs".

Таким образом, в UNIX System V Release 4 одновременно в единое дерево могут быть смонтированы несколько файловых систем различных типов, поддерживающих операцию монтирования (рисунок 5.6).

VOP_OPEN - открыть файл
VOP_CLOSE - закрыть файл
VOP_READ - читать из файла
VOP_WRITE - записать в файл
VOP_IOCTL - управление в/в
VOP_SETFL - установить флаги статуса
VOP_GETATTR - получить атрибуты файла
VOP_SETATTR - установить атрибуты файла
VOP_LOOKUP - найти vnode по имени файла
VOP_CREATE - создать файл
VOP_REMOVE - удалить файл
VOP_LINK - связать файл
VOP_MAP - отобразить файл в память

Рис. 5.7. Абстрактные операции над файлами

 



<== предыдущая лекция | следующая лекция ==>
Виртуальная файловая система VFS | Способ реализации абстрактных операций над файлами


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.211 сек.