русс | укр

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

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

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

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


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

Виртуальная ФС VFS (Virtual File System)


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


Порядок открытия файлов

Традиционная ФС s5

Файловые системы UNIX

Лекция 9

http://bourabai.kz/os/lecture16.htm

Поддерживает логическую организацию файлов в виде последовательности байт. Различают обычные файлы, каталоги и специальные файлы. Имеет иерархическую структуру, каталог верхнего уровня всегда располагается на системном устройстве и называется root.

Для связи иерархии файлов, расположенных на разных носителях, используется вмонтирование и исполняется системным вызовом mount.

 

Используется три типа имени файлов – краткое, полное, относительное.

Привилегии доступа к файлу делятся на три категории: владелец, член группы владельца и все остальные. Так же в системе существует привилегированный пользователь , имеющий полные права доступа ко всем файлам системы.

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

Вся информация о файле (кроме его символьного имени) хранится в специальной системной таблице – индексном дескрипторе inode-файлов. Индексные дескрипторы последовательно пронумерованы и хранятся в отдельной области файловой системы. Номер индексного дескриптора является уникальным именем файла. В дескрипторе ведется учет ссылок на этот файл из всех каталогов. Когда количество ссылок 0, дескриптор уничтожается.

 

Нулевой блок содержит загрузчик операционной системы. 1 блок – «супер блок» - содержит общие сведения о файловой системе: размер ФС (сколько занимает), размер области индексных дескрипторов, число дескрипторов, список свободных блоков, список свободных дескрипторов.

В области индексных дескрипторов они упорядочены по номерам.



1. Проверяется, существует ли файл и, если нет, то можно ли его создать.

2. Проверяются права доступа.

3. Если с файлом уже не ведется работа, то его индексный дескриптор копируется в ОП.

4. В области ядра создается структура типа File, отображающая текущее состояние и операции обмена данными с файлом.

5. Делается отметка в контексте процесса, совершившего системный вызов на операцию с данным файлом.

 

Информация о файловой системе и файлах разбивается на две части: зависимая от типа ФС и независимая. Ядро оперирует только независимой частью, а VFS транслирует его запросы в конкретные операции ФС. Независимая информация хранится в структуре ядра vnode, зависимая – inode.

Поддерживаются обычные файлы, каталоги, именованные конвейеры, символьные связи и отображения в памяти. Поддерживаемые ФС описываются массивом структур vfssw [].

Struct vfssw yfssw [] = {

{0, 0, 0, 0},

{“vxfs”, vxinit, &vx_ops, 0},

{“s5”, vx_init, &vx_ops, 0},

{“cdfs”, cdfsinit, &cdfs_ops, 0},

}

1- Символьное имя ФС, 2 – указатель на функцию инициализации, 3- указатель на структуру, описывающую функции, реализующие абстрактные операции ФС vfs над конкретной ФС, 4- флаги.

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

 

Абстрактные операции над файлами описываются в структуре vnodeops, и для каждой из них определен макрос с общим для всех типов ФС именем: vop_open, vop_read, ….

Работа ядра с файлами основана на использовании структуры vnode.

 

V_op используется для связи файла с конкретными реализациями файловых операций.

V_vfsp связывает файл с определенным типом ФС.

V_type – тип файла

V_pages – указывает на таблицу физических страниц памяти, если файл в неё отображен.

V_filockes - блокировки, примененные процессами к отдельным областям файлов.

V_data – это указатель на структуру inode.

 

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

 

Поля структуры file:

flag – это режим открытия (только для чтения, для чтения и записи и тд)

struct vnode* f_vnode – это указатель на структуру vnode

offset – смещение в файле при операциях чтение/записи

struct cred* f_cred – указатель на структуру, содержащую права процесса, открывшего файл (в дескрипторе находится)

file* f_next, f_last – указатель предыдущий ина следующий файл

 



<== предыдущая лекция | следующая лекция ==>
Файловая система NTFS | Лекция 10


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


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

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

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


 


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

 
 

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

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