Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
shpory_os.doc
Скачиваний:
0
Добавлен:
27.12.2019
Размер:
632.05 Кб
Скачать

17. Файловые системы в ос Linux. Общие понятия.

ОС Линукс поддерживает несколько десятков файловых систем. Это возможно благодаря наличию виртуальной файловой системы (файловый ввод\вывод относится как раз к блочным устройствам). Файл в системе Линукс - это последовательность байтов произвольной длины содержащие произвольную информацию. В ОС Линукс нет различий между текстовыми файлами, двоичными файлами и любыми другими типами файлов; имена файлов ограничены длиной 256 символов, в именах допускается использование всех ASCII-символов кроме символа null; имена файлов состоят из двух частей: имя файла и расширение файла (расширение могут иметь произвольную длину, причем их может быть несколько). Файлы могут группироваться в каталоги, каталоги представляют собой особый тип файлов с которыми можно работать также как и с файлами. Каталоги могут содержать подкаталоги, создавая тем самым иерархическую структуру. Корневой каталог называется "/"(bin - двоичные исполняемые программы, dev - специальные файлы для устройств I/O, etc - различные системные файлы, lib - библиотеки, usr - каталоги пользователя). Два способа задания имени файлов: абсолютный путь (в этом способе необходимо указывать полный путь к файлу начиная с корневого каталога) и относительный путь (в данном способе используется понятие рабочего каталога и имена путей указываются относительно рабочего каталога). Также в ОС Линукс реализована система ссылок (link) - это запись каталога, указывающая на существующий файл (например, есть два пользователя с разными рабочими директориями: 1 и 2; пользователю 2 необходим доступ к файлу С. Для доступа к данному файлу 1-му пользователю необходимо указывать абсолютный путь. Чтобы этого избежать можно создать ссылку на нужный файл. Вторым способом решения данной проблемы является использование следующей записи: '../' ( при создании каталога в нём автоматически создаются две записи: запись "." и запись ".."; "." означает сам каталог, а ".." это ссылка на родительский каталог).

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

18. Файловые системы в ос Linux. Файловая система Ext2.

(пишем весь 17 вопросы и содержание этого вопроса)

Структура файловой системвы ext2 имеет следующий вид:

-Загрузчик служит для загрузки ОС;

-Группа блоков "0" также относится к загрузке ОС (содержит код загрузки);

-Далее следуют следующие группы блоков.

Каждый блок состоит из:

- суперблок - в нём хранится информация о компоновке файловой системы, включая: количество и-узлов, количество дисковых блоков, начало списка свободных дисковых блоков;

- дескриптор группы - содержит информацию о расположении битовых массивов, количество свободных блоков и узлов в группе, количество каталогов в группе (это необходимо для равномерного распределения каталогов по всему диску);

- блоковый битовый массив — ведёт учёт свободных блоков;

- битовый массив и-узлов - ведёт учёт свободных и-узлов;

- и-узлы - нумеруются от единицы до какого-то значения (узел 1 - учёт повреждённых блоков, узел 2 - корневой каталог, и так далее); каждый и-узел имеет размер 128 байт, описывает ровно один файл или каталог;

- блоки данных - хранятся каталоги и файлы, причём если файл или каталог состоит более чем из одного блока, то не обязательно они будут храниться непрерывно на диске.

Файловая система ext2 пытается расположить обычные файлы в той же самой группе блоков что и родительский каталог, а файлы данных в том же блоке что и узел исходного файла. Битовые массивы используются для принятия быстрых решений по выделению свободного места. Когда выделяются новые блоки файлов, то файловая система ext2 делает упреждающее выделение дополнительных блоков для минимизирования будущей фрагментации. Рассмотрим пример структуры каталога с 3 файлами:

Каждый каталог состоит из некоторого количества дисковых блоков. В каталоге элементы для файлов находятся в неотсортированном порядке. Элементы не могут пересекать границы блоков, поэтому в конце каждого дискового блока есть некоторое количество неиспользуемых байт. Каждая запись каталога состоит из 4 полей фиксированной длины и одного переменного.

Структура каталога имеет следующие поля:

номер и-узла (чаще всего и-узлы не упорядочены);

размер всей записи (rec_len);

тип (файл, каталог и так далее);

длина имени файла;

имя файла, которое заканчивается нулевым байтом.

Особенности поиска файла после удаления пути:

-мы указали в командной строке такой путь: /usr/os/lab/f1. В данном случае поиск разделяется на несколько шагов: - система находит корневой каталог, который использует и-узел с номером 2; - данный элемент помещается в кэш элементов, в корневом каталоге производится поиск строки /os/lab/f1, вычисляется его и-узел; - найденный элемент помещается в кэш; - из найденного и-узла производится поиск записи /lab/f1, вычисляется и-узел; - найденный элемент помещается в кэш и так далее (то есть рекурсивно, пока не дойдём до файла).

Поиск в каталогах производится линейно, и поэтому, это занимает много времени. Для этого используется кэш каталога.

Некоторые элементы и-узла:

Mode (file(F) or directory(D));

Nlinks (количество элементов каталога указывающих на этот и-узел);

Size (размер файла в байтах);

Addr (адрес первых 12 блоков файлов);

Atime (время последнего доступа к файлу);

Mtime (время последней модификации файла);

Ctime (время последнего изменения и-узла).

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