Логическая организация файла 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Логическая организация файла



Лекция

Организация файловых систем

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

В широком смысле понятие "файловая система" включает:

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

Имена файлов

Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени.

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

Типы файлов

Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги.

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

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

В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:

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

Каталоги могут непосредственно содержать значения характеристик файлов, как это сделано в файловой системе MS-DOS, или ссылаться на таблицы, содержащие эти характеристики, как это реализовано в ОС UNIX (рисунок 1).

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

2).

 

 

Рис. 1. Структура каталогов: а - структура записи каталога MS-DOS (32 байта);
б - структура записи каталога ОС UNIX

 

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

 
 

Рис. 2. Логическая организация файловой системы

а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть)

Права доступа к файлу

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

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

и другие операции с файлами и каталогами.


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

Рис. 5. Матрица прав доступа

 

 

Различают два основных подхода к определению прав доступа:

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

Кэширование диска

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

 

Файловая система MS-DOS

 

Файловая система важнейшая подсистем DOS. Она используется в процессе загрузки операционной системы и в процессе ее работы. Сама операционная система записана на системном диске в виде файлов (IO.SYS, MSDOS.SYS, COMMAND.COM, драйверы, внешние команды и т.д.). Все программы и данные для них хранятся на дисках в виде файлов.

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

На уровне BIOS выполняются элементарные операции с диском, такие как чтение/запись секторов, форматирование и т.п. Этот низкий уровень доступен и прикладной программе.

Таблица разделов и логические диски

Зачем нужно разбивать диск на логические диски?

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

Самый первый сектор жесткого диска (сектор 1, дорожка 0, головка 0) содержит так называемую главную загрузочную запись (Master Boot Record). Эта запись занимает не весь сектор, а только его начальную часть. Сама по себе главная загрузочная запись является программой. Эта программа во время начальной загрузки операционной системы с жесткого диска помещается по адресу 7C00:0000, после чего ей передается управление. В конце самого первого сектора жесткого диска располагается таблица разделов диска (Partition Table). Эта таблица содержит элементы, описывающие раздела диска. В последних двух байтах сектора находится число 55AA. Это признак таблицы разделов.

Элемент таблицы разделов диска.

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

Приведем формат первого сектора жесткого диска:

 

Смещение Размер Содержимое
(+0) 1BEh Загрузочная запись - программа, которая загружается и выполняется во время начальной загрузки операционной системы
(+1BEh) 10H Элемент таблицы разделов диска
(+1CEh) 10H Элемент таблицы разделов диска
(+1DEh) 10H Элемент таблицы разделов диска
(+1EEh) 10H Элемент таблицы разделов диска
(+1FEh)   Признак таблицы разделов - 55AAh

 

Все элементы таблицы разделов диска имеют одинаковый формат:

 

Смещение Размер Содержимое
(+0)   Признак активного раздела: 0 - раздел не активный; 80h - раздел активный.
(+1)   Номер головки для начального сектора раздела.
(+2)   Номер сектора и цилиндра для начального сектора раздела в формате функции чтения сектора INT 13h.
(+4)   Код системы: 0 - неизвестная система; 1, 4 - DOS; 5 - расширенный раздел DOS.
(+5)   Номер головки для последнего сектора раздела.
(+6)   Номер сектора и цилиндра для последнего сектора раздела в формате функции чтения сектора INT 13h.
(+8)   Относительный номер сектора начала раздела.
(+12)   Размер раздела в секторах.

 

Загрузка операционной системы с жесткого диска - двухступенчатый процесс. Вначале модули инициализации BIOS считывают главную загрузочную запись в память по адресу 7C00:0000 и ей передается управление. Главная загрузочная запись просматривает таблицу разделов и находит активный раздел. Если активных разделов несколько, на консоль выводится сообщение о необходимости выбора активного раздела для продолжения загрузки.

После того как активный раздел найден, главная загрузочная запись считывает самый первый сектор раздела в оперативную память. Этот сектор содержит загрузочную запись, которой главная загрузочная запись и передает управление.

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

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

 

Таблица размещения файлов

