4. Файлы, файловые системы - презентация
.pdf
Учет блоков диска, принадлежащих файлу
●Непрерывные файлы — хранится начало и длина каждого файла
–легко и производительно, но размер файла должен быть известен заранее.
–применяются в файловых системах CD и DVD
●Связные списки: каждый блок файла хранит указатель на следующий
–файлы могут иметь переменный размер, однако доступ к концу файла очень медленный, т.к. требует чтения всех блоков.
11
Учет блоков диска, принадлежащих файлу
●таблица расположения файлов (file allocation table, FAT)
–работает как предыдущая схема, но указатели хранятся не в самих блоках, а в отдельной таблице;
–производительность растет, но таблица занимает много места в памяти, особенно при больших дисках;
–наиболее известные ее реализации — FAT16 и FAT32, используемые в MS Windows.
12
Учет блоков диска, принадлежащих файлу
●использование индексных узлов (i-узлов) — таблица блоков файла хранится отдельно для каждого файла
–значительно уменьшается объем памяти, необходимый для обработки таблицы, т.к. в памяти необходимо хранить только узлы открытых файлов;
–производительность немного хуже, чем у предыдущего метода;
–используется в большинстве современных файловых систем как Unix, так и Windows (NTFS)
13
Учет свободных блоков диска
●Ведение списка номеров свободных блоков
–преимущество: быстрый поиск свободного блока;
–недостаток: в начале размер таблицы очень большой.
●Хранение занятости блоков в побитовой карте, т.е. каждый бит хранит 0 (свободен)/1 (занят) для соответствующего блока.
–этот метод требует меньше дискового пространства, однако менее производителен, т.к.
для поиска свободного блока надо проходить по 14 списку.
Контроль доступа к файлам
●Частичная классификация пользователей (ОС Unix)
–простота реализации, небольшое занимаемое место, однако возможности контроля весьма ограничены.
●Списки контроля доступа (access control list, ACL)
–детальный контроль доступа, однако значительно более затратный в реализации;
–применяется в NTFS и современных ФС Unix
15
Базовая модель Unix
●Все пользователи относительно файла делятся на три категории:
–владелец;
–группа владельца;
–все остальные.
●Каждой категории задаются права на:
–исполнение файла;
–запись файла;
–чтение файла.
16
Списки контроля доступа
● Список контроля доступа представляет собой связный список, перечисляющий пользователей и их права на доступ к файлу (каталогу).
● Поскольку ввод большого числа пользователей может быть утомительным, а также для простоты управления списком при добавлении новых пользователей (например если файл открыт для всех), вводится возможность указания списка в негативной
форме (т.е. списка тех, кто доступа не имеет).
17
Работа с файлами
●При работе с файлами из программы учитываются следующие понятия:
–режим открытия — определяет режим обработки данных (двоичный или текстовый), права доступа, а также способ записи (дописывать в конец файла или стереть существующее содержимое);
–указатель позиции — указывает на место в файле, с которого будет производится следующая операция чтения или записи;
–конец файла (end of file, eof) — состояние, когда
указатель позиции указывает за последним байтом 18 файла.
Работа с файлами в CRT
●В CRT существуют два способа работы с файлами:
–работа на низком уровне (функции типа open, read, write, close) — функции прямо соответствуют системным вызовам ОС;
–потоковый ввод/вывод (функции типа fopen, fread, fwrite, fclose, fprintf, fgets, fscanf) — обеспечивает дополнительную буферизацию средствами CRT и форматированный ввод/вывод (в случае текстовых файлов).
●Эти два метода несовместимы в пределах
19 открытого файла.
Файловые дескрипторы CRT
●Для управления доступа процесса к файлам на низком уровне в CRT используются файловые дескрипторы — целые числа, являющиеся номерами в таблице открытых файлов процесса.
●Дескриптор получается при открытии файла с помощью функции open, используется при вызовах функций read и write, закрывается при помощи функции close.
●Дескрипторы 0, 1 и 2 указывают на
стандартные потоки ввода, вывода и ошибок 20 соответственно.
