Смекни!
smekni.com

Операционные системы 5 (стр. 20 из 43)

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

Недостатком описанной схемы является то, что доступ к большим файлам требует значительно больше времени, чем к маленьким. Если расположение первых 10 Кб данных файла записано непосредственно в индексном дескрипторе, то для того, чтобы прочитать данные, отстоящие, скажем, на 50 Мб от начала файла, придется сперва прочитать третичный, вторичный и обычный косвенные блоки.

Еще один важный вопрос для любой файловой системы – способ хранения данных о свободном месте. Для UNIX следует различать два вида свободных мест – свободные блоки в области данных и свободные индексные дескрипторы, которые бывают нужны при создании новых файлов. Количество тех и других может быть очень большим. В суперблоке UNIX имеются массивы для хранения некоторого количества номеров свободных блоков и свободных дескрипторов. Если исчерпаны номера свободных дескрипторов в суперблоке, то UNIX просматривает массив дескрипторов, находит в нем свободные и выписывает их номера в суперблок.

Сложнее обстоит дело со свободными блоками данных. Первый элемент размещенного в суперблоке массива номеров свободных блоков указывает на блок в области данных, который содержит продолжение этого массива и, в первом элементе, указатель на следующий блок продолжения. Когда системе нужны блоки дисковой памяти, она берет их из основного массива в суперблоке, а при исчерпании массива читает его продолжение в суперблок. При освобождении блоков происходит обратный процесс: их номера записываются в массив, а при переполнении массива все его содержимое переписывается в один из свободных блоков, номер которого заносится в первый элемент массива как адрес продолжения списка. На рис. 3‑7 показана структура списка свободных блоков.

Рис. 3‑7

Как нетрудно понять, из сказанного вытекает, что блоки диска распределяются «по стековому принципу»: блок, освобожденный последним, будет первым снова задействован.

3.7.3. Доступ к данным в UNIX

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

В основе работы с данными, как и для MS-DOS, лежит понятие хэндла открытого файла. Программа получает значение хэндла при открытии или создании файла, а затем использует хэндл для ссылки на открытый файл при обращении к функциям чтения, записи, перемещения указателя и т.п.

UNIX не имеет средств управления разделением доступа при открытии файла, т.е. всегда позволяет нескольким процессам открывать один и тот же файл. Для обеспечения корректной работы процессы могут использовать блокирование фрагментов файла. Можно установить блокировку для записи (эксклюзивную блокировку, см. п. 3.5) или для чтения (кооперативную блокировку). По умолчанию в UNIX используются рекомендательные блокировки. Это означает, что система не препятствует процессу обращаться к заблокированному фрагменту файла. Процесс должен сам запрашивать (если считает нужным), не заблокирован ли данный фрагмент. В более поздних версиях UNIX стало возможным и обязательное блокирование, при котором попытка обращения к заблокированному фрагменту приводит к ошибке.

Для реализации доступа к файлу по значению хэндла в UNIX используются таблицы, аналогичные таблицам JFT и SFT в MS-DOS (см. п. 3.6.4.3). Однако, в отличие от MS-DOS, запись SFT не содержит копии всех атрибутов файла. Вместо этого UNIX хранит в памяти отдельную таблицу копий индексных дескрипторов (inode) всех открытых файлов. Запись SFT содержит ссылку на запись таблицы индексных дескрипторов, а сверх того – те параметры, которых нет в inode: режим доступа к открытому файлу, положение указателя в файле, количество хэндлов, указывающих на данную запись SFT. Если один и тот же файл был открыт несколько раз, то создается несколько записей SFT, указывающих на один и тот же inode.

3.7.4. Развитие файловых систем UNIX

Описанная выше классическая файловая система UNIX является по-своему весьма стройной и мощной, способной удовлетворить разнообразные требования пользователей. В то же время эта система давно уже подвергалась критике за два существенных недостатка, определяемых выбором описанных выше структур данных. Эти недостатки следующие:

· ненадежность;

· низкая производительность.