Сразу после загрузочного сектора на логическом диске находятся сектора, содержащие таблицу размещения файлов FAT (File Allocation Table). Доступ к информации, записанной на магнитном диске, может выполняться либо последовательным, либо прямым методом доступа. Использование прямого метода доступа позволяет позиционировать головки сразу на тот файл, который вам нужен. Операционные системы, подобные DOS, UNIX, OS/2 при создании файла для него не задается начальное распределение памяти в дорожках или секторах. По мере того, как файл увеличивается в размерах, операционная система распределяет этому файлу сектора из числа свободных, не используемых другими файлами. При этом файл располагается не обязательно в смежных областях диска, он может быть разбросан по разным дорожкам и секторам.

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

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

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

Утилиты операционной системы проверяют диск на предмет наличия дефектных областей. Кластеры, которые находятся в этих дефектных областях, отмечаются в FAT как плохие и не используются операционной системой.

 

+­­­­­+

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦

¦AUTOEXECBAT¦... ¦Номер 1-го кластера: 11¦..¦ ¦

+­­­­­­­­­­­+­­­­­+­­­­­­­­­­­­­­­­­­­­­­­+­­¦ ¦

¦CONFIG SYS¦... ¦Номер 1-го кластера: 27¦..¦ ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦

¦ ¦

¦ ¦

+­­­­­+­­­­­­+

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦

¦...¦12¦13¦14¦15¦16¦17¦18¦19¦20¦FF¦ 0¦ 0¦ 0¦ 0¦...¦ ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+ ¦

+­­­­­­­­­­­­­­­­­­­+ ¦

¦...¦28¦29¦30¦FF¦...¦ ¦

+­­­­­­­­­­­­­­­­­­­+ ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

На этом рисунке показаны фрагменты корневого каталога диска С: и элементы FAT для файлов autoexec.bat и config.sys. Реально эти файлы не используют столько кластеров. Последняя ячейка, соответствующая последнему кластеру распределенному этому файлу, содержит специальное значение - FF. Существуют два формата FAT - 12-битовый и 16-битовый. Эти форматы используют, соответственно, 12 и 16 битов для хранения информации об одном кластере диска.

12-битовый формат удобен для дискет с небольшим количеством секторов - вся таблица размещения файлов помещается целиком в одном секторе. Если размер диска такой, что для представления всех секторов двенадцати разрядов недостаточно, можно увеличить размер кластера, например до восьми секторов. Однако большой размер кластера приводит к неэффективному использованию дискового пространства. Это происходит из-за того, что минимальный выделяемый файлу элемент - кластер - имеет слишком большой размер. Даже для файла, имеющего длину 1 байт выделяется целиком кластер. Значит, если размер кластера составляет 8 секторов, то для хранения одного байта будет использовано 4 килобайта дисковой памяти.

При использовании FAT 16-битового формата операционная система может работать с диском, который имеет размер более 32 мегабайт. DOS версии 4.0 при использовании 16-битового формата FAT и кластеров размером 4 сектора может работать с разделами, по размеру достигающими 134 мегабайтов.

Опишем подробно формат FAT.

Первый байт FAT называется "Описатель среды" (Media Descriptor) или байт ID идентификации FAT. Он имеет такое же значение, как и байт-описатель среды, находящийся в BOOT -секторе логического диска.

Следующие 5 байтов для 12-битового формата или 7 байтов для 16-битового формат всегда содержат значение 0ffh.

Остальная часть FAT состоит из 12-битовых или 16-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:

FAT12 FAT16 Что означает
000h 0000h Свободный кластер
ff0h - ff6h fff0h - fff6h Зарезервированный кластер
ff7h fff7h Плохой кластер
ff8h - fffh fff8h - ffffh Последний кластер в списке
002h - fefh 0002h - ffefh Номер следующего кластера в списке

 

Общая схема использования FAT такая:

  • Читаем FAT целиком в память. Обычно FAT располагается сразу после BOOT -сектора. Для точного определения начального сектора FAT следует прочитать в память BOOT -сектор и проанализировать содержимое блока параметров BIOS. В поле ressecs записано количество зарезервированных секторов, которые располагаются перед FAT. Поле fatsize содержит размер FAT в секторах. Кроме того, следует учитывать, что на диске может находиться несколько копий FAT. Операционная система использует только первую копию, остальные нужны для утилит восстановления содержимого диска. Количество копий FAT находится в поле fatcnt BOOT -сектора.
  • Затем необходимо узнать номер первого кластера файла, для которого необходимо определить его расположение на диске.
  • Используем номер первого кластера как индекс в FAT для извлечения номера следующего кластера.
  • Повторяем предыдущую процедуру до тех пор, пока извлеченное из FAT значение не будет соответствовать концу файла.

