Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

4. Файлы, файловые системы - презентация

.pdf
Скачиваний:
85
Добавлен:
11.04.2014
Размер:
224.31 Кб
Скачать

Учет блоков диска, принадлежащих файлу

Непрерывные файлы — хранится начало и длина каждого файла

легко и производительно, но размер файла должен быть известен заранее.

применяются в файловых системах 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 соответственно.