Запишите каким образом файлы размещаются на дисках
Файл представляет собой бессистемную последовательность байтов. В сущности, операционной системе все равно, что содержится в этом файле. Она видит только байты. Какое-либо значение этим байтам придается программами на уровне пользователя. Эта файловая модель используется всеми версиями UNIX, MS-DOS и Windows.
В современных ОС файлы хранятся на дисках и являются файлами произвольного доступа – ОС считывает байты файла вне порядка их размещения.
Информация, с которой работает человек, обычно структурирована. Это, прежде всего, позволяет более эффективно организовать хранение данных, облегчает их поиск, предоставляет дополнительные возможности в именовании. Аналогично, и при работе с файлами желательно ввести механизмы структурирования. Проще всего организовать иерархические отношения. Для этого достаточно ввести понятие каталога.
Каталоги. Имена файлов регистрируются на дисках в каталогах (или директориях). В Windows каталоги называются также папками. Каталог – это специальное место на диске, в котором хранятся имена файлов, сведения о размере файлов, времени их последнего обновления, атрибуты (свойства) файлов и т. д. Если в каталоге хранится имя файла, то говорят, что этот файл находится в данном каталоге. На каждом диске может быть несколько каталогов. В каждом каталоге может быть много файлов, но каждый файл всегда регистрируется только в одном каталоге.
Имена каталогов. Требования к именам каталогов те же, что и к именам файлов. Как правило, расширение имени для каталогов не используется, хотя делать этого никто не запрещает.
Корневой каталог. На каждом диске имеется один главный, или корневой, каталог (он создается после форматирования). Для его обозначения используют символ \. В нем регистрируются файлы и подкаталоги (каталоги 1-го уровня). В каталогах 1-го уровня регистрируются файлы и каталоги 2-го уровня и т. д. Получается иерархическая древообразная структура каталогов на диске. Эту структуру часто называют деревом.
Текущий каталог – это каталог, с которым пользователь работает в данный момент.
Путь. Когда вы используете файл не из текущего каталога, необходимо указать, в каком каталоге этот файл находится. Это можно сделать с помощью указания пути к файлу. Путь – это последовательность из имен каталогов, разделенных знаком \ , которые нужно последовательно открыть, чтобы найти файл (включая диск). Этот путь задает маршрут от корневого каталога диска к тому каталогу, в котором находится нужный файл.
Полное имя файла, или спецификация, включает в себя диск, путь, собственно имя и расширение имени, т. е. путь\имя.расширение
Например, D:\school\profes\music.exe
Файловые системы
Для управления файлами создаются соответствующие файловые системы.
Файловая система — это часть операционной системы, назначение которой состоит в том, чтобы организовать эффективную хранение данных на диске, и обеспечить пользователю удобный доступ к этим данным и интерфейс при работе с такими данными.
Организовать хранение информации на магнитном диске непросто. Это требует, например, хорошего знания устройства контроллера диска, особенностей работы с его регистрами. Непосредственное взаимодействие с диском — прерогатива компонента системы ввода-вывода ОС, называемого драйвером диска. Для того чтобы избавить пользователя компьютера от сложностей взаимодействия с аппаратурой, была придумана ясная абстрактная модель файловой системы. Операции записи или чтения файла концептуально проще, чем низкоуровневые операции работы с устройствами.
Главная задача файловой системы — скрыть особенности ввода-вывода и дать программисту простую абстрактную модель файлов, независимых от устройств.
Перечислим основные функции файловой системы:
1. Идентификация файлов. Связывание имени файла с выделенным ему пространством внешней памяти.
2. Распределение внешней памяти между файлами. Для работы с конкретным файлом пользователю не требуется иметь информацию о местоположении этого файла на внешнем носителе информации. Например, для того чтобы загрузить документ в редактор с жесткого диска, нам не нужно знать, на какой стороне какого магнитного диска, на каком цилиндре и в каком секторе находится данный документ.
3. Обеспечение надежности и отказоустойчивости. Обеспечение защиты от несанкционированного доступа.
4. Обеспечение совместного доступа к файлам, так чтобы пользователю не приходилось прилагать специальных усилий по обеспечению синхронизации доступа.
5. Обеспечение высокой производительности.
Специальное системное программное обеспечение, реализующее работу с файлами по принятым спецификациям файловой системы, часто называют системой управления файлами. Именно системы управления файлами отвечают за создание, уничтожение, организацию, чтение, запись, модификацию и перемещение файловой информации, а также за управление доступом к файлам и за управление ресурсами, которые используются файлами.
Назначение системы управления файлами — предоставление более удобного доступа к данным, организованным как файлы, то есть вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной нам записи используется логический доступ с указанием имени файла и записи в нем.
Благодаря системам управления файлами пользователям предоставляются следующие возможности:
1. создание, удаление, переименование (и другие операции) именованных наборов данных (файлов) из своих программ или посредством специальных управляющих программ, реализующих функции интерфейса пользователя с его данными и активно использующих систему управления файлами;
2. работа с недисковыми периферийными устройствами как с файлами;
3. обмен данными между файлами, между устройствами, между файлом и устройством (и наоборот);
4. работа с файлами путем обращений к программным модулям системы управления файлами;
5. защита файлов от несанкционированного доступа.
Любая система управления файлами не существует сама по себе – она разработана для функционирования в конкретной ОС. То есть, для работы с файлами, организованными в соответствии с некоторой файловой системой, для каждой ОС должна быть разработана соответствующая система управления файлами. Эта система управления файлами будет работать только в той ОС, для которой она и создана. Но при этом она позволит работать с файлами, созданными с помощью системы управления файлами другой ОС и организованными в файловую систему по тем же основным принципам.
В некоторых ОС может быть несколько систем управления файлами, что обеспечивает им возможность работать с несколькими файловыми системами.
Системы управления файлами, будучи компонентом ОС, не являются независимыми от этой ОС, поскольку они активно используют соответствующие вызовы прикладного программного интерфейса API (application program interface). С другой стороны, системы управления файлами сами дополняют API новыми вызовами. Можно сказать, что основное назначение файловой системы и соответствующей ей системы управления файлами – организация удобного доступа к данным, организованным как файлы, то есть вместо низкоуровневого доступа к данным с указанием конкретных физических адресов нужной записи используется логический доступ с указанием имени файла и записи в нем.
Термин «файловая система» определяет, прежде всего, принципы доступа к данным, организованным в файлы. Этот же термин часто используют и по отношению к конкретным файлам, расположенным на том или ином носителе данных. А термин «система управления файлами» следует употреблять по отношению к конкретной реализации файловой системы. То есть система управления файлами – это комплекс программных модулей, обеспечивающих работу с файлами в конкретной операционной системе.
Файловая система FAT
В FAT пространство любого диска делится на части:
1. BOOT-сектор содержит основные количественные параметры дискового тома и файловой системы, а также может содержать программу начальной загрузки ОС.
2. таблица FAT (File Allocation Table) – содержит информацию о размещении файлов и свободного места на диске. Ввиду критической важности этой таблицы она всегда хранится в двух экземплярах, которые должны быть идентичны. Каждая операция, изменяющая содержимое FAT, должна одинаковым образом изменять оба экземпляра.
3. ROOT – корневой каталог системы, содержащий данные о файлах и о подкаталогах верхнего уровня, каждый из которых в свою очередь может содержать файлы и подкаталоги.
4. Область данных – массив кластеров, содержащий все файлы и все каталоги (кроме корневого).
Область данных разбивается на кластеры. Кластеры представляют один или несколько смежных секторов в области данных. Кластер – минимальная адресная единица дисковой памяти, выделенная файлу. Кластеры, принадлежащие одному файлу, связываются в цепочки. Каждый файл занимает целое число кластеров. Последний кластер при этом может быть задействован не полностью, что при большом размере кластера может приводить к заметной потере дискового пространства.
Разбиение области данных на кластеры вместо секторов имеет смысл по причинам:
- Уменьшается размер самой FAT;
- Уменьшается возможная фрагментация файлов;
- Ускоряется доступ к файлу, т.к. в несколько раз сокращается длина цепочек – фрагментов дискового пространства, выделенного файлу.
Т.к. FAT интенсивно используется, то она помещается в ОЗУ, а на диске хранится в двух экземплярах. Используется только первый, если он оказывается поврежден, то происходит обращение ко второму экземпляру.
Записи FAT «по историческим причинам» нумеруются, начиная с 2 и заканчивая максимальным номером кластера, каждая запись FAT описывает соответствующий кластер с тем же номером. Запись может принимать следующие значения:
1. если кластер принадлежит некоторому файлу (или каталогу) и является последним (или единственным) в этом файле, то запись FAT содержит специальное значение – FFFF;
2. если кластер принадлежит некоторому файлу (или каталогу), но не является последним в файле, то запись FAT содержит номер следующего кластера того же файла;
3. если кластер свободен, то запись содержит все нули;
4. если кластер дефектный (т.е. при проверке диска выяснилось, что данный кластер содержит хотя бы один дефектный сектор), то запись содержит специальное значение FFF7.
FAT16 | |
Длина записи (под номер кластера) | 16 бит (разрядов) |
Количество записей | 2 16 |
Размер кластера | 32 Кбайт (64 сектора) |
Максимальный объем диска | 2 Гбайт |
Кол-во элементов в корневом каталоге | 512 |
Длина кластера составляет 32 Кбайт (64 сектора). Это не вполне рациональный расход рабочего пространства, поскольку любой файл (даже очень маленький) полностью оккупирует весь кластер, которому соответствует только одна адресная запись в таблице размещения файлов. Даже если файл достаточно велик и располагается в нескольких кластерах, все равно в его конце образуется некий остаток, нерационально расходующий целый кластер.
Такие системы не могут работать с дисками, объем которых больше 2 Гбайт.
В каталоге среди основной информации хранится номер первого кластера, который занимает файл, а остальные кластеры можно последовательно определить по записям таблицы FAT.
Теперь мы знаем, каким образом в системе FAT хранится информация о размещении сегментированного файла. Номер первого кластера файла хранится в записи каталога, а остальные кластеры можно последовательно определить по записям таблицы FAT.
Файл представляет собой бессистемную последовательность байтов. В сущности, операционной системе все равно, что содержится в этом файле. Она видит только байты. Какое-либо значение этим байтам придается программами на уровне пользователя. Эта файловая модель используется всеми версиями UNIX, MS-DOS и Windows.
В современных ОС файлы хранятся на дисках и являются файлами произвольного доступа – ОС считывает байты файла вне порядка их размещения.
Корневой каталог – это основная папка на центральном диске, в которой содержится вся информация. Самый простой и популярный способ попадания в него – щелкаем левой кнопкой мыши меню «Пуск» и входим в «Мой компьютер», в открывшемся окне выбираем нужный диск и попадаем в его корневой каталог. В окне может быть открыто несколько папок, закройте их с помощью кнопок в правом верхнем углу окна. Повторяйте процедуру до тех пор, пока не окажетесь в корневом каталоге. Также для перехода в корневой каталог можно использовать программу Total Commander.
Для этого вам будет необходим компьютер операционной системой Windows XP и установленная на нем программа Total Commander.
Попасть в корневой каталог в операционной системе Windows XP можно таким способом: заходим в меню «Пуск» и входим в «Мой компьютер», при этом в открывшемся окне выбираем нужный диск из списка и входим в его корневой каталог. После этого мы можем просмотреть, какая информация содержится на этом диске. В адресной строке мы видим надпись «Диск:\», то есть если мы зайдем на диск «С», то надпись соответственно будет такой «С:\».
Если необходимо попасть в ту или иную папку, то это можно сделать с помощью корневого каталога диска. Найдя нужную папку и щелкнув по ней два раза, мы сможем просмотреть ее содержимое, при этом в адресной строке изменится надпись и появится название папки, в которой мы находимся «Диск:\название папки». Так, если мы зайдем в папку Temp, то надпись будет следующей «С:\Temp». В открытой папке могут находиться еще другие папки, в которые также можно зайти и в следствие этого надпись в адресной строке будет меняться, последовательно будут добавляться те папки, в которые мы заходим «Диск:\папка1\папка2\папка3…».
Если мы хотим снова попасть в корневой каталог диска, то необходимо в верхней части окна найти кнопку «Папки». Нажав на нее, в правой части появится дерево папок, которое представляет структуру всех папок, содержащихся на данном диске и другие имеющиеся диски. Нажав левой кнопкой мыши на нужный диск, мы сразу перейдем в корневой каталог. Существует еще другой способ быстрого перехода в корневой каталог диска. В верхней части окна есть кнопка «Вверх». Ее необходимо нажать столько раз, пока в адресной строке не появится надпись «Диск:\», таким образом, мы осуществляем последовательный выход из каждой папки, в которую входили. Такая же методика действует для всех версий Windows.
Попасть в корневой каталог с помощью программы Total Commander можно следующим образом:
Мы должны определить, какая папка на данный момент открыта в программе. Для этого мы смотрим в верхнюю часть окна, где отражено ее содержимое. Если там имеются две точки, то посредством их мы выйдем на уровень вверх. Такое действие необходимо продолжать до тех пор, пока эти точки исчезнут. Это будет означать, что мы попали в корневой каталог, о чем также будет свидетельствовать надпись «Диск:\» в верхней части окна.
Также для быстрого перехода в корневой каталог открытого диска, необходимо произвести нажатие комбинации клавиш Ctrl+\.
Каталоги в MS-DOS
Каталог — это структурный элемент организации файлов на диске. Каталог может содержать файлы и другие каталоги, которые называются подкаталогами. Структура каталогов и подкаталогов на диске называется деревом каталогов. Каталог, в котором Вы в данный момент работаете, является текущем. Каталог самого верхнего уровня является корневым. По отношению к корневому все другие каталоги являются подкаталогами. Корневой каталог нельзя удалить. Каталог на один уровень выше называется родительским. Для просмотра содержимого каталога наберите команду в командной строке dir (directory — каталог).
с:\dir
Набрав эту команду, Вы получите список всех каталогов и файлов, находящихся в текущем каталоге диска с указанием их расширения и размеров, даты и времени создания.Все имена, имеющие справа от себя пометку , являются каталогами. Если список файлов слишком велик и не вмещается на экран, то можно использовать команду с ключом /p
c:\dir/p
Создание каталога — задача, периодически возникающая перед каждым пользователем. Каталоги используются, как правило, для хранения файлов единого назначения. Их использование позволяет создавать четкую структуру организации данных на диске. В MS-DOS имена каталогов следует набирать прописными буквами латинского алфавита, а имена файлов строчными буквами латинского алфавита не более 8 символов. Создание каталога в MS-DOS выполняется с помощью команды md ( make directory — создать каталог)
Для смены текущего каталога используйте команду cd (change directory — сменить каталог). Эта команда служит для отображения имени текущего каталога и смены каталога. Чтобы перейти в каталог, наберите в командной строке команду
a:\ cd\INFORMесли Вы находитесь в корневом каталоге или
a:\cd INFORMв противном случае.
Теперь системное приглашение MS-DOS выглядит следующим образом:
a:\INFORM_ и показывает, что Вы находитесь в каталоге INFORM, который является текущим. Использование данной команды имеет особенность. Вы не сможете напрямую перейти из одного подкаталога в другой, минуя промежуточную операцию выхода в каталог верхнего уровня.
Для моментального выхода в корневой каталог из подкаталога любого уровня используется команда
a:\cd\
Для перехода в родительский каталог используется команда
a:\cd..
Просмотр дерева каталогов
Для просмотра дерева каталогов в MS-DOS удобно использовать команду tree (tree-дерево). Это команда в графическом виде отображает структуру каталогов. Чтобы просмотреть дерево каталога. Выполните команду:
Будет показано дерево данного каталога со всеми его ветвями. При необходимости просмотра имен файлов в каждом каталоге следует ввести ключ /f.
a:\tree/f
Статьи к прочтению:
Как загрузить файл на яндекс,диск для общего скачивания (Как скачать из инета другим)
Похожие статьи:
Структура размещения раздела FAT изображена на рисунке 0 1 18 19 32 33 2847 Рис. Структура системного гибкого (3,5”) диска с операционной системой MS…
Реализация функций контроля и управления На базе Win32 API Методические указания по выполнению лабораторного практикума Дисц. “Вычислительные машины,…
Область данных диска, отведенную для хранения файлов, можно представить как линейную последовательность адресуемых блоков (секторов). Размещая файлы в этой области, ОС должна отвести для каждого файла необходимое количество блоков и сохранить информацию о том, в каких именно блоках размещен данный файл. Существуют два основных способа использования дискового пространства для размещения файлов.
Непрерывное размещение характеризуется тем, что каждый файл занимает непрерывную последовательность блоков.
Сегментированное размещение означает, что файлы могут размещаться «по кусочкам», т.е. один файл может занимать несколько несмежных сегментов разной длины. Оба способа размещения показаны на рис. 16.1.
Рис. 16.1 Способы размещения файлов на диске
Непрерывное размещение имеет два серьезных достоинства.
Информация о размещении файла очень проста и занимает мало места. Фактически достаточно хранить два числа: номер начального блока файла и число занимаемых блоков (или размер файла в байтах, по которому легко вычислить число блоков).
Доступ к любой позиции в файле выполняется быстро, поскольку, зная смещение от начала файла, легко можно вычислить номер требуемого блока и прочитать сразу этот блок, не читая предыдущие блоки.
К сожалению, недостатки непрерывного распределения еще более весомы.
При создании файла требуется заранее знать его размер, чтобы найти и зарезервировать на диске область достаточной величины. Последующее возможное увеличение файла весьма затруднено, т.к. после конца файла может не оказаться достаточно свободного места. Фактически вместо увеличения файла обычно приходится заново создавать файл большего размера в другом месте, переписывать в него данные и удалять старый файл. Но такое решение требует много времени на чтение и запись данных и, кроме того, снижает надежность хранения данных, поскольку ошибка при чтении или записи гораздо более вероятна, чем порча данных, «спокойно лежащих» на диске.
В ходе обычной эксплуатации файловой системы, после многократного создания и удаления файлов разной длины, свободное пространство на диске оказывается разбитым на небольшие кусочки. Суммарный объем свободного места на диске может быть достаточно большим, но создать файл приличного размера не удается, для него нет непрерывной области нужной длины. Это явление носит название фрагментации диска. Для борьбы с ним приходится использовать специальную процедуру дефрагментации, которая перемещает все файлы, размещая их впритык друг к другу от начала области данных диска. Но такая процедура требует много времени, снижает, как сказано выше, надежность и усугубляет проблемы в случае, если позднее потребуется увеличить файл.
Сегментированное размещение лишено первого из недостатков непрерывного: при создании файла ему обычно вообще не выделяют память, а потом, по мере возрастания размера файла, ему могут быть выделены любые свободные сегменты на диске, независимо от их длины.
Не так просто с фрагментацией. Конечно, в отличие от непрерывного размещения, при сегментированном никакая фрагментация не помешает системе использовать все блоки, имеющиеся на диске. Однако последовательное чтение из сегментированного файла может выполняться существенно медленнее за счет необходимости переходить от сегмента к сегменту. Замедление особенно заметно, если файл оказался разбросан маленькими кусочками по нескольким цилиндрам диска. В результате, время от времени целесообразно выполнять дефрагментацию диска, чтобы повысить скорость доступа к данным. При сегментированном размещении дефрагментация означает не только объединение всех свободных участков диска, но и, главным образом, объединение сегментов каждого файла. Эта процедура выполняется значительно сложнее, чем дефрагментация при непрерывном размещении.
Недостатком сегментированного размещения является то, что информация о размещении файла в этом случае намного сложнее, чем для непрерывного случая и, что наиболее неприятно, объем этой информации переменный: чем большее число сегментов занимает файл, тем больше нужно информации, ибо надо перечислить все сегменты. Имеется почти столько же способов решения этой проблемы, сколько вообще придумано разных файловых систем.
Чтобы уменьшить влияние сегментации на скорость доступа к данным файла, в ОС, использующих сегментированное размещение, применяются различные алгоритмы выбора места для файла. Их целью является разместить файл по возможности в одном сегменте, и только в крайнем случае разбивать файл на несколько сегментов.
В современных ОС для файловых систем на магнитных дисках практически всегда используют сегментированное размещение. Иное дело файловые системы на дисках, предназначенных только для чтения (например, CD ROM). Нетрудно понять, что в этом случае недостатки непрерывного размещения не имеют никакого значения, а его достоинства сохраняются.
Еще одной важной характеристикой размещения файлов является степень его «дробности». До сих пор мы предполагали, что файл может занимать любое целое число блоков, а под блоком фактически понимали сектор диска. Проблема в том, что для дисков большого объема число блоков может быть слишком большим. Допустим, в некоторой файловой системе размер блока равен 512 байт, а для хранения номеров блоков файла используются 16-разрядные числа. В этом случае размер области данных диска не сможет превысить 512 * 216 = 32 Мб. Конечно, можно перейти к использованию 32-разрядных номеров блоков, но тогда суммарный размер информации о размещении всех файлов на диске становится чересчур большим. Обычный выход из этого затруднения заключается в том, что минимальной единицей размещения файлов считают кластер (называемый в некоторых системах блоком или логическим блоком), который принимается равным 2k секторов, т.е., например, 1, 2, 4, 8, 16, 32 сектора, редко больше. Каждому файлу отводится целое число кластеров, и в информации о размещении файла хранятся номера кластеров, а не секторов. Увеличение размера кластеров позволяет сократить количество данных о размещении файлов «и в длину и в ширину»: во-первых, для каждого файла нужно хранить информацию о меньшем числе кластеров, а во-вторых, уменьшается число двоичных разрядов, используемых для задания номера кластера (либо при той же разрядности можно использовать больший диск). Так, при кластере размером 32 сектора и 16-разрядных номерах можно адресовать до 1 Гб дисковой памяти.
Использование больших кластеров имеет свою отрицательную сторону. Поскольку размер файла можно считать случайной величиной (по крайней мере, этот размер никак не связан с размером кластера), то можно приближенно считать, что в среднем половина последнего кластера каждого файла остается незанятой. Это явление иногда называют внутренней фрагментацией (в отличие от описанной выше фрагментации свободного пространства диска, которую называют также внешней фрагментацией). Кроме того, если хотя бы один из секторов, входящих в кластер, отмечен как дефектный, то и весь кластер считается дефектным, т.е. не может быть использован. Очевидно, что при увеличении размера кластера возрастает и число неиспользуемых секторов диска.
Оптимальный размер кластера либо вычисляется автоматически при форматировании диска, либо задается вручную.
Для нормальной работы файловой системы требуется, чтобы, кроме информации о размещении файлов, система хранила в удобном для использования виде информацию об имеющихся свободных кластерах диска. Эта информация необходима при создании новых или увеличении существующих файлов. Используются различные способы представления информации о свободном месте, некоторые из них перечислены ниже.
Можно хранить все свободные кластеры как связанный линейный список, т.е. в начале каждого свободного кластера хранить номер следующего по списку. Недостаток такого способа в том, что затрудняется поиск свободного непрерывного фрагмента нужного размера, поэтому сложнее оптимизировать размещение файлов.
Названный недостаток можно преодолеть, если хранить список не из отдельных кластеров, а из непрерывных свободных фрагментов диска. Правда, работать с таким списком несколько сложнее.
В системах с непрерывным размещением часто каждый непрерывный фрагмент диска описывают так же, как файл, но отмечают его флажком «свободен».
Удобный и простой способ заключается в использовании битовой карты (bitmap) свободных кластеров. Она представляет собой массив, содержащий по одному биту на каждый кластер, причем значение 1 означает «кластер занят», а 0 – «кластер свободен». Для поиска свободного непрерывного фрагмента нужного размера система должна будет просмотреть весь массив.
Небольшой файл. Если файл имеет небольшой размер, то он может целиком располагаться внутри одной записи MFT, имеющей, например, размер 2 Кбайт, например файлы размером до 1500 байт. Небольшие файлы NTFS состоят из следующих атрибутов (Рис. 26): стандартная информация (SI — standard information); имя файла (FN — file name); данные (Data); дескриптор безопасности (SD — security descriptor).
Файлы больших размеров не могут разместиться в одной записи MFT. Рассмотрим другие способы размещения файлов, зависящие от их размера.
Рис. 26. Размещение небольшого файла NTFS
Большие файлы (large). Если данные файла не помещаются в одну запись MFT, то этот факт отражается в заголовке атрибута Data, который содержит признак того, что этот атрибут является нерезидентным, то есть находится в отрезках вне таблицы MFT. В этом случае атрибут Data содержит адресную информацию (LCN, VCN, k) каждого отрезка данных (Ошибка! Источник ссылки не найден.).
Рис. 27.Размещение большого файла
Очень большие файлы (huge). Если файл настолько велик, что его атрибут данных, хранящий адреса нерезидентных отрезков данных, не помещается в одной записи, то этот атрибут помещается в другую запись MFT, а ссылка на такой атрибут помещается в основную запись файла (Рис. 28). Эта ссылка содержится в атрибуте Attribute List. Сам атрибут данных по-прежнему содержит адреса нерезидентных отрезков данных.
Рис. 28. Размещение очень большого файла
Сверхбольшие файлы (extremely huge). Для сверхбольших файлов в атрибуте Attribute List можно указать несколько атрибутов, расположенных в дополнительных записях MFT (Рис. 29). Кроме того, можно использовать двойную косвенную адресацию, когда нерезидентный атрибут будет ссылаться на другие нерезидентные атрибуты, поэтому в NTFS не может быть атрибутов слишком большой для системы длины
Каталоги NTFS.
Каждый каталог NTFS представляет собой один вход в таблицу MFT, который содержит атрибут Index Root. Индекс содержит список файлов, входящих в каталог. Индексы позволяют сортировать файлы для ускорения поиска, основанного на значении определенного атрибута. Обычно в файловых системах файлы сортируются по имени. NTFS позволяет использовать для сортировки любой атрибут, если он хранится в резидентной форме.
Имеются две формы хранения списка файлов.
Рис. 29. Размещение сверхбольшого файла
Небольшие каталоги (small indexes). Если количество файлов в каталоге невелико, то список файлов может быть резидентным в записи в MFT, являющейся каталогом. Для резидентного хранения списка используется единственный атрибут — Index Root. Список файлов содержит значения атрибутов файла— это имя файла, а также номер записи MTF, содержащей начальную запись файла.
Большие каталоги (large indexes). По мере того как каталог растет, список файлов может потребовать нерезидентной формы хранения. Однако начальная часть списка всегда остается резидентной в корневой записи каталога в таблице MFT .Имена файлов резидентной части списка файлов формируются как узлы по алгоритму В-дерева (двоичного дерева). Остальные части списка файлов размещаются вне MFT.
Для их поиска используется специальный атрибут Index Allocation, представляющий собой адреса отрезков, хранящих остальные части списка файлов каталога. В результате вместо перебора большого количества имен выполняется сравнение с гораздо меньшим количеством имен узлов и имен в одной из групп каталога.
Если одна из групп каталога становится слишком большой, то ее также делят на группы.
Файловые операции
Файловая система ОС должна предоставлять пользователям набор операций работы с файлами, оформленный в виде системных вызовов. Этот набор обычно состоит из таких системных вызовов, как creat (создать файл), read (читать из файла), write (записать в файл) и некоторых других.
ОС необходимо выполнить ряд универсальных для всех операций действий:
По символьному имени файла найти его характеристики, которые хранятся в файловой системе на диске.
Скопировать характеристики файла в оперативную память, так как только таким образом программный код может их использовать.
На основании характеристик файла проверить права пользователя на выполнение запрошенной операции (чтение, запись, удаление, просмотр атрибутов файла).
Очистить область памяти, отведенную под временное хранение характеристик файла.
Кроме того, каждая операция включает ряд уникальных для нее действий, например чтение определенного набора кластеров диска, удаление файла и т.д.
Дорожки диска разбиты на секторы (рис. б.б). В одном секторе дорожки обычно размещается 512 байт данных. Обмен данными между НМД и ОП осуществляется последовательно кластерами. Кластер — это минимальная единица размещения информации на диске, состоящая из двух или большего числа смежных секторов дорожки (кластеры называют также единицами выделения памяти — allocation unit). Поэтому, если необходимо разместить на диске маленький файл, например размером 20 байт, он все равно займет дисковое пространство размером в кластер (минимум 2 х 512 = 1024 байт).
Количество секторов в кластере всегда равно целой степени 2. Таблица FAT 16 в 16-ти битах должна быть способна отображать значение максимального номера кластера, то есть количество кластеров на диске (или в разделе диска) не больше, чем 2 1й = 65 536. По причине выхода за пределы 16-битовой адресации внутри кластера его максимальный размер должен быть меньше 64 Кбайт, то есть
32 Кбайт. В FAT16 размер кластера (а косвенно и количество кластеров) можно определить, разделив объем памяти диска на 64 Кбайт (65 536) и округлив результат до ближайшего большего числа, кратного степени двойки. Так, для диска емкостью 1,2 Гбайт размер кластера составит: 1 258 291,2/65,5 = 19,2 Кбайт, после округления получим 32 Кбайт; для дисков объемом 2 Гбайт размер кластера будет равен 64 Кбайт, а для 2,5-гигабайтовых дисков — более 64 Кбайт, что недопустимо. Иными словами, FAT 16 практически может работать только с дисками емкостью не более 2 Гбайт.
Поэтому была разработана более мощная 32-разрядная файловая система FAT32. В ней количество секторов и количество кластеров могут быть одинаковыми и ограничено значением 2 32 . Хотя размер кластера с целью экономии дискового пространства можно было бы приравнять размеру сектора, это не сделано по причине большого объема самой FAT — таблицы размещения файлов (напомню, что по имени этой таблицы называют и всю файловую систему целиком), которая для диска, например, емкостью 10 Гбайт будет иметь размер 80 Мбайт (а таких файлов на диске должно быть несколько, включая страховые копии). Одна из таблиц при наличии кэш-памяти для диска загружается в ОП. Поэтому размеры кластеров в FAT32 приняты в соответствии с табл. 6.4.
Емкость, | ал ска, | Гбайт | Размер кластера, Кбайт |
До 8 | |||
До 16 | |||
До 32 | |||
Более 32 |
На диске емкостью 20 Гбайт 10-байтовый файл будет занимать 16 Кбайт памяти (поскольку под него отводится целое число кластеров). Высвободить пространство в кластерах для использования другими файлами позволяют программы сжатия диска, в частности DriveSpace. Но надежность работы файловой системы при этом снижается.
Кластеры, выделяемые одному файлу, могут находиться в любом свободном месте дисковой памяти и необязательно являются смежными. Файлы, хранящиеся в разбросанных по диску кластерах, называются фрагментированными.
Используются следующие системы адресации информации на МД:
□ в BIOS — трехмерная: номер цилиндра (дорожки), магнитной головки (стороны диска), сектора;
□ в DOS — последовательная сквозная нумерация секторов, начиная от внешнего 0-го цилиндра (дорожки), головки 0, сектора 1.
Внешние запоминающие устройства
На каждом диске можно выделить 2 области: системную и данных. Системная область диска (начинается с 0 дорожки, стороны 0, сектора 1) состоит из 3 участков.
□ Главной загрузочной записи (MBR — Master Boot Record), самого первого сектора диска, в котором описывается конфигурация диска: какой раздел (логический диск) является системным (из системного раздела возможна загрузка операционной системы), сколько разделов на этом диске, какого они объема.
Для каждого файла в корневом каталоге (3-я зона системной области) указывается номер его начального кластера, а в этом начальном и следующих кластерах в FAT указываются, соответственно, следующие кластеры файла, и так до последнего, где указан код FFFF. Таблица размещения файлов крайне важна, так как без нее последовательно читать файл на диске (особенно если кластеры файла записаны не подряд, а через промежутки, занятые другими файлами) становится невозможно. Поэтому для надежности FAT на диске дублируется. Когда файл на диске удаляется, все его кластеры маркируются как свободные, но сами данные файла не удаляются (затираются только после записи на их место других данных) — то есть удаленные файлы можно восстановить (команда UNDELETE DOS, утилита UNERASE в пакете Norton Utilities).
□ Корневой каталог диска — список файлов и/или подкаталогов с их параметра
ми. Параметры файла, содержащиеся в корневом каталоге: имя, расширение,
атрибут, размер в байтах, дата и время создания или последнего обновления,
номер начального кластера. Структура записи параметров файла в корневом
каталоге показана в табл. 6.5 (для FAT16).
Таблица 6.5.Структура записи параметров файла
В области данных расположены подкаталоги и сами данные. На жестких дисках системная область создается на каждом логическом диске.
Читайте также: