- •Основные понятия и концепции ос
- •Классификация ос
- •Управление процессами
- •Операции над процессом
- •13092012 Лекция 2
- •Алгоритмы планирования
- •Средства взаимодействия и синхронизации процессов
- •Синхронизация процессов
- •20092012 Лекция 3 Взаимоблокировки
- •Ликвидация взаимоблокировок
- •Неделимые транзакции
- •04102012 Лекция 4 Архитектура и управление процессами в ос семейства Windows
- •11102012 Лекция 5 Синхронизация потоков
- •Архитектура и процессы unix
- •Управление процессами
- •Создание новых процессов
- •18102012 Лекция 6 Межпроцессное взаимодействие
- •Файловая система
- •Структуризация файлов
- •25102012 Лекция 7 Адресация доступа к файлам
- •Операции над файлами
- •Обобщенная модель файловой системы
- •Отображаемые в память файлы
- •Современная архитектура файловых систем
- •Файловые системы Windows
- •01112012 Лекция 8 Файловая система fat
- •Файловая система ntfs
- •081112 Лекция 9
- •Файловые системы unix Традиционная фс s5
- •Виртуальная фс vfs (Virtual File System)
- •Монтирование файловых систем vfs
- •15112012 Лекция 10 Управление вводом/выводом
- •Драйверы устройств
- •Система ввода/вывода unix
- •29112012 Лекция 11 Подсистема ввода/вывода Windows
- •06122012 Лекция 12 Основные процедуры драйверов устройств
- •Процедуры обслуживания прерывания isr (interrupt Service Routine)
- •Дерево устройств
- •Диспетчер электропитания
- •13122012 Лекция 13 Основные требования ос
- •Множественные прикладные среды
- •Способы построения множественных прикладных сред
- •Реализация множества прикладных средств в Windows системах
081112 Лекция 9
http://bourabai.kz/os/lecture16.htm
Файловые системы unix Традиционная фс s5
Поддерживает логическую организацию файлов в виде последовательности байт. Различают обычные файлы, каталоги и специальные файлы. Имеет иерархическую структуру, каталог верхнего уровня всегда располагается на системном устройстве и называется root.
Для связи иерархии файлов, расположенных на разных носителях, используется вмонтирование и исполняется системным вызовом mount.
Используется три типа имени файлов – краткое, полное, относительное.
Привилегии доступа к файлу делятся на три категории: владелец, член группы владельца и все остальные. Так же в системе существует привилегированный пользователь , имеющий полные права доступа ко всем файлам системы.
Определенно три вида доступа к файлу – чтение, запись и выполнение. В общем случае файл может располагаться в несмежных блоках дисковой памяти и задается последовательностью блоков из 13ти элементов.
Вся информация о файле (кроме его символьного имени) хранится в специальной системной таблице – индексном дескрипторе inode-файлов. Индексные дескрипторы последовательно пронумерованы и хранятся в отдельной области файловой системы. Номер индексного дескриптора является уникальным именем файла. В дескрипторе ведется учет ссылок на этот файл из всех каталогов. Когда количество ссылок 0, дескриптор уничтожается.
Нулевой блок содержит загрузчик операционной системы. 1 блок – «супер блок» - содержит общие сведения о файловой системе: размер ФС (сколько занимает), размер области индексных дескрипторов, число дескрипторов, список свободных блоков, список свободных дескрипторов.
В области индексных дескрипторов они упорядочены по номерам.
Порядок открытия файлов
Проверяется, существует ли файл и, если нет, то можно ли его создать.
Проверяются права доступа.
Если с файлом уже не ведется работа, то его индексный дескриптор копируется в ОП.
В области ядра создается структура типа File, отображающая текущее состояние и операции обмена данными с файлом.
Делается отметка в контексте процесса, совершившего системный вызов на операцию с данным файлом.
Виртуальная фс vfs (Virtual File System)
Информация о файловой системе и файлах разбивается на две части: зависимая от типа ФС и независимая. Ядро оперирует только независимой частью, а 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 – указатель предыдущий и на следующий файл
