Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Логическая организация файла↑ Стр 1 из 5Следующая ⇒ Содержание книги Похожие статьи вашей тематики
Поиск на нашем сайте
Лекция Организация файловых систем Файловая система - это часть операционной системы, которая обеспечивает пользователю удобный интерфейс при работе с данными, хранящимися на диске, и совместное использование файлов несколькими пользователями и процессами. В широком смысле понятие "файловая система" включает:
Имена файлов Файлы идентифицируются именами. Пользователи дают файлам символьные имена, при этом учитываются ограничения ОС как на используемые символы, так и на длину имени. Обычно разные файлы могут иметь одинаковые символьные имена. В этом случае файл однозначно идентифицируется так называемым составным именем, представляющем собой последовательность символьных имен каталогов. В некоторых системах одному и тому же файлу не может быть дано несколько разных имен, а в других такое ограничение отсутствует. В последнем случае операционная система присваивает файлу дополнительно уникальное имя, так, чтобы можно было установить взаимно-однозначное соответствие между файлом и его уникальным именем. Уникальное имя представляет собой числовой идентификатор и используется программами операционной системы. Примером такого уникального имени файла является номер индексного дескриптора в системе UNIX. Типы файлов Файлы бывают разных типов: обычные файлы, специальные файлы, файлы-каталоги. Обычные файлы в свою очередь подразделяются на текстовые и двоичные. Текстовые файлы состоят из строк символов, представленных в ASCII-коде. Это документы, исходные тексты программ и т.п. Двоичные файлы не используют ASCII-коды и имеют сложную внутреннюю структуру. Специальные файлы - это файлы, ассоциированные с устройствами ввода-вывода, которые позволяют пользователю выполнять операции ввода-вывода, используя обычные команды записи в файл или чтения из файла. Эти команды обрабатываются вначале программами файловой системы, а затем преобразуются ОС в команды управления соответствующим устройством. Специальные файлы, так же как и устройства ввода-вывода, делятся на блок-ориентированные и байт-ориентированные. Каталог - это, с одной стороны, группа файлов, объединенных пользователем, а с другой стороны - это файл, содержащий системную информацию о группе файлов, его составляющих. В каталоге содержится список файлов, входящих в него, и устанавливается соответствие между файлами и их атрибутами. В разных файловых системах могут использоваться в качестве атрибутов разные характеристики, например:
Каталоги могут непосредственно содержать значения характеристик файлов, как это сделано в файловой системе MS-DOS, или ссылаться на таблицы, содержащие эти характеристики, как это реализовано в ОС UNIX (рисунок 1). Каталоги могут образовывать иерархическую структуру за счет того, что каталог более низкого уровня может входить в каталог более высокого уровня (рисунок 2).
Рис. 1. Структура каталогов: а - структура записи каталога MS-DOS (32 байта);
Иерархия каталогов может быть деревом или сетью. Каталоги образуют дерево, если файлу разрешено входить только в один каталог, и сеть - если файл может входить сразу в несколько каталогов. В MS-DOS каталоги образуют древовидную структуру, а в UNIX'е - сетевую. Как и любой другой файл, каталог имеет символьное имя и однозначно идентифицируется составным именем, содержащим цепочку символьных имен всех каталогов, через которые проходит путь от корня до данного каталога. Рис. 2. Логическая организация файловой системы а - одноуровневая; б - иерархическая (дерево); в - иерархическая (сеть) Права доступа к файлу Определить права доступа к файлу - значит определить для каждого пользователя набор операций, которые он может применить к данному файлу. В разных файловых системах может быть определен свой список операций доступа.
и другие операции с файлами и каталогами. Рис. 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 байтов, описывающая часть диска, называемую разделом. В структуре описаны границы раздела, там располагается информация о размере раздела в секторах и о назначении раздела. Разделы диска могут быть активными, активный раздел может быть использован для загрузки операционной системы. Приведем формат первого сектора жесткого диска:
Все элементы таблицы разделов диска имеют одинаковый формат:
Загрузка операционной системы с жесткого диска - двухступенчатый процесс. Вначале модули инициализации 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-битовых ячеек, каждая ячейка соответствует одному кластеру диска. Эти ячейки могут содержать следующие значения:
Общая схема использования FAT такая:
Процедура извлечения номера кластера из FAT зависит от формата таблицы размещения файлов. 16-битовую FAT можно представить как массив 16-битовых чисел. Для определения номера следующего кластера вам надо просто извлечь 16-битовое значение из FAT, использовав в качестве индекса номер предыдущего кластера. Для 12-битовой FAT процедура значительно сложнее. Необходимо выполнить следующие действия:
. Файлы и каталоги Файловая система 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.
Приведем формат дескриптора:
Байт атрибутов является принадлежностью каждого файла. Биты этого байта имеют следующие значения:
В любом каталоге, кроме корневого, два первых дескриптора имеют специальное назначение. Первый дескриптор содержит в поле имени строку: ". " Этот дескриптор указывает на содержащий его каталог. Т.е. каталог имеет ссылку сам на себя. Второй специальный дескриптор содержит в поле имени строку: ".. " Этот дескриптор указывает на каталог более высокого уровня. Если в поле номера первого занимаемого кластера дескриптора с именем ".. " находится нулевое значение, это означает, что данный каталог содержится в корневом каталоге. Таким образом, в древовидной структуре каталогов имеются ссылки как в прямом, так и в обратном направлении. Эти ссылки можно использовать для проверки сохранности структуры каталогов файловой системы. При удалении файла первый байт его имени заменяется на байт 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.
Таблица 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, обеспечивающая очень быстрый доступ к файлам.
Лекция ИНДЕКСЫ Индексы существуют на диске в статической форме и ядро считывает их в память прежде, чем начать с ними работать. Дисковые индексы включают в себя следующие поля:
Рисунок 3. Пример дискового индекса
Содержимое файла меняется только тогда, когда в файл производится запись. Содержимое индекса меняется как при изменении содержимого файла, так и при изменении владельца файла, прав доступа и набора указателей. Изменение содержимого файла автоматически вызывает коррекцию индекса, однако коррекция индекса еще не означает изменения содержимого файла. Копия индекса в памяти, кроме полей дискового индекса, включает в себя и следующие поля:
Обращение к индексам Ядро UNIX идентифицируе
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-07-16; просмотров: 1199; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.135.202.168 (0.012 с.) |