Поговорим сначала о ненадежности. Можно назвать следующие опасные места в структуре файловой системы UNIX.

· Широкое использование сцепленных списковых структур для хранения жизненно важной информации о размещении файлов и свободных блоков. Программистам известен основной недостаток сцепленных списков: при минимальном искажении хотя бы одного из указателей теряется, в лучшем случае, вся последующая часть списка. Возможна и потеря данных, не входящих в поврежденный список. Попробуйте представить себе, что произойдет на диске, если в качестве номера косвенного блока вследствие аппаратного сбоя будет записан номер ни в чем не повинного блока данных из совсем другого файла…

· Интенсивное использование суперблока для хранения часто изменяющейся информации. Поскольку каждая операция записи связана с возможностью искажения данных, под угрозой оказываются жизненно важные параметры файловой системы, которые тоже хранятся в суперблоке, но не требуют частых изменений: размеры всей файловой системы и ее частей, размер блока и т.п.

· Компактное размещение в начале дискового тома наиболее важных метаданных (суперблок, массив дескрипторов) приводит к тому, что при механическом повреждении начальных дорожек диска теряется возможность доступа ко всем данным на диске.

Давно известны и факторы, влияющие на снижение производительности работы:

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

· используемые алгоритмы выделения и освобождения дисковых блоков по принципу «последним освободился – первым занят» способствуют фрагментации дискового пространства, а это, как нам известно, приводит к снижению скорости доступа.

Неудивительно, что в качестве замены системы s5fs были предложены различные более надежные и производительные файловые системы. К их числу относятся, например, система FFS, используемая в версии UNIX 4BSD, а также система ext2, поставляемая с Linux. Все эти системы поддерживают привычную архитектуру UNIX, включая структуру каталогов, жесткие и символические связи, типы файлов, набор атрибутов. Различия заключаются в реализующих эту архитектуру структурах дисковых данных и в алгоритмах работы с ними.

Постараемся дать общее представление о направлениях усовершенствования файловых систем UNIX, не вдаваясь в детали конкретных систем.

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

· Данные о количестве и местонахождении свободных блоков вынесены из суперблока и хранятся отдельно в каждой группе цилиндров.

· Для хранения данных о свободных блоках используется не списковая структура, а битовая карта, в которой каждый блок из группы цилиндров помечается как свободный или занятый. Это уменьшает тяжесть последствий в случае повреждения данных.

· Алгоритм размещения файлов старается по возможности размещать все файлы одного каталога, а также их дескрипторы, в пределах одной группы цилиндров. Напротив, подкаталоги по возможности не размещаются в той же группе цилиндров, что родительский каталог. Таким способом обычно удается уменьшить количество перемещений головок при работе программы с файлами.

Нужно отметить, что в современных версиях UNIX, как и в других современных ОС, поддерживается одновременное использование разных файловых систем на разных дисковых томах. Этой цели служит понятие виртуальной файловой системы (VFS). Она позволяет подключать к единому дереву каталогов файловые системы различных типов, в том числе такие чужеродные для UNIX, как FAT или NTFS. Для работы с файлами используется единый набор файловых функций, однако при их вызове, в зависимости от того, к какой файловой системе принадлежит данный файл, будут вызываться различные подпрограммы.

3.8. Файловая система NTFS и управление данными в Windows

3.8.1. Особенности файловой системы NTFS

Файловая система NTFS была разработана специально для использования в ОС WindowsNT как замена для устаревшей системы FAT. NTFS является основной системой и для новых версий – Windows 2000/XP.

Система NTFS спроектирована как очень мощная многопользовательская файловая система с большим количеством возможностей. Тем не менее, как утверждают разработчики, NTFS обеспечивает более быстрый доступ к данным, чем предельно простая система FAT, если объем диска превышает 600 Мб.

Среди возможностей, отсутствующих в FAT, но реализованных в NTFS, можно назвать следующие.

· Развитые средства защиты данных, предотвращающие возможность несанкционированного доступа к данным и при этом позволяющие весьма детально разграничить права доступа для различных пользователей и групп пользователей.