Процедура извлечения номера кластера из FAT зависит от формата таблицы размещения файлов.

16-битовую FAT можно представить как массив 16-битовых чисел. Для определения номера следующего кластера вам надо просто извлечь 16-битовое значение из FAT, использовав в качестве индекса номер предыдущего кластера.

Для 12-битовой FAT процедура значительно сложнее. Необходимо выполнить следующие действия:

  • Умножить номер начального кластера на 3.
  • Разделить результат на 2 (так как каждый элемент таблицы имеет длину 1.5 байта).
  • Прочитать 16-битовое слово из FAT, используя в качестве смещения значение, полученное после деления на 2.
  • Если номер начального кластера четный, на выбранное из FAT слово надо наложить маску 0fffh, оставив младшие 12 битов. Если номер начального кластера нечетный, выбранное из FAT значение необходимо сдвинуть вправо на 4 бита, оставив старшие 12 битов.
  • Полученный результат - номер следующего кластера в цепочке, значение 0fffh соответствует концу цепочки кластеров.

 

. Файлы и каталоги

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

Корневой каталог находится сразу за последней копией FAT. Количество секторов, занимаемых одной копией FAT, находится в блоке параметров BIOS в BOOT -секторе в поле fatsize, количество копий FAT - в поле fatcnt блока BPB. Следовательно, перед корневым каталогом находится один BOOT -сектор и (fatcnt_*_fatsize) секторов таблицы размещения файлов FAT.

Размер корневого каталога можно определить исходя из значения поля rootsize. В этом поле при форматировании диска записывается максимальное количество файлов и каталогов, которые могут находиться в корневом каталоге. Для каждого элемента в каталоге отводится 32 байта, поэтому корневой каталог имеет длину (32_*_rootsize) байтов.

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

RootSecs = sectsize_/_(32_*_rootsize)

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

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

 

Области логического диска Номер начального сектора

на логическом диске

 

+­­­­­­­­­­­­­­­­­­­+

¦ ¦ 0

¦ BOOT-сектор и ¦

¦ зарезервированные ¦

¦ сектора ¦

¦ ¦

+­­­­­­­­­­­­­­­­­­­¦

¦ ¦ ressecs - количество резервных

¦ Первая копия FAT ¦ секторов

¦ ¦

+­­­­­­­­­­­­­­­­­­­¦

¦ ¦ ressecs+fatsize

¦ Вторая копия FAT ¦

¦ ¦

+­­­­­­­­­­­­­­­­­­­¦

¦ ¦ ressecs+(fatsize*fatcnt)

¦ Корневой каталог ¦

¦ ¦

+­­­­­­­­­­­­­­­­­­­¦

¦ ¦ ressecs+(fatsize*fatcnt)+

¦ Область данных ¦ sectsize_/_(32*rootsize)

¦ ¦

+­­­­­­­­­­­­­­­­­­­+

Область данных разбита на кластеры, причем нумерация кластеров начинается с числа 2. Кластеру с номером 2 соответствуют первые сектора области данных. Приведем формулу, которая позволит связать номер кластера с номерами секторов, занимаемых им на логическом диске:

SectNu = DataStart + ((ClustNu-2) * clustsize)

В этой формуле:

SectNu - номер первого сектора, распределенного

кластеру с номером ClustNu;

 

DataStart = ressecs+(fatsize*fatcnt)+(sectsize/(32*rootsize));

 

ClustNu - номер кластера, для которого необходимо определить

номер первого сектора;

 

clustsize - количество секторов, занимаемых кластером,

находится в блоке параметров BIOS.

 

 

Приведем формат дескриптора:

 

Смещение Размер Содержимое
(+0)   Имя файла или каталога, выравненное на левую границу и дополненное пробелами.
(+8)   Расширение имени файла, выравненное на левую границу и дополненное пробелами.
(+11)   Атрибуты файла.
(+12)   Зарезервировано.
(+22)   Время создания файла или время его последней модификации.
(+24)   Дата создания файла или дата его последней модификации.
(+26)   Номер первого кластера, распределенного файлу.
(+28)   Размер файла в байтах.

 

