Основы операционных систем Лекция 12 - 17.04.081 Лекция 12 Реализация файловой системы Введение Общая структура файловой системы Управление внешней памятью.

Презентация:



Advertisements
Похожие презентации
Операционные системы и среды. Схема устройства жесткого диска Дорожка N Сектор (блок) Пластина 1 Пластина 2 Цилиндр 0 сторона Диск – одна или несколько.
Advertisements

Физические модели баз данных Файловые структуры, используемые для хранения информации в базах данных.
Лекция 6. Способы адресации в микропроцессорных системах.
Демидов А.В г. Операционные системы Лекция 4 Работа с файлами.
Модели транзакций Параллельное выполнение транзакций.
Лекция 6 Лекция 6 Введение в обработку данных. Среда хранения и средства обработки информационных массивов. Эволюция и характеристика концепций обработки.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
Дисциплина: Операционные системы § 7. Организация памяти компьютера План: 1.Физическая память компьютера. 2.Логическая память компьютера. 3.Функции системы.
Память внешняя Энциклопедия учителя информатики Газета «Первое сентября»
1 БАЗЫ ДАННЫХ ФАЙЛЫ И ФАЙЛОВЫЕ СИСТЕМЫ. 2 ДО ФАЙЛОВЫХ СИСТЕМ Данные Управление ПРОГРАММА 2 Данные Управление ПРОГРАММА 3 Данные Управление ПРОГРАММА 1.
Операционные системы Файловые системы (часть 1) 1.Базовые методы организации ФС 1.1.Общие концепции Структурная организация файлов Атрибуты.
Основные виды ресурсов и возможности их разделения.
Модели транзакций Журнализация и буферизация. Зачем нужна буферизация Если бы запись об изменении базы данных, которая должна поступить в журнал при выполнении.
Выполнила: Калашникова Екатерина 11 класс 2008 г..
Лекция 6 Понятие операционных систем Учебные вопросы: 1. Характеристики ОС 2. Свободные и проприетарные ОС.
Логическая структура носителя информации. ЛОГИЧЕСКАЯ СТРУКТУРА НОСИТЕЛЯ ИНФОРМАЦИИ Логическая структура носителя информации в файловой системе FAT имеет.
Форматирование и дефрагментация диска.. Форматирование – создание физической и логической структуры диска Формирование физической структуры диска состоит.
«Особенности файловой системы WinFS» Сравнение с предыдущими файловыми системами.
1. Теоретические основы операционных систем (планирование заданий и использования процессора, обеспечение программ средствами коммуникации и синхронизации,
Логическая структура носителя информации. ЛОГИЧЕСКАЯ СТРУКТУРА НОСИТЕЛЯ ИНФОРМАЦИИ Логическая структура носителя информации в файловой системе FAT имеет.
Транксрипт:

Основы операционных систем Лекция Лекция 12 Реализация файловой системы Введение Общая структура файловой системы Управление внешней памятью Реализация каталогов Монтирование файловых систем Связывание файлов Кооперация процессов при работе с файлами Hадежность файловой системы Производительность файловой системы Реализация некоторых операций над файлами Современные архитектуры файловых систем Заключение

Основы операционных систем Лекция Введение (1) Реализация файловой системы связана с такими вопросами, как поддержка понятия логического блока диска связывание имени файла и блоков его данных совместное использование файлов управления дисковым пространством

Основы операционных систем Лекция Введение (2) Для организации хранения информации на диске пользователь вначале обычно выполняет его форматирование, выделяя на нем место для структур данных, которые описывают состояние файловой системы в целом Затем пользователь создает нужную ему структуру каталогов, которые, по существу, являются списками вложенных каталогов и собственно файлов Наконец, он заполняет дисковое пространство файлами, приписывая их тому или иному каталогу ОС должна предоставить в распоряжение пользователя совокупность системных вызовов, которые обеспечивают его необходимыми сервисами

Основы операционных систем Лекция Введение (3) Кроме того, файловые службы могут решать проблемы проверки и сохранения целостности файловой системы проблемы повышения производительности и ряд других

Основы операционных систем Лекция Общая структура файловой системы (1) Система хранения данных на дисках может быть структурирована следующим образом

Основы операционных систем Лекция Общая структура файловой системы (2) Оборудование Магнитные диски с подвижными головками - основные устройства внешней памяти, представляющие собой пакеты магнитных пластин (поверхностей), между которыми на одном рычаге двигается пакет магнитных головок Шаг движения пакета головок является дискретным, и каждому положению пакета головок логически соответствует цилиндр магнитного диска Цилиндры делятся на дорожки, и каждая дорожка размечается на одно и то же количество блоков (секторов) таким образом, что в каждый блок можно записать по максимуму одно и то же число байтов.

Основы операционных систем Лекция Общая структура файловой системы (3) Оборудование Для обмена с магнитным диском на уровне аппаратуры нужно указать номер цилиндра, номер поверхности, номер блока на соответствующей дорожке и число байтов, которое нужно записать или прочитать от начала этого блока Таким образом, диски могут быть разбиты на блоки фиксированного размера, и можно непосредственно получить доступ к любому блоку (организовать прямой доступ к файлам).

Основы операционных систем Лекция Общая структура файловой системы (3) Система ввода-вывода Система ввода-вывода предоставляет в распоряжение более высокоуровневого компонента ОС - файловой системы - используемое дисковое пространство в виде непрерывной последовательности блоков фиксированного размера Система ввода-вывода имеет дело с физическими блоками диска, которые характеризуются адресом, например диск 2, цилиндр 75, сектор 11

Основы операционных систем Лекция Общая структура файловой системы (4) Система ввода-вывода Файловая система имеет дело с логическими блоками, каждый из которых имеет номер (от 0 или 1 до N) Размер логических блоков файла совпадает или является кратным размеру физического блока диска и может быть задан равным размеру страницы виртуальной памяти, поддерживаемой аппаратурой компьютера совместно с операционной системой

Основы операционных систем Лекция Общая структура файловой системы (5) Система ввода-вывода В структуре системы управления файлами можно выделить базисную подсистему, которая отвечает за выделение дискового пространства конкретным файлам И более высокоуровневую логическую подсистему, которая использует структуру дерева директорий для предоставления модулю базисной подсистемы необходимой ей информации, исходя из символического имени файла Она также ответственна за авторизацию доступа к файлам

Основы операционных систем Лекция Общая структура файловой системы (6) Интерфейс Стандартный запрос на открытие (open) или создание (create) файла поступает от прикладной программы к логической подсистеме Логическая подсистема, используя структуру директорий, проверяет права доступа и вызывает базовую подсистему для получения доступа к блокам файла После этого файл считается открытым, он содержится в таблице открытых файлов, и прикладная программа получает в свое распоряжение дескриптор этого файла Дескриптор файла является ссылкой на файл в таблице открытых файлов и используется в запросах прикладной программы на чтение-запись

Основы операционных систем Лекция Общая структура файловой системы (7) Интерфейс Запись в таблице открытых файлов указывает через систему выделения блоков диска на блоки данного файла Если к моменту открытия файл уже используется другим процессом, то есть содержится в таблице открытых файлов, то после проверки прав доступа к файлу может быть организован совместный доступ Новому процессу также возвращается дескриптор - ссылка на файл в таблице открытых файлов Далее рассмотрим работу других важных системных вызовов

Основы операционных систем Лекция Управление внешней памятью (1) Прежде чем описывать структуру данных файловой системы на диске, необходимо рассмотреть алгоритмы выделения дискового пространства и способы учета свободной и занятой дисковой памяти Эти задачи связаны между собой

Основы операционных систем Лекция Управление внешней памятью (2) Методы выделения дискового пространства Ключевым является вопрос, какой тип структур используется для учета отдельных блоков файла, то есть способ связывания файлов с блоками диска В ОС используется несколько методов выделения файлу дискового пространства Для каждого из методов запись в каталоге, соответствующая символьному имени файла, содержит указатель, следуя которому можно найти все блоки данного файла

Основы операционных систем Лекция Управление внешней памятью (3) Методы выделения дискового пространства Выделение непрерывной последовательностью блоков Простейший способ - хранить каждый файл как непрерывную последовательность блоков диска Файл характеризуется адресом и длиной (в блоках) Файл, стартующий с блока b, занимает затем блоки b+1, b+2,... b+n-1

Основы операционных систем Лекция Управление внешней памятью (4) Методы выделения дискового пространства Эта схема имеет два преимущества Во-первых, ее легко реализовать, так как выяснение местонахождения файла сводится к вопросу, где находится первый блок Во-вторых, она обеспечивает хорошую производительность, так как целый файл может быть считан за одну дисковую операцию

Основы операционных систем Лекция Управление внешней памятью (5) Методы выделения дискового пространства Использовалось в ОС IBM/CMS, в ОС RSX-11 (для выполняемых файлов) Способ распространен мало В процессе эксплуатации диск представляет собой некоторую совокупность свободных и занятых фрагментов Не всегда имеется подходящий по размеру свободный фрагмент для нового файла Проблема непрерывного расположения может рассматриваться как частный случай более общей проблемы выделения блока нужного размера из списка свободных блоков.

Основы операционных систем Лекция Управление внешней памятью (6) Методы выделения дискового пространства Типовыми решениями этой задачи являются стратегии первого подходящего, наиболее подходящего и наименее подходящего Как и в случае выделения нужного объема оперативной памяти в схеме с динамическими разделами, метод страдает от внешней фрагментации, в большей или меньшей степени, в зависимости от размера диска и среднего размера файла

Основы операционных систем Лекция Управление внешней памятью (7) Методы выделения дискового пространства Кроме того, непрерывное распределение внешней памяти неприменимо до тех пор, пока неизвестен максимальный размер файла Иногда размер выходного файла оценить легко (при копировании) Чаще это сделать трудно, особенно в тех случаях, когда размер файла меняется Если места не хватило, то пользовательская программа может быть приостановлена с учетом выделения дополнительного места для файла при последующем рестарте.

Основы операционных систем Лекция Управление внешней памятью (8) Методы выделения дискового пространства Некоторые ОС используют модифицированный вариант непрерывного выделения - основные блоки файла + резервные блоки Однако с выделением блоков из резерва возникают те же проблемы, так как приходится решать задачу выделения непрерывной последовательности блоков диска теперь уже из совокупности резервных блоков Единственным приемлемым решением перечисленных проблем является периодическое уплотнение содержимого внешней памяти, цель которого состоит в объединении свободных участков в один большой блок

Основы операционных систем Лекция Управление внешней памятью (9) Методы выделения дискового пространства Но это дорогостоящая операция, которую невозможно осуществлять слишком часто Таким образом, когда содержимое диска постоянно изменяется, данный метод нерационален Однако для стационарных файловых систем, например, для файловых систем компакт- дисков, он вполне пригоден

Основы операционных систем Лекция Управление внешней памятью (10) Методы выделения дискового пространства Связный список Внешняя фрагментация может быть устранена за счет представления файла в виде связного списка блоков диска

Основы операционных систем Лекция Управление внешней памятью (11) Методы выделения дискового пространства Запись в директории содержит указатель на первый и последний блоки файла (иногда используется специальный знак конца файла - EOF) Каждый блок содержит указатель на следующий блок Внешняя фрагментация отсутствует Для удовлетворения запроса может быть использован любой свободный блок Нет необходимости декларировать размер файла в момент создания Файл может расти неограниченно

Основы операционных систем Лекция Управление внешней памятью (12) Методы выделения дискового пространства Имеется несколько существенных недостатков. При прямом доступе к файлу для поиска i-го блока нужно осуществить несколько обращений к диску, последовательно считывая блоки от 1 до i-1 Теряются все преимущества прямого доступа к файлу. Во-вторых, данный способ не очень надежен Наличие дефектного блока в списке приводит к потере информации в оставшейся части файла и потенциально к потере дискового пространства, отведенного под этот файл

Основы операционных систем Лекция Управление внешней памятью (13) Методы выделения дискового пространства Наконец, для указателя на следующий блок внутри блока нужно выделить место, что не всегда удобно Емкость блока, традиционно являющаяся степенью двойки перестает быть степенью двойки, так как указатель отбирает несколько байтов. Поэтому метод связного списка обычно в чистом виде не используется

Основы операционных систем Лекция Управление внешней памятью (14) Методы выделения дискового пространства Вариант - хранить указатели в индексной таблице в памяти, таблице отображения файлов (FAT - file allocation table) Использовалось в MS-DOS, OS/2, MS Windows

Основы операционных систем Лекция Управление внешней памятью (15) Методы выделения дискового пространства Существенно, что запись в каталоге содержит только ссылку на первый блок Далее при помощи FAT можно найти блоки файла независимо от его размера В строках FAT, соответствующих последним блокам файлов, обычно записывается граничное значение EOF Достоинство подхода в том, что по FAT можно судить о физическом соседстве блоков, располагающихся на диске, и при выделении нового блока можно легко найти свободный блок диска, находящийся поблизости от других блоков данного файла Минусом схемы может быть необходимость хранения в памяти этой довольно большой таблицы

Основы операционных систем Лекция Управление внешней памятью (16) Методы выделения дискового пространства Индексные узлы С каждым файлом связывается таблица, индексный узел (i-node), в которой содержатся атрибуты и дисковые адреса блоков файла Запись в каталоге содержит адрес индексного блока По мере заполнения файла заполняется и i- node

Основы операционных систем Лекция Управление внешней памятью (17) Методы выделения дискового пространства Широко распространено и поддерживает как последовательный, так и прямой доступ к файлу. Обычно применяется комбинация одноуровневого и многоуровневых индексов Первые несколько адресов блоков файла хранятся непосредственно в индексном узле Для больших файлов один из адресов индексного узла указывает на блок косвенной адресации Если не хватает, используется блок двойной косвенной адресации Если не хватает, используется блок тройной косвенной адресации

Основы операционных систем Лекция Управление внешней памятью (18) Методы выделения дискового пространства Схема используется в файловых системы Unix (а также файловые системы HPFS, NTFS и др.) При фиксированном, относительно небольшом размере индексного узла поддерживаться работа с файлами, размер которых может меняться от нескольких байтов до нескольких гигабайтов Для маленьких файлов используется только прямая адресация, обеспечивающая максимальную производительность

Основы операционных систем Лекция Управление внешней памятью (18) Управление свободным и занятым дисковым пространством Дисковое пространство, не выделенное ни одному файлу, также должно быть управляемым В современных ОС используется несколько способов учета используемого места на диске Рассмотрим наиболее распространенные

Основы операционных систем Лекция Управление внешней памятью (19) Управление свободным и занятым дисковым пространством Учет при помощи организации битового вектора Часто список свободных блоков диска реализован в виде битового вектора (bit map или bit vector) Каждый блок представлен одним битом, принимающим значение 0 или 1, в зависимости от того, занят он или свободен Главное преимущество этого подхода состоит в том, что он относительно прост и эффективен при нахождении первого свободного блока или n последовательных блоков на диске

Основы операционных систем Лекция Управление внешней памятью (20) Управление свободным и занятым дисковым пространством Многие компьютеры имеют инструкции манипулирования битами, которые могут использоваться для этой цели Hапример, в компьютерах семейств Intel и Motorola имеются инструкции, при помощи которых можно легко найти первый единичный бит в слове. Данный метод учета свободных блоков используется в Apple Macintosh

Основы операционных систем Лекция Управление внешней памятью (21) Управление свободным и занятым дисковым пространством Хотя размер битового вектора наименьший из всех возможных структур, такой вектор может оказаться большого размера Поэтому метод эффективен, только если битовый вектор помещается в памяти целиком, что возможно лишь для относительно небольших дисков Иногда, если битовый вектор становится слишком большим, для ускорения поиска в нем его разбивают на регионы и организуют сводные структуры данных, содержащие сведения о количестве свободных блоков для каждого региона

Основы операционных систем Лекция Управление внешней памятью (22) Управление свободным и занятым дисковым пространством Учет при помощи организации связного списка Другой подход - связать в список все свободные блоки, размещая указатель на первый свободный блок в специально отведенном месте диска, попутно кэшируя в памяти эту информацию. Подобная схема не всегда эффективна Для просмотра списка нужно выполнить много обращений к диску Правда, как правило, требуется только первый свободный блок

Основы операционных систем Лекция Управление внешней памятью (23) Управление свободным и занятым дисковым пространством Иногда прибегают к модификации подхода связного списка, организуя хранение адресов n свободных блоков в первом свободном блоке Первые n-1 этих блоков действительно используются Последний блок содержит адреса других n блоков и т. д. Существуют и другие методы, например, свободное пространство можно рассматривать как файл и вести для него соответствующий индексный узел

Основы операционных систем Лекция Управление внешней памятью (24) Размер блока Размер логического блока играет важную роль В некоторых системах (Unix) он может быть задан при форматировании диска Небольшой размер блока приводит к тому, что каждый файл содержит много блоков Чтение блока осуществляется с задержками на поиск и вращение, таким образом, файл из многих блоков будет читаться медленно Большие блоки обеспечивают более высокую скорость обмена с диском, но из-за внутренней фрагментации снижается процент полезного дискового пространства

Основы операционных систем Лекция Управление внешней памятью (25) Размер блока Для систем со страничной организацией памяти характерна сходная проблема с размером страницы. Исследования показали, что большинство файлов имеют небольшой размер В Unix 85% файлов имеют размер менее 8 Кбайт и 48% - менее 1 Кбайта. В системах с виртуальной памятью желательно, чтобы единицей пересылки диск-память была страница (наиболее распространенный размер страниц памяти - 4 Кбайта) Отсюда обычный компромиссный выбор блока размером 512 байт, 1 Кбайт, 2 Кбайт, 4 Кбайт

Основы операционных систем Лекция Структура файловой системы на диске (1) Структура служебных данных типовой файловой системы, например Unix, на одном из разделов диска состоит из четырех основных частей

Основы операционных систем Лекция Структура файловой системы на диске (2) В начале раздела находится суперблок, содержащий общее описание файловой системы: тип файловой системы размер файловой системы в блоках размер массива индексных узлов размер логического блока Структуры данных создаются на диске в результате его форматирования Их наличие позволяет обращаться к данным на диске как к файловой системе

Основы операционных систем Лекция Структура файловой системы на диске (3) В современных файловых системах ОС для повышения надежности поддерживается несколько копий суперблока В некоторых версиях Unix суперблок включал структуры данных, управляющие распределением дискового пространства; суперблок непрерывно подвергался модификации, что снижало надежность файловой системы в целом Выделение структур данных, описывающих дисковое пространство, в отдельную часть является более правильным решением

Основы операционных систем Лекция Структура файловой системы на диске (4) Массив индексных узлов (ilist) содержит список индексов, соответствующих файлам данной файловой системы Размер массива индексных узлов определяется администратором при установке системы Максимальное число файлов, которые могут быть созданы в файловой системе, определяется числом доступных индексных узлов

Основы операционных систем Лекция Структура файловой системы на диске (5) В блоках данных хранятся реальные данные файлов Размер логического блока данных задавается при форматировании файловой системы Заполнение диска содержательной информацией предполагает использование блоков хранения данных для файлов каталогов и обычных файлов При этом модифицируются массив индексных узлов и данные, описывающие пространство диска Один блок данных может принадлежать одному и только одному файлу в файловой системе

Основы операционных систем Лекция Реализация каталогов (1) Каталог - это файл, имеющий вид таблицы и хранящий список входящих в него файлов или каталогов Основная задача каталогов - поддержка древовидной структуры файловой системы Запись в каталоге имеет специфичный для данной ОС формат, зачастую неизвестный пользователю Поэтому блоки данных файла-директории заполняются не через операции записи, а при помощи специальных системных вызовов (например, создание файла)

Основы операционных систем Лекция Реализация каталогов (2) Для доступа к файлу ОС использует путь (pathname), сообщенный пользователем Запись в каталоге связывает имя файла или подкаталога с блоками данных на диске Эта ссылка может быть номером первого блока или номером индексного узла

Основы операционных систем Лекция Реализация каталогов (3) Когда система открывает файл, она ищет его имя в каталоге Затем из записи в каталоге или из структуры, на которую указывает эта запись, извлекаются атрибуты и адреса блоков файла на диске Эта информация помещается в системную таблицу в главной памяти Во всех последующих ссылках на данный файл используется эта информация

Основы операционных систем Лекция Реализация каталогов (4) Атрибуты файла можно хранить непосредственно в записи в каталоге, как показано на рисунке Однако для организации совместного доступа к файлам удобнее хранить атрибуты в индексном узле, как это делается в Unix

Основы операционных систем Лекция Реализация каталогов (5) Примеры реализации Каталоги в ОС MS-DOS Каталоги могут содержать подкаталоги, что позволяет конструировать произвольное дерево каталогов Номер первого блока используется в качестве индекса в FAT

Основы операционных систем Лекция Реализация каталогов (6) Примеры реализации Каталоги в ОС Unix Запись содержит имя файла и номер его i-node Остальная информация о файле находится в i-node В более поздних версиях Unix форма записи претерпела ряд изменений, но суть та же

Основы операционных систем Лекция Реализация каталогов (6) Поиск в каталоге Список файлов в каталоге обычно не является упорядоченным по именам файлов Поэтому правильный выбор алгоритма поиска имени файла в директории имеет большое влияние на эффективность и надежность файловых систем

Основы операционных систем Лекция Реализация каталогов (7) Поиск в каталоге Линейный поиск Каталог просматривается с самого начала, пока не встретится нужное имя файла Это наименее эффективный способ поиска, но в большинстве случаев он работает с приемлемой производительностью Авторы Unix утверждали, что линейного поиска вполне достаточно На фоне относительно медленного доступа к диску некоторые задержки, возникающие в процессе сканирования списка, несущественны

Основы операционных систем Лекция Реализация каталогов (8) Поиск в каталоге Метод прост, но требует временных затрат Для создания нового файла вначале нужно проверить каталог на наличие такого же имени Затем имя нового файла вставляется в конец каталога (если файл с таким же именем не существует) Для удаления файла нужно также выполнить поиск его имени в списке и пометить запись как неиспользуемую

Основы операционных систем Лекция Реализация каталогов (9) Поиск в каталоге Реальный недостаток данного метода - последовательный поиск файла Информация о структуре каталога используется часто, и неэффективный способ поиска будет заметен пользователями Можно свести поиск к бинарному, если отсортировать список файлов Однако это усложнит создание и удаление файлов, так как требуется перемещение большого объема информации

Основы операционных систем Лекция Реализация каталогов (10) Поиск в каталоге Хеш-таблица Имена файлов также хранятся в каталоге в виде линейного списка, но дополнительно используется хеш-таблица Хеш-таблица, точнее, хеш-функция, позволяет по имени файла получить указатель на имя файла в списке Таким образом, можно существенно уменьшить время поиска

Основы операционных систем Лекция Реализация каталогов (11) Поиск в каталоге В результате хеширования могут возникать коллизии, то есть ситуации, когда функция хеширования, примененная к разным именам файлов, дает один и тот же результат Обычно имена таких файлов объединяют в связные списки, предполагая в дальнейшем осуществление в них последовательного поиска нужного имени файла Выбор подходящего алгоритма хеширования позволяет свести к минимуму число коллизий

Основы операционных систем Лекция Реализация каталогов (12) Поиск в каталоге Однако всегда есть вероятность неблагоприятного исхода, когда непропорционально большому числу имен файлов функция хеширования ставит в соответствие один и тот же результат В таком случае преимущество использования этой схемы по сравнению с последовательным поиском практически утрачивается

Основы операционных систем Лекция Реализация каталогов (13) Поиск в каталоге Помимо описанных методов поиска имени файла в каталоге существуют и другие методы В качестве примера можно привести организацию поиска в каталогах файловой системы NTFS при помощи B- дерева

Основы операционных систем Лекция Монтирование файловых систем (1) Системный вызов mount связывает файловую систему из указанного раздела на диске с существующей иерархией файловых систем umount выключает файловую систему из иерархии mount дает пользователям возможность обращаться к данным в дисковом разделе как к файловой системе, а не как к последовательности дисковых блоков

Основы операционных систем Лекция Монтирование файловых систем (2) Пользователь (в Unix суперпользователь) сообщает ОС имя устройства и место в файловой структуре (имя пустого каталога), куда нужно присоединить файловую систему (точка монтирования)

Основы операционных систем Лекция Монтирование файловых систем (3) Hапример, в ОС Unix вызов mount имеет вид: mount (special pathname,directory pathname,options) special pathname - имя специального файла устройства, соответствующего дисковому разделу с монтируемой файловой системой directory pathname - каталог в существующей иерархии, где будет монтироваться файловая система options указывает, следует ли монтировать файловую систему "только для чтения" (не будут выполняться вызовы write и creat)

Основы операционных систем Лекция Монтирование файловых систем (4) ОС должна убедиться, что устройство содержит файловую систему ожидаемого формата с суперблоком, списком индексов и корневым индексом Некоторые ОС осуществляют монтирование автоматически, как только встретят диск в первый раз (жесткие диски на этапе загрузки, гибкие - когда они вставлены в дисковод) Если файловая система на устройстве имеется, она монтируется на корневом уровне, при этом к цепочке имен абсолютного имени файла (pathname) добавляется буква раздела

Основы операционных систем Лекция Монтирование файловых систем (5) Ядро поддерживает таблицу монтирования с записями о каждой смонтированной файловой системе В каждой записи содержится информация о вновь смонтированном устройстве, о его суперблоке и корневом каталоге и точке монтирования Занесение информации в таблицу монтирования производится немедленно Иначе может возникнуть конфликт между двумя процессами, например, если монтирующий процесс приостановлен для открытия устройства или считывания суперблока файловой системы, а другой процесс попытается смонтировать файловую систему

Основы операционных систем Лекция Монтирование файловых систем (6) Наличие в логической структуре файлового архива точек монтирования требует аккуратной реализации алгоритмов, осуществляющих навигацию по каталогам Точку монтирования можно пересечь двумя способами: из файловой системы, где производится монтирование, в файловую систему, которая монтируется, и в обратном направлении Алгоритмы поиска файлов должны предусматривать ситуации, в которых очередной компонент пути к файлу является точкой монтирования и вместо анализа индексного узла очередного каталога нужно обрабатывать суперблок монтированной системы

Основы операционных систем Лекция Связывание файлов (1) Иерархическая организация, положенная в основу древовидной структуры файловой системы современных ОС, не предусматривает выражения отношений, в которых потомки связываются более чем с одним предком Такая негибкость частично устраняется возможностью реализации связывания файлов, или организации линков (link)

Основы операционных систем Лекция Связывание файлов (2) Ядро позволяет пользователю связывать каталоги, упрощая написание программ, требующих пересечения дерева файловой системы

Основы операционных систем Лекция Связывание файлов (3) Часто имеет смысл хранить под разными именами одну и ту же команду (выполняемый файл) Например, выполняемый файл традиционного текстового редактора ОС Unix vi обычно может вызываться под именами ex, edit, vi, view и vedit файловой системы Соединение между каталогом и разделяемым файлом называется "связью" или "ссылкой" (link) Дерево файловой системы превращается в циклический граф. Это удобно, но создает ряд дополнительных проблем

Основы операционных систем Лекция Связывание файлов (4) Простейший способ реализовать связывание файла - просто дублировать информацию о нем в обеих директориях Но может возникнуть проблема совместимости в случае, если владельцы этих директорий попытаются независимо друг от друга изменить содержимое файла Например, в ОС CP/M запись в директории о файле непосредственно содержит адреса дисковых блоков Поэтому копии тех же дисковых адресов должны быть сделаны и в другой директории, куда файл линкуется Если один из пользователей что-то добавляет к файлу, новые блоки будут перечислены только у него в директории и не будут "видны" другому пользователю

Основы операционных систем Лекция Связывание файлов (5) Проблема такого рода может быть решена двумя способами Первый из них - так называемая жесткая связь (hard link) Если блоки данных файла перечислены не в каталоге, а в небольшой структуре данных (например, в индексном узле), связанной собственно с файлом, то второй пользователь может связаться непосредственно с этой, уже существующей структурой

Основы операционных систем Лекция Связывание файлов (6) Альтернативное решение - создание нового файла, который содержит путь к связываемому файлу Такой подход называется символическим связыванием (soft или symbolic link) В соответствующем каталоге создается элемент, в котором имени связи сопоставляется некоторое имя файла (этот файл даже не обязан существовать к моменту создания символической связи) Для символической связи может создаваться отдельный индексный узел и даже заводиться отдельный блок данных для хранения потенциально длинного имени файла

Основы операционных систем Лекция Связывание файлов (7) Каждый из этих методов имеет свои минусы В случае жесткой связи возникает необходимость поддержки счетчика ссылок на файл для корректной реализации операции удаления файла Например, в Unix такой счетчик является одним из атрибутов, хранящихся в индексном узле Удаление файла одним из пользователей уменьшает количество ссылок на файл на 1 Реальное удаление файла происходит, когда число ссылок на файл становится равным 0

Основы операционных систем Лекция Связывание файлов (8) В случае символического связывания такая проблема не возникает, так как только реальный владелец имеет ссылку на индексный узел файла Если владелец удаляет файл, то попытки других пользователей работать с ним закончатся провалом Удаление символической связи на файл не влияет Проблема организации символической связи - потенциальное снижение скорости доступа к файлу Файл символического линка хранит путь к файлу, содержащий список вложенных каталогов, для прохождения по которому необходимо осуществить несколько обращений к диску

Основы операционных систем Лекция Связывание файлов (9) Символическая связь имеет то преимущество, что может использоваться для организации распределенных файловых систем Циклический граф - структура более гибкая, нежели простое дерево, но требует большой аккуратности Полное устранение циклов при поиске - довольно трудоемкая процедура, выполняемая специальными утилитами и связанная с многократным обходом каталогов файловой системы

Основы операционных систем Лекция Кооперация процессов при работе с файлами (1) Файл - разделяемый ресурс Как и в случае любого совместно используемого ресурса, процессы должны синхронизировать доступ к совместно используемым файлам, каталогам Например, если несколько пользователей одновременно редактируют какой-либо файл и не принято специальных мер, то результат будет непредсказуем и зависит от того, в каком порядке осуществлялись записи в файл Между двумя операциями read одного процесса другой процесс может модифицировать данные, что для многих приложений неприемлемо

Основы операционных систем Лекция Кооперация процессов при работе с файлами (2) Простейшее решение проблемы - предоставить возможность одному из процессов захватить файл, то есть блокировать доступ к разделяемому файлу других процессов на все время, пока файл остается открытым для данного процесса Однако это было бы недостаточно гибко и не соответствовало бы характеру поставленной задачи. Рассмотрим вначале грубый подход, то есть временный захват пользовательским процессом файла или записи (части файла между указанными позициями)

Основы операционных систем Лекция Кооперация процессов при работе с файлами (3) Системный вызов, позволяющий установить и проверить блокировки на файл, является неотъемлемым атрибутом современных многопользовательских ОС В принципе, было бы логично связать синхронизацию доступа к файлу как к единому целому с системным вызовом open (открытие файла в режиме записи или обновления могло бы означать его монопольную блокировку соответствующим процессом, а открытие в режиме чтения - совместную блокировку) Так поступают во многих операционных системах В ОС Unix это не так, что имеет исторические причины

Основы операционных систем Лекция Кооперация процессов при работе с файлами (4) В первой версии системы Unix механизм захвата файла отсутствовал Система позволяла любому числу процессов одновременно открывать один и тот же файл в любом режиме без синхронизации Вся ответственность за корректность совместной обработки файла ложилась на использующие его процессы, и система даже не предоставляла каких- либо особых средств для синхронизации доступа процессов к файлу Впоследствии в версию V системы были включены механизмы захвата файла и записи, базирующиеся на системном вызове fcntl

Основы операционных систем Лекция Кооперация процессов при работе с файлами (5) Допускаются два варианта синхронизации: с ожиданием, когда требование блокировки может привести к откладыванию процесса до того момента, когда это требование может быть удовлетворено, и без ожидания Установленные блокировки относятся только к тому процессу, который их установил, и не наследуются процессами-потомками этого процесса Если некоторый процесс пользуется возможностями системного вызова fcntl, другие процессы могут работать с тем файлом безо всякой синхронизации Дело группы процессов договориться о способе синхронизации параллельного доступа

Основы операционных систем Лекция Кооперация процессов при работе с файлами (6) Более тонкий подход заключается в прозрачной для пользователя блокировке отдельных структур ядра, отвечающих за работу с файлами В ОС Unix во время системного вызова, осуществляющего операцию с файлом, как правило, происходит блокирование индексного узла, содержащего адреса блоков данных файла Может показаться, что организация блокировок или запрета более чем одному процессу работать с файлом во время выполнения системного вызова является излишней, так как в подавляющем большинстве случаев выполнение системных вызовов и так не прерывается

Основы операционных систем Лекция Кооперация процессов при работе с файлами (7) Однако в данном случае это не совсем так Операции чтения и записи занимают продолжительное время и лишь инициируются центральным процессором, а осуществляются по независимым каналам, поэтому установка блокировок на время системного вызова является гарантией атомарности операций чтения и записи Оказывается достаточным заблокировать один из буферов кэша, в заголовке которого ведется список процессов, ожидающих освобождения данного буфера В соответствии с семантикой Unix изменения, сделанные одним пользователем, становятся "видны" другому пользователю, который держит данный файл открытым одновременно с первым

Основы операционных систем Лекция Кооперация процессов при работе с файлами (8) Примеры разрешения коллизий и тупиковых ситуаций Логика работы системы в сложных ситуациях может проиллюстрировать особенности организации мультидоступа Рассмотрим в качестве примера образование потенциального тупика при создании связи (link), когда разрешен совместный доступ к файлу Два процесса, выполняющие одновременно следующие функции: процесс A: link("a/b/c/d","e/f/g") процесс B: link("e/f","a/b/c/d/ee") могут зайти в тупик

Основы операционных систем Лекция Кооперация процессов при работе с файлами (9) Примеры разрешения коллизий и тупиковых ситуаций Предположим, что процесс A обнаружил индекс файла "a/b/c/d" в тот самый момент, когда процесс B обнаружил индекс файла "e/f" "В тот же самый момент" означает, что системой достигнуто состояние, при котором каждый процесс получил искомый индекс Когда теперь процесс A попытается получить индекс файла "e/f", он приостановит свое выполнение до тех пор, пока индекс файла "f" не освободится В то же время процесс B пытается получить индекс каталога "a/b/c/d" и приостанавливается в ожидании освобождения индекса файла "d« Процесс A будет удерживать заблокированным индекс, нужный процессу B, а процесс B, в свою очередь, будет удерживать заблокированным индекс, необходимый процессу A

Основы операционных систем Лекция Кооперация процессов при работе с файлами (10) Примеры разрешения коллизий и тупиковых ситуаций Для предотвращения этого классического примера взаимной блокировки в файловой системе принято, чтобы ядро освобождало индексный узел исходного файла после увеличения значения счетчика связей Тогда, поскольку первый из ресурсов (индексный узел) свободен при обращении к следующему ресурсу, взаимной блокировки не происходит

Основы операционных систем Лекция Кооперация процессов при работе с файлами (11) Примеры разрешения коллизий и тупиковых ситуаций Поводов для нежелательной конкуренции между процессами много, особенно при удалении имен каталогов Предположим, что один процесс пытается найти данные файла по его полному символическому имени, последовательно проходя компонент за компонентом, а другой процесс удаляет каталог, имя которого входит в путь поиска

Основы операционных систем Лекция Кооперация процессов при работе с файлами (12) Примеры разрешения коллизий и тупиковых ситуаций Допустим, что процесс A делает разбор имени "a/b/c/d" и приостанавливается во время получения индексного узла для файла "c" Он может приостановиться при попытке заблокировать индексный узел или при попытке обратиться к дисковому блоку, где этот индексный узел хранится Если процессу B нужно удалить связь для каталога с именем "c", он может приостановиться по той же самой причине, что и процесс A

Основы операционных систем Лекция Кооперация процессов при работе с файлами (13) Примеры разрешения коллизий и тупиковых ситуаций Пусть ядро впоследствии решит возобновить процесс B раньше процесса A Прежде чем процесс A продолжит свое выполнение, процесс B завершится, удалив связь каталога "c" и его содержимое по этой связи Позднее процесс A попытается обратиться к несуществующему индексному узлу, который уже был удален Алгоритм поиска файла, проверяющий, что значение счетчика связей > нулю, должен сообщить об ошибке Можно привести и другие примеры, показывающие необходимость тщательного проектирования файловой системы для ее последующей надежной работы

Основы операционных систем Лекция Hадежность файловой системы (1) Жизнь полна неприятных неожиданностей, а разрушение файловой системы зачастую более опасно, чем разрушение компьютера Поэтому файловые системы должны разрабатываться с учетом подобной возможности Помимо очевидных решений, например своевременное дублирование информации (backup), файловые системы современных ОС содержат специальные средства для поддержки собственной совместимости

Основы операционных систем Лекция Hадежность файловой системы (2) Целостность файловой системы Важный аспект надежной работы файловой системы - контроль ее целостности В результате файловых операций блоки диска могут считываться в память, модифицироваться и затем записываться на диск Многие файловые операции затрагивают сразу несколько объектов файловой системы Копирование файла предполагает выделение ему блоков диска, формирование индексного узла, изменение содержимого каталога и т. д. В течение времени между этими шагами информация в файловой системе оказывается несогласованной

Основы операционных систем Лекция Hадежность файловой системы (3) Целостность файловой системы Если вследствие непредсказуемого останова системы на диске будут сохранены изменения только для части этих объектов, файловая система на диске может быть оставлена в несовместимом состоянии В результате могут возникнуть нарушения логики работы с данными, например появиться "потерянные" блоки диска, которые не принадлежат ни одному файлу и в то же время помечены как занятые, или, наоборот, блоки, помеченные как свободные, но в то же время занятые (на них есть ссылка в индексном узле) В современных ОС предусмотрены меры, которые позволяют свести к минимуму ущерб от порчи файловой системы и затем полностью или частично восстановить ее целостность

Основы операционных систем Лекция Hадежность файловой системы (4) Целостность файловой системы Порядок выполнения операций Для правильного функционирования файловой системы значимость отдельных данных неравноценна Искажение содержимого пользовательских файлов не приводит к серьезным (с точки зрения целостности файловой системы) последствиям, тогда как несоответствия в файлах, содержащих управляющую информацию, могут быть катастрофическими Поэтому должен быть тщательно продуман порядок выполнения операций со структурами данных файловой системы

Основы операционных систем Лекция Hадежность файловой системы (5) Целостность файловой системы Рассмотрим пример создания жесткой связи для файла Для этого файловой системе необходимо создать новую запись в каталоге, указывающую на индексный узел файла, и увеличить счетчик связей в индексном узле Если отказ произошел между 1-й и 2-й операциями, то в каталогах файловой системы будут существовать два имени файла, адресующих индексный узел со значением счетчика связей, равному 1 Если теперь будет удалено одно из имен, это приведет к удалению файла как такового Если же порядок операций изменен, и отказ произошел между 1-й и 2-й операциями, файл будет иметь несуществующую жесткую связь, но существующая запись в каталоге будет правильной Хотя это тоже является ошибкой, но ее последствия менее серьезны, чем в предыдущем случае

Основы операционных систем Лекция Hадежность файловой системы (6) Целостность файловой системы Журнализация Другим средством поддержки целостности является журнализация Последовательность действий с объектами во время файловой операции протоколируется, и если произошел останов системы, то, имея в наличии протокол, можно осуществить откат системы назад в исходное целостное состояние, в котором она пребывала до начала операции Подобная избыточность может стоить дорого, но она оправданна, так как в случае отказа позволяет реконструировать потерянные данные

Основы операционных систем Лекция Hадежность файловой системы (7) Целостность файловой системы Для отката необходимо, чтобы для каждой протоколируемой в журнале операции существовала обратная В файловых системах протоколируются не все изменения, а лишь изменения метаданных (индексных узлов, записей в каталогах и др.) Изменения в данных пользователя в протокол не заносятся Кроме того, если протоколировать изменения пользовательских данных, то этим будет нанесен серьезный ущерб производительности системы, поскольку кэширование потеряет смысл

Основы операционных систем Лекция Hадежность файловой системы (8) Целостность файловой системы Журнализация реализована в NTFS, Ext3FS, ReiserFS и других системах Чтобы подчеркнуть сложность задачи, нужно отметить, что существуют не вполне очевидные проблемы, связанные с процедурой отката Например, отмена одних изменений может затрагивать данные, уже использованные другими файловыми операциями Это означает, что такие операции также должны быть отменены Данная проблема получила название каскадного отката транзакций

Основы операционных систем Лекция Hадежность файловой системы (9) Целостность файловой системы Проверка целостности файловой системы при помощи утилит Если же нарушение все же произошло, то для устранения проблемы несовместимости можно прибегнуть к утилитам (fsck, chkdsk, scandisk и др.), которые проверяют целостность файловой системы Они могут запускаться после загрузки или после сбоя и осуществляют многократное сканирование разнообразных структур данных файловой системы в поисках противоречий. Возможны также эвристические проверки, например, нахождение индексного узла, номер которого превышает их число на диске или поиск в пользовательских директориях файлов, принадлежащих суперпользователю К сожалению, не существует никаких средств, гарантирующих абсолютную сохранность информации в файлах; когда целостность информации нужно гарантировать с высокой степенью надежности, прибегают к дорогостоящим процедурам дублирования

Основы операционных систем Лекция Hадежность файловой системы (10) Управление "плохими" блоками Наличие дефектных блоков на диске - обычное дело Внутри блока наряду с данными хранится контрольная сумма данных Под "плохими" блоками обычно понимают блоки диска, для которых вычисленная контрольная сумма считываемых данных не совпадает с хранимой контрольной суммой Дефектные блоки обычно появляются в процессе эксплуатации Иногда они известны уже при поставке, так как очень затруднительно для поставщиков сделать диск полностью свободным от дефектов Рассмотрим два решения проблемы дефектных блоков - одно на уровне аппаратуры, другое на уровне ядра ОС

Основы операционных систем Лекция Hадежность файловой системы (11) Управление "плохими" блоками Первый способ - хранить список плохих блоков в контроллере диска Когда контроллер инициализируется, он читает плохие блоки и замещает дефектный блок резервным, помечая отображение в списке плохих блоков Все реальные запросы будут идти к резервному блоку Следует иметь в виду, что при этом механизм подъемника (наиболее распространенный механизм обработки запросов к блокам диска) будет работать неэффективно Дело в том, что существует стратегия очередности обработки запросов к диску

Основы операционных систем Лекция Hадежность файловой системы (12) Управление "плохими" блоками Стратегия диктует направление движения считывающей головки диска к нужному цилиндру Обычно резервные блоки размещаются на внешних цилиндрах Если плохой блок расположен на внутреннем цилиндре и контроллер осуществляет подстановку прозрачным образом, то кажущееся движение головки будет осуществляться к внутреннему цилиндру, а фактическое - к внешнему Это является нарушением стратегии и, следовательно, минусом данной схемы

Основы операционных систем Лекция Hадежность файловой системы (13) Управление "плохими" блоками Решение на уровне ОС может быть следующим Прежде всего, необходимо тщательно сконструировать файл, содержащий дефектные блоки Тогда они изымаются из списка свободных блоков Затем нужно каким-то образом скрыть этот файл от прикладных программ

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (1) Поскольку обращение к диску - операция относительно медленная, минимизация количества таких обращений - ключевая задача всех алгоритмов, работающих с внешней памятью Наиболее типичная техника повышения скорости работы с диском - кэширование

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (1) Кэширование Кэш диска представляет собой буфер в оперативной памяти, содержащий ряд блоков диска Если имеется запрос на чтение/запись блока диска, то сначала производится проверка на предмет наличия этого блока в кэше

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (2) Кэширование Если блок в кэше имеется, то запрос удовлетворяется из кэша, в противном случае запрошенный блок считывается в кэш с диска Сокращение количества дисковых операций оказывается возможным вследствие присущего ОС свойства локальности Аккуратная реализация кэширования требует решения нескольких проблем

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (3) Кэширование Во-первых, емкость буфера кэша ограничена Когда блок должен быть загружен в заполненный буфер кэша, возникает проблема замещения блоков, то есть отдельные блоки должны быть удалены из него Здесь работают те же стратегии и те же FIFO, Second Chance и LRU-алгоритмы замещения, что и при выталкивании страниц памяти

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (4) Кэширование Замещение блоков должно осуществляться с учетом их важности для файловой системы Блоки должны быть разделены на категории, например: блоки индексных узлов, блоки косвенной адресации, блоки директорий, заполненные блоки данных и т. д. В зависимости от принадлежности блока к той или иной категории можно применять к ним разную стратегию замещения

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (5) Кэширование Во-вторых, поскольку кэширование использует механизм отложенной записи, при котором модификация буфера не вызывает немедленной записи на диск, серьезной проблемой является "старение" информации в дисковых блоках, образы которых находятся в буферном кэше Несвоевременная синхронизация буфера кэша и диска может привести к очень нежелательным последствиям в случае отказов оборудования или программного обеспечения Поэтому стратегия и порядок отображения информации из кэша на диск должна быть тщательно продумана

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (6) Кэширование Так, блоки, существенные для совместимости файловой системы (блоки индексных узлов, блоки косвенной адресации, блоки каталогов), должны быть переписаны на диск немедленно, независимо от того, в какой части LRU-цепочки они находятся Необходимо тщательно выбрать порядок такого переписывания В Unix имеется для этого вызов SYNC, который заставляет все модифицированные блоки записываться на диск немедленно Для синхронизации содержимого кэша и диска периодически запускается фоновый процесс-демон Кроме того, можно организовать синхронный режим работы с отдельными файлами, задаваемый при открытии файла, когда все изменения в файле немедленно сохраняются на диске

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (7) Кэширование Наконец, проблема конкуренции процессов на доступ к блокам кэша решается ведением списков блоков, пребывающих в различных состояниях, и отметкой о состоянии блока в его дескрипторе Например, блок может быть заблокирован, участвовать в операции ввода-вывода, а также иметь список процессов, ожидающих освобождения данного блока

Основы операционных систем Лекция Производительность файловой системы Производительность файловой системы (8) Оптимальное размещение информации на диске Кэширование - не единственный способ увеличения производительности системы Другая важная техника - сокращение количества движений считывающей головки диска за счет разумной стратегии размещения информации Например, массив индексных узлов в Unix стараются разместить на средних дорожках Также имеет смысл размещать индексные узлы поблизости от блоков данных, на которые они ссылаются и т. д. Кроме того, рекомендуется периодически осуществлять дефрагментацию диска (сборку мусора), поскольку в популярных методиках выделения дисковых блоков (за исключением, может быть, FAT) принцип локальности не работает, и последовательная обработка файла требует обращения к различным участкам диска

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (1) В предыдущей лекции перечислены основные операции над файлами В данном разделе будет описан порядок работы некоторых системных вызовов для работы с файловой системой

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (2) Системные вызовы, работающие с символическим именем файла Системные вызовы, связывающие pathname с дескриптором файла Это функции создания и открытия файла Например, в ОС Unix fd = creat(pathname,modes); fd = open(pathname,flags,modes); Другие операции над файлами, такие как чтение, запись, позиционирование головок чтения-записи, воспроизведение дескриптора файла, установка параметров ввода-вывода, определение статуса файла и закрытие файла, используют значение полученного дескриптора файла. Рассмотрим работу системного вызова open

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (3) Системные вызовы, работающие с символическим именем файла Логическая файловая подсистема просматривает файловую систему в поисках файла по его имени Она проверяет права на открытие файла и выделяет открываемому файлу запись в таблице файлов Запись таблицы файлов содержит указатель на индексный узел открытого файла Ядро выделяет запись в личной (закрытой) таблице в адресном пространстве процесса, выделенном процессу (таблица эта называется таблицей пользовательских дескрипторов открытых файлов) и запоминает указатель на данную запись В роли указателя выступает дескриптор файла, возвращаемый пользователю

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (4) Системные вызовы, работающие с символическим именем файла Запись в таблице пользовательских файлов указывает на запись в глобальной таблице файлов Первые три пользовательских дескриптора (0, 1 и 2) именуются дескрипторами файлов стандартного ввода, стандартного вывода и стандартного файла ошибок

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (4) Системные вызовы, работающие с символическим именем файла Связывание файла Системная функция link связывает файл с новым именем в структуре каталогов файловой системы, создавая для существующего индекса новую запись в каталоге Синтаксис вызова функции link: link(source file name, target file name) Где source file name - существующее имя файла, а target file name - новое (дополнительное) имя, присваиваемое файлу после выполнения функции link

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (5) Системные вызовы, работающие с символическим именем файла Сначала ОС определяет местонахождение индекса исходного файла и увеличивает значение счетчика связей в индексном узле Затем ядро ищет файл с новым именем; если он существует, функция link завершается неудачно, и ядро восстанавливает прежнее значение счетчика связей, измененное ранее В противном случае ядро находит в родительском каталоге свободную запись для файла с новым именем, записывает в нее новое имя и номер индекса исходного файла

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (6) Системные вызовы, работающие с символическим именем файла Удаление файла В Unix системная функция unlink удаляет из каталога точку входа для файла Синтаксис вызова функции unlink: unlink(pathname) Если удаляемое имя является последней связью файла с каким- либо каталогом, ядро в итоге освобождает все блоки файла Однако если у файла было несколько связей, он остается все еще доступным под другими именами. Чтобы освободить дисковые блоки, ядро в цикле просматривает таблицу содержимого индексного узла, освобождая все блоки прямой адресации немедленно Что касается блоков косвенной адресации, то ядро освобождает все блоки, появляющиеся на различных уровнях косвенности, рекурсивно, причем в первую очередь освобождаются блоки с меньшим уровнем

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (7) Системные вызовы, работающие с файловым дескриптором Открытый файл может использоваться для чтения и записи последовательностей байтов Для этого поддерживаются два системных вызова read и write, работающие с файловым дескриптором (или handle в терминологии Microsoft), полученным при ранее выполненных системных вызовах open или creat

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (8) Системные вызовы, работающие с файловым дескриптором Функции ввода-вывода из файла Системный вызов read выполняет чтение обычного файла: number = read(fd,buffer,count) Где fd - дескриптор файла, возвращаемый функцией open, buffer - адрес структуры данных в пользовательском процессе, где будут размещаться считанные данные в случае успешного завершения выполнения функции read, count - количество байтов, которые пользователю нужно прочитать, number - количество фактически прочитанных байтов

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (9) Системные вызовы, работающие с файловым дескриптором Синтаксис вызова системной функции write (писать): number = write (fd,buffer,count) Переменные fd, buffer, count и number имеют тот же смысл, что и для вызова системной функции read Алгоритм записи в обычный файл похож на алгоритм чтения из обычного файла Однако если в файле отсутствует блок, соответствующий смещению в байтах до места, куда должна производиться запись, ядро выделяет блок и присваивает ему номер в соответствии с точным указанием места в таблице содержимого индексного узла

Основы операционных систем Лекция Реализация некоторых операций над файлами Реализация некоторых операций над файлами (10) Системные вызовы, работающие с файловым дескриптором Обычное использование системных функций read и write обеспечивает последовательный доступ к файлу, однако процессы могут использовать вызов системной функции lseek для указания места в файле, где будет производиться ввод- вывод, и осуществления произвольного доступа к файлу Синтаксис вызова системной функции: position = lseek(fd,offset,reference); Где fd - дескриптор файла, идентифицирующий файл, offset - смещение в байтах, а reference указывает, является ли значение offset смещением от начала файла, смещением от текущей позиции ввода-вывода или смещением от конца файла Возвращаемое значение, position, является смещением в байтах до места, где будет начинаться следующая операция чтения или записи

Основы операционных систем Лекция Современные архитектуры файловых систем (1) Современные ОС предоставляют пользователю возможность работать сразу с несколькими файловыми системами (Linux работает с Ext2fs, FAT и др.) Файловая система в традиционном понимании становится частью более общей многоуровневой структуры

Основы операционных систем Лекция Современные архитектуры файловых систем (2) На верхнем уровне располагается так называемый диспетчер файловых систем (например, в Windows 95 этот компонент называется installable filesystem manager) Он связывает запросы прикладной программы с конкретной файловой системой. Каждая файловая система (иногда говорят - драйвер файловой системы) на этапе инициализации регистрируется у диспетчера, сообщая ему точки входа, для последующих обращений к данной файловой системе

Основы операционных систем Лекция Современные архитектуры файловых систем (3) Та же идея поддержки нескольких файловых систем в рамках одной ОС может быть реализована по-другому, например исходя из концепции виртуальной файловой системы Виртуальная файловая система (vfs) представляет собой независимый от реализации уровень и опирается на реальные файловые системы (s5fs, ufs, FAT, NFS, FFS) При этом возникают структуры данных виртуальной файловой системы типа виртуальных индексных узлов vnode, которые обобщают индексные узлы конкретных систем

Основы операционных систем Лекция Заключение Реализация файловой системы связана с такими вопросами, как поддержка понятия логического блока диска, связывания имени файла и блоков его данных, проблемами разделения файлов и проблемами управления дискового пространства Наиболее распространенные способы выделения дискового пространства: непрерывное выделение, организация связного списка и система с индексными узлами Файловая система часто реализуется в виде слоеной модульной структуры. Нижние слои имеют дело с оборудованием, а верхние - с символическими именами и логическими свойствами файлов Каталоги могут быть организованы различными способами и могут хранить атрибуты файла и адреса блоков файлов, а иногда для этого предназначается специальная структура (индексные узлы) Проблемы надежности и производительности файловой системы - важнейшие аспекты ее дизайна