Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lections_v2.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
10.99 Mб
Скачать

Оглавление

Лекция 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 основных типа объектов:

  1. Суперблок (superblock). Представляет определенную смонтированную ФС.

  2. Файловый индекс (inode). Представляет определённый файл.

  3. Элемент каталога (dentry – directory entry). Определяет путь.

  4. Файл – представляет в системе открытый файл.

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

Vnode.

Содержится тип файла и указатель на зависимую от типа файловой системы часть описания характеристик файла (inode), которая обычно содержит адресную информацию о расположении файла на носителе и о правах доступа к файлу. Одно из полей структуры vnode указывает на таблицу физических страниц в памяти, если файл отображается в физическую память. Также vnode содержит информацию о блокировках, которые были осуществлены ядром по отношению к отдельным частям файла. При каждом открытии процессом файла ядро создает в системной области памяти новую структуру «файл», которая описывает открытый файл и операции, которые процесс собирается производить с файлом. Поле «режим открытия файла» (read, write, append). Указатель на структуру vnode, смещение в файле при операциях чтения/записи.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]