Байт атрибутов является принадлежностью каждого файла. Биты этого байта имеют следующие значения:

 

  Файл предназначен только для чтения, в этот файл нельзя писать и его нельзя стирать.
  Скрытый файл, этот файл не будет появляться в списке файлов, создаваемом командой операционной системы DIR.
  Системный файл. Этот бит обычно установлен в файлах, являющихся составной частью операционной системы.
  Данный дескриптор описывает метку диска. Для этого дескриптора поля имени файла и расширения имени файла должны рассматриваться как одно поле длиной 11 байтов. Это поле содержит метку диска.
  Дескриптор описывает файл, являющийся подкаталогом данного каталога.
  Флаг архивации. Если этот бит установлен в 1, то это означает, что данный файл не был выгружен утилитой архивации (например, программой BACKUP).
6-7 Зарезервированы.

 

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

". "

Этот дескриптор указывает на содержащий его каталог. Т.е. каталог имеет ссылку сам на себя.

Второй специальный дескриптор содержит в поле имени строку:

".. "

Этот дескриптор указывает на каталог более высокого уровня.

Если в поле номера первого занимаемого кластера дескриптора с именем ".. " находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге.

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

При удалении файла первый байт его имени заменяется на байт E5h (символ 'х'). Все кластеры, распределенные файлу, отмечаются в FAT как свободные.

 

Формат поля времени показан на рисунке:

15 11 10 5 4 0

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

¦ Часы (0...23) ¦ Минуты (0...59) ¦ Секунды/2 (0...29) ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

 

Формат даты обновления файла напоминает формат времени:

15 9 8 5 4 0

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

¦ Год (0...119) ¦ Месяц (1...12) ¦ День (1...31) ¦

+­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­+

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

Поле длины в дескрипторе содержит точную длину файла в байтах. Для каталогов в поле длины записано нулевое значение.

 

 

Файловые системы Windows

 

В Windows версии 5.0 поддерживаются три' файловые системы:

• NTFS (Windows NT file system) — исключительно для Windows NT;

• FAT (File Allocation Table) — для совместимости с приложениями MS-DOS;

• FAT 32 — модифицированная версия FAT, используемая в Windows95 OSR2 и Windows 98.

Выбор файловой системы зависит от используемых приложений и от требований, предъявляемых к ней. У каждой свои полезные свойства, но возможности защиты и аудита систем различны.

Также в новой версии Windows NT поддерживаются распределенная файловая система DFS (Distributed File System) и файловая система с шифрованием EFS (Encrypted File System). Строго говоря, последние не являются файловыми системами в полной мере, как, например, FAT. DFS представляет собой расширение сетевого сервиса и позволяет объединять в единый логический том сетевые ресурсы, расположенные на разделах с различными файловыми системами. EFS — это надстройка над NTFS, добавляющая к последней функции шифрования данных.

 

Файловая система FAT

 

Файловая система Windows FAT функционирует аналогично MS-DOS и.

Windows NT, начиная с версии 3.5, использует биты атрибута для поддержки длинных (до 255 символов) имен файлов в разделах FAT. Применяемый для этого способ не мешает MS-DOS или OS/2 обращаться к подобному разделу. Всякий раз, когда пользователь создает файл с длинным (превышающим стандартное для FAT ограничение «8+3») именем, Windows NT учреждает элемент каталога для этого файла, соответствующий соглашению «8+3» (по тем правилам, что и для NTFS) с добавлением одного или нескольких вторичных элементов каталога. Каждый из таких вторичных элементов рассчитан на 13 символов в длинном имени файла и сохраняет длинную часть имени файла в UNICODE. Для этих элементов устанавливаются атрибуты: том, системный, скрытый, только для чтения. MS-DOS и OS/2 игнорируют элементы каталога с таким набором атрибутов, и последние не видимы в этих операционных системах. Вместо них MS-DOS и OS/2 обращаются к элементам, содержащим информацию в стандартном виде «8+3».

Некоторые дисковые утилиты сторонних производителей, взаимодействуя непосредственно с FAT, могут расценивать созданные Windows NT элементы каталога с длинным именем файла как ошибки логической структуры тома. Попытки этих утилит исправить ошибки могут привести к потере файлов и каталогов. Чтобы избежать подобных неприятностей, не используйте не проверенные на совместимость с Windows NT утилиты работы с диском или его дефрагментации.

 

Файловая система FAT32

FAT32 — модифицированная версия FAT, позволяющая создавать разделы объемом более 2 Гб. Кроме того, она дает возможность использовать кластеры меньшего размера, и, соответственно, более эффективно расходовать дисковое пространство. Впервые данная файловая система появилась в Windows 95 OSR2. В таблице 4-1 сравниваются размеры кластеров, устанавливаемых по умолчанию для FAT и FAT32.

 

Объем диска Размер кластера на FAT Размер кластера на FAT32
0 Мб — 32 Мб 512 байт  
32 Мб — б4 Мб 1 Кб  
64 Мб—127 Мб 2 Кб  
128 Мб- 255 Мб 4 Кб  
256Мб—511Мб 8 Кб  
512Мб—023Мб 16 Кб  
1024Мб—48Мб 32 Кб  
260 Мб – 8 Гб   4 Кб
8 Гб — 16 Гб   8 Кб
16 Гб – 32 Гб   16 Кб
> 32 Гб   32 Кб
 

Таблица 4-1

 

 

Формат новой файловой системы не совместим с прежним форматом FAT, поэтому следует внимательно подходить к выбору для работы с диском

 

Файловая система NTFS

 

По сравнению с FAT или FAT32, NTFS предоставляет пользователю новые возможностит: эффективность, надежность и совместимость. Она разработана для быстрого выполнения на очень больших жестких дисках файловых операций.

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

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

Эта основанная на атрибутах файловая система поддерживает объектно-ориентированные приложения, обрабатывая все файлы как объекты с атрибутами, определяемыми пользователем и системой.

 

Главная файловая таблица

Каждый файл на томе NTFS представлен записью в специальном файле — главной файловой таблице MFT (Master File Table). NTFS резервирует первые 1б записей таблицы для специальной информации. Первая запись таблицы описывает непосредственно главную файловую таблицу. За ней следует зеркальная запись MFT. Если первая запись MFT разрушена, NTFS считывает вторую запись, чтобы отыскать зеркальный файл MFT, первая запись которого идентична первой записи MFT. Местоположение сегментов данных MFT и зеркального файла MFT записано в секторе начальной загрузки. Дубликат сектора начальной загрузки находится в логическом центре диска. Третья запись MFT — файл регистрации, применяемый для восстановления файлов.

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

 

Лекция

ИНДЕКСЫ

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

  • Идентификатор владельца файла. Права разделены между индивидуальным владельцем и "групповым". Суперпользователь имеет право доступа ко всем файлам в системе.
  • Тип файла. Файл может быть файлом обычного типа, каталогом, специальным файлом, а также абстрактным файлом канала (организующим обслуживание запросов в порядке поступления, "первым пришел - первым вышел").
  • Права доступа к файлу. Система разграничивает права доступа к файлу для трех классов пользователей: индивидуального владельца файла, группового владельца и прочих пользователей; каждому классу выделены определенные права на чтение, запись и исполнение файла.
  • Календарные сведения: время внесения последних изменений в файл, время последнего обращения к файлу, время внесения последних изменений в индекс.
  • Число указателей на файл, означающее количество имен, используемых при поиске файла в иерархии каталогов.
  • Таблица адресов на диске в которых располагается информация файла.. Дисковые блоки, содержащие информацию файла, указываются в индексе.
  • Размер файла.
Владелец mjb группа os тип – обычный файл права доступа rwxr-xr-x последнее обращение 23 Окт 1984 13:45 последнее изменение 22 Окт 1984 10:30 коррекция индекса 23 Окт 1984 13:30 размер 6030 байт дисковые адреса

Рисунок 3. Пример дискового индекса

 

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

  • Состояние индекса в памяти, отражающее
  • заблокирован ли индекс,
  • ждет ли снятия блокировки с индекса какой-либо процесс,
  • отличается ли представление индекса в памяти от своей дисковой копии в результате изменения содержимого индекса,
  • отличается ли представление индекса в памяти от своей дисковой копии в результате изменения содержимого файла,
  • находится ли файл в верхней точке.
  • Логический номер устройства файловой системы, содержащей файл.
  • Номер индекса. Ядро идентифицирует номер дискового индекса по его местоположению в массиве.
  • Указатели на другие индексы в памяти. Ядро связывает индексы в хеш-очереди и включает их в список свободных индексов. Хеш-очередь идентифицируется в соответствии с логическим номером устройства и номером индекса.
  • Счетчик ссылок, означающий количество активных экземпляров файла (таких, которые открыты).

 

Обращение к индексам



Поделиться:


Последнее изменение этой страницы: 2016-07-16; просмотров: 1157; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.42.94 (0.133 с.)