Связанный спискок кластеров дисковой памяти

В начале каждого кластера – указатель на следующий.

Плюсы:

· Адресная инфа минимальна (расположение файла задается номером первого кластера)

· Нет фрагментации на уровне кластеров

· Можно менять размер файла, наращивая число кластеров

Минусы:

· Сложно добраться до произвольного места файла (надо последовательно читать все кластеры)

· Количество данных в кластера не равно степени двойки (одно слово – на номер следующего кластера), а это неудобно для многих программ

 

3) Связанный список индексов – ФС ФАТ.

Это по сути модификация предыдущего способа:

- У каждого кластера есть свой ИНДЕКС.

- Все индексы располагаются в особой области памяти – в МСДОС – это таблица ФАТ, которая занимает один кластер.

- Номер первого кластера файла хранится в записи каталога файлов, с другими его характеристиками

- Остальная адресная инфа хранится не в кластерах, а в индексах ФАТ.

- Когда все кластеры свободны, все индексы = 0;

- При заполнении диска файлами, индексы принимают значение номера следующего индекса файла либо специального значения – указателя на конец файла.

Плюсы:

· Минимальность адресной инфы

· Нет фрагметрации на уровне кластеров (только неиспользованные области в конце кластеров)

· Нет проблем с изменением размера файла

· Не надо последовательно считывать кластеры для доступа к произвольному участку файла.

· Данные файла заполняют кластер целиком – размер равен степени двойки.

 

4) Перечисление кластеров, занимаемых файлов – этот перечень служит и адресом файла (используется в OS UNIX s5 & ufs)

Минусы:

· Длина адреса зависит от размера файла и может быть слишком большой.

Плюсы:

· Прямая адресация – высокая скорость доступа к произвольному месту файла.

 

В сочетании прямой и косвенной адресации последний метод используется в ФС ufs: картинка для кластера размером в 8 кбайт

Также он используется в NTFS – только здесь адресуются не кластеры, а смежные непрерывные области кластеров – отрезки или экстенты. ОС всегда старается размещать инфу рядом, это здорово сокращает размер адресной информации.

 

Файловые операции.

ФС предоставляет пользователям набор операций, для работы с файлами, оформленный в виде системных вызовов.

Набор состоит из вызовов create, read, write и других.

 

Чаще всего с открытым файлом пользователь выполняет не одну операцию, а несколько операций (копирует фрагмент, потом другой фрагмент, что-то пишет, что-то удаляет и т.д.)

 

Для всех этих операций ОС нужно сделать:

1) Универсальные действия:

· По символьному имени найти характеристики файла

· Скопировать их в отдельную область оперативной памяти

· Проверить права пользователя для операции

· Очистить область памяти после завершения операции.

2) Уникальные действия – собственно то, что требуется для данной операции.

 

Есть 2 способа выполнения действий над файлами:

- stateless– для каждой операции выполняются как универсальные, так и уникальные действия

- все универсальные действия выполняются только в начале и в конце работы в файлом, в промежуточной стадии – только уникальные действия.

 

Большинство ФС юзают второй способ, хотя первый обладает одним плюсом: надежностью и устойчивостью к системным сбоям. Поэтому он используется в некоторых распределенных сетевых системах, где сбои изза отказа пакетов или сетевых узлов более вероятны.

 

При втором способе в ФС вводятся два специальных системных вызова:

Open

· Преобразует символьное имя в числовое

· Копирует характеристики

· Проверяет права пользователя

Close

· Освобождает буфер памяти