
- •Лекция 1. 7.02.2014
- •Монтирование файловой системы.
- •Лекция 2. 10.02.2014
- •Лекция 3. 17.02.2014
- •Открытые файлы.
- •Лекция 4. 24.02.2014
- •Лекция 5. 3.03.2014 Файлы.
- •Лекция 6. 17.03.2014
- •Организация виртуальной файловой системы (vfs)
- •Регистрация и дерегистрация фс
- •Функции для работы с элементами фс proc.
- •Лекция 7. 24.03.2014
- •Файловая система specfs.
- •Терминалы.
- •Терминальный ввод-вывод.
- •Лекция 8. 31.03.2014
- •Типы флагов структуры termios.
- •Принятые соглашения и стандарты.
- •Простые способы открытия псевдотерминалов.
- •Лекция 9. 7.04.2014
- •Лекция 10. 14.04.2014
- •Реализация доступа к устройствам.
- •Структура контроллера внешнего устройства.
- •Южный и северный мосты.
- •Последовательные и параллельные интерфейсы.
- •Лекция 11. 21.04.2014
- •Управление вводом-выводом.
- •Прерывания.
- •Лекция 12. 28.04.2014 Контроллер прерывания.
- •Лекции 13-14. 5.05.2014, 12.05.2014
- •Проблемы прямого доступа к памяти.
- •Управление устройствами.
- •Многослойная модель системы ввода-вывода.
- •Пространство имен устройств.
- •Доступ к драйверу символьного устройства.
- •Доступ к драйверу блочного устройства.
- •Дополнительная информация о драйверах.
- •Лекция 15. 19.05.2014
- •Типичные точки входа в драйвер устройства.
- •Файлы устройств.
- •Буферизация ввода-вывода.
- •Схемы обменной буферизации
- •Обслуживание прерываний.
- •Лекция 16. 26.05.14
- •Лекция 17. 02.06.14
Оглавление
Лекция 1. 7.02.2014 3
Монтирование файловой системы. 4
Vnode. 6
Лекция 2. 10.02.2014 6
Inode. 10
Лекция 3. 17.02.2014 12
Открытые файлы. 13
Лекция 4. 24.02.2014 16
Лекция 5. 3.03.2014 19
Файлы. 19
Read-write. 22
Лекция 6. 17.03.2014 23
Организация виртуальной файловой системы (VFS) 23
Регистрация и дерегистрация ФС 24
Функции для работы с элементами ФС proc. 26
Лекция 7. 24.03.2014 27
Файловая система SPECFS. 28
Терминалы. 28
Терминальный ввод-вывод. 29
Лекция 8. 31.03.2014 31
Типы флагов структуры termios. 31
Принятые соглашения и стандарты. 34
Простые способы открытия псевдотерминалов. 35
Лекция 9. 7.04.2014 37
Лекция 10. 14.04.2014 41
Реализация доступа к устройствам. 42
Структура контроллера внешнего устройства. 43
Южный и северный мосты. 45
Последовательные и параллельные интерфейсы. 47
Лекция 11. 21.04.2014 48
Управление вводом-выводом. 51
Прерывания. 52
Лекция 12. 28.04.2014 53
Контроллер прерывания. 53
Лекции 13-14. 5.05.2014, 12.05.2014 58
Проблемы прямого доступа к памяти. 58
Управление устройствами. 59
Многослойная модель системы ввода-вывода. 60
Пространство имен устройств. 61
Доступ к драйверу символьного устройства. 62
Доступ к драйверу блочного устройства. 63
Дополнительная информация о драйверах. 64
Лекция 15. 19.05.2014 64
Типичные точки входа в драйвер устройства. 65
Файлы устройств. 65
Буферизация ввода-вывода. 67
Схемы обменной буферизации 69
Обслуживание прерываний. 70
Лекция 16. 26.05.14 71
Softirq. 73
Лекция 17. 02.06.14 77
Лекция 1. 7.02.2014
Иерархическая система (Медник, Донован)
Структура ФС Unix.
Основная задача ОС – управление процессами и выделение процессам ресурсов. Все вычислительные компоненты по сути ресурсы системы. Внешние устройства также являются ресурсами системы.
На нижнем уровне происходит выделение физических устройств, в частности физических страниц. На верхнем уровне – управление данными. Файловая система предназначена для управления данными, которые хранятся на так называемой вторичной памяти. Сама файловая система имеет сложную иерархическую структуру. (рисунок выше, посл. лекции первого семестра)
Символьный уровень – именование файлов с точки зрения пользователя (интерфейсный).
Базовый уровень – уровень дескриптора файла (структура или несколько структур, которые позволяют идентифицировать файл и хранить информацию о нем).
Физический уровень – физическое адресное устройство.
Способ компоновки – древья.
Дерево каталогов:
Некоторые файловые системы требуют расширений.
/usr/lib – абсолютное имя
./lib – относительное имя
Логический файл – место для хранения данных («контейнер» - Unix). Файлы не хранятся в непрерывном файловом пространстве, они хранятся блоками. Происходит кластеризация.
Пользователь при работе с файлами оперирует с абстракциями. Абстракции: файлы, каталоги, дескрипторы файлов, файловые системы.
Каталог является жесткой (простой) ссылкой на файл. Каждый файл может иметь несколько ссылок, которые могут относиться как одному, так и к разным каталогам.
Таким образом, файл не ограничен единственным каталогом и не имеет уникального имени, то есть имя не является атрибутом файла.
Файл существует в системе до тех пор, пока счетчик ссылок на него не равен нулю. Все файловые ссылки эквиваленты и являются разными именами файла (1 л.р. по Юникс).
Монтирование файловой системы.
Файловая система в Юникс - композиция нескольких отдельных деревьев, каждое из которых является отдельной файловой системой.
В Юникс под файлом понимается не только объект, содержащий данные, которые хранятся на диске. В Юникс всё файл, в том числе любое устройство, поддерживающее ввод-вывод потока данных. Для того, чтобы операционная система могла поддерживать несколько файловых систем, была разработана виртуальная файловая система (VFS).
ВФС позволила скрыть от пользователя особенности реализации разных ФС. ВФС не ориентирована на конкретную ФС. Достигается это за счет использования всех особенностей объектно-ориентированного подхода в программировании.
Интерфейс vnode/vfs базируется на таких понятиях ООП как класс и объект. На основе любого класса можно создать один или более порожденных классов – классов-наследников. Эти классы могут стать базовыми для порожденных от них классов, таким образом получается иерархия классов. Объект типа порожденный класс является также объектом типа базовый класс.
Файл (порожд.)-> директория
Любой каталог является файлом.
Атрибуты, добавленные в класс-наследник не видны базовому классу. Базовый класс используется для создания основных абстракций, которые, как правило, реализованы в виде виртуальных функций. В классах наследниках определяются специфичные для каждого класса реализации таких виртуальных функций базового класса.
Базовый уровень (с рисунка) Уникальное имя файла в системе.
В ВФС информация о файлах разделена на две части: часть, которая не зависит от типа файловой системы, хранится в специальной структуре ядра vnode; часть, зависимая от ФС, - в структуре inode.
Уровень проверки прав доступа.
В Юникс user, group, others. Они должны быть зафиксированы в структурах, описывающих файлы.
Логический уровень.
Логическая структура файлов. Символьные и блочные (текстовые и бинарные, текстовые и типизированные). Символьные и блочные устройства.
Физический уровень.
Диск – внешнее устройство. Работа осуществляется через систему ввода-вывода.
Идея унификации.
Подключение внешних устройств и передача потоков данных.
С точки зрения ПО система имеет общие принципы и в ней реализован небольшой набор системных вызовов, позволяющих работать со всеми устройствами одинаково. Вызовы: create, read, write, close.
В основе библиотечных функций содержатся системные вызовы. Они переводят систему в режим ядра.
Вся работа со всеми объектами в системе реализована с помощью ограниченного набора системных вызовов.
В базовых классах используются виртуальные функции. Наследники определяют их в соответствии со спецификациями данной ФС. Наример, в базовом классе Файл определена виртуальная функция create(). Соответственно, базовый класс не содержит реализации этой функции, эта функция не может быть вызвана.
Классы-наследники определяют виртуальную функцию. Если для объекта вызывается виртуальная функция, то определение, какую функцию вызвать, происходит автоматически в зависимости от наследника.
Vnode
struct vnode
//данные
v_count
v_type
v_vfsmountedhere
v_date // закртые данные, зависящие от ФС
Для файлов S5FS и ufs – это структура inode.
Vop – указатель на структуру vnodeops.
ВФС имеет 4 основных типа объектов:
Суперблок (superblock). Представляет определенную смонтированную ФС.
Файловый индекс (inode). Представляет определённый файл.
Элемент каталога (dentry – directory entry). Определяет путь.
Файл – представляет в системе открытый файл.
В ВФС информация о файлах разделена на две части: vnode и inode. Формат структуры ВФС не определен, в vnode имеется только ссылка на эту структуру. Имя inode используется для обозначения зависящей от типа файловой системы информации о файле. Фактически является данью традициям.
Vnode.
Содержится тип файла и указатель на зависимую от типа файловой системы часть описания характеристик файла (inode), которая обычно содержит адресную информацию о расположении файла на носителе и о правах доступа к файлу. Одно из полей структуры vnode указывает на таблицу физических страниц в памяти, если файл отображается в физическую память. Также vnode содержит информацию о блокировках, которые были осуществлены ядром по отношению к отдельным частям файла. При каждом открытии процессом файла ядро создает в системной области памяти новую структуру «файл», которая описывает открытый файл и операции, которые процесс собирается производить с файлом. Поле «режим открытия файла» (read, write, append). Указатель на структуру vnode, смещение в файле при операциях чтения/записи.