Автор: Пользователь скрыл имя, 18 Ноября 2010 в 11:56, реферат
Файловая система - это часть операционной системы, назначение которой состоит в том, чтобы обеспечить пользователю удобный интерфейс при работе с данными, хранящимися на диске, и обеспечить совместное использование файлов несколькими пользователями и процессами.
Следующим этапом реализации запроса к файлу является проверка прав доступа к нему. Для этого сравниваются полномочия пользователя или процесса, выдавших запрос, со списком разрешенных видов доступа к данному файлу. Если запрашиваемый вид доступа разрешен, то выполнение запроса продолжается, если нет, то выдается сообщение о нарушении прав доступа.
На логическом уровне определяются координаты запрашиваемой логической записи в файле, то есть требуется определить, на каком расстоянии (в байтах) от начала файла находится требуемая логическая запись. При этом абстрагируются от физического расположения файла, он представляется в виде непрерывной последовательности байт. Алгоритм работы данного уровня зависит от логической организации файла. Например, если файл организован как последовательность логических записей фиксированной длины l, то n-ая логическая запись имеет смещение l((n-1) байт. Для определения координат логической записи в файле с индексно-последовательной организацией выполняется чтение таблицы индексов (ключей), в которой непосредственно указывается адрес логической записи.
Рис. 2.2. Функции физического уровня файловой системы
Исходные
данные: V - размер блока;
N - номер первого блока
файла
S - смещение логической
записи в файле
Требуется определить на физическом уровне:
n
- номер блока, содержащего
s - смещение логической записи в пределах блока
n = N +
[S/V], где [S/V] - целая часть числа
S/V
s = R [S/V] - дробная часть числа S/V
На физическом уровне файловая система определяет номер физического блока, который содержит требуемую логическую запись, и смещение логической записи в физическом блоке. Для решения этой задачи используются результаты работы логического уровня - смещение логической записи в файле, адрес файла на внешнем устройстве, а также сведения о физической организации файла, включая размер блока. Рисунок 2.2 иллюстрирует работу физического уровня для простейшей физической организации файла в виде непрерывной последовательности блоков. Подчеркнем, что задача физического уровня решается независимо от того, как был логически организован файл.
После определения номера физического блока, файловая система обращается к системе ввода-вывода для выполнения операции обмена с внешним устройством. В ответ на этот запрос в буфер файловой системы будет передан нужный блок, в котором на основании полученного при работе физического уровня смещения выбирается требуемая логическая запись.
2.2 Современные архитектуры файловых систем
Разработчики новых операционных систем стремятся обеспечить пользователя возможностью работать сразу с несколькими файловыми системами. В новом понимании файловая система состоит из многих составляющих, в число которых входят и файловые системы в традиционном понимании.
Новая файловая система имеет многоуровневую структуру (рисунок 2.3), на верхнем уровне которой располагается так называемый переключатель файловых систем (в Windows 95, например, такой переключатель называется устанавливаемым диспетчером файловой системы - installable filesystem manager, IFS). Он обеспечивает интерфейс между запросами приложения и конкретной файловой системой, к которой обращается это приложение. Переключатель файловых систем преобразует запросы в формат, воспринимаемый следующим уровнем - уровнем файловых систем.
Рис. 2.3. Архитектура современной файловой системы
Каждый компонент уровня файловых систем выполнен в виде драйвера соответствующей файловой системы и поддерживает определенную организацию файловой системы. Переключатель является единственным модулем, который может обращаться к драйверу файловой системы. Приложение не может обращаться к нему напрямую. Драйвер файловой системы может быть написан в виде реентерабельного кода, что позволяет сразу нескольким приложениям выполнять операции с файлами. Каждый драйвер файловой системы в процессе собственной инициализации регистрируется у переключателя, передавая ему таблицу точек входа, которые будут использоваться при последующих обращениях к файловой системе.
Для выполнения своих функций драйверы файловых систем обращаются к подсистеме ввода-вывода, образующей следующий слой файловой системы новой архитектуры. Подсистема ввода вывода - это составная часть файловой системы, которая отвечает за загрузку, инициализацию и управление всеми модулями низших уровней файловой системы. Обычно эти модули представляют собой драйверы портов, которые непосредственно занимаются работой с аппаратными средствами. Кроме этого подсистема ввода-вывода обеспечивает некоторый сервис драйверам файловой системы, что позволяет им осуществлять запросы к конкретным устройствам. Подсистема ввода-вывода должна постоянно присутствовать в памяти и организовывать совместную работу иерархии драйверов устройств. В эту иерархию могут входить драйверы устройств определенного типа (драйверы жестких дисков или накопителей на лентах), драйверы, поддерживаемые поставщиками (такие драйверы перехватывают запросы к блочным устройствам и могут частично изменить поведение существующего драйвера этого устройства, например, зашифровать данные), драйверы портов, которые управляют конкретными адаптерами.
Большое
число уровней архитектуры
В
ходе инициализации драйвер
Внесенная в цепочку вызова процедура драйвера может решить передать запрос дальше - в измененном или в неизмененном виде - на следующий уровень, или, если это возможно, процедура может удовлетворить запрос, не передавая его дальше по цепочке.
3. Виды файловых систем
3.1 Файловая система FAT
Большинство существующих на сегодняшний день файловых систем построены на основе таблицы размещения файлов (File Allocation Table - FAT), которая содержит дорожки данных в каждом кластере на диске. Существует несколько типов файловой системы FAT - FAT 12, FAT 16 и FAT 32. Они отличаются количеством цифр, используемых в таблице размещения файлов. Другими словами, в FAT 32 используется 32-разрядное число для хранения дорожки данных в каждом кластере, в FAT 16 - 16-разрядное число и т.д. В настоящее время существуют следующие типы файловой системы FAT:
FAT
12, используемая в разделах
FAT
16, используемая в разделах
FAT 32, используемая (необязательно) в разделах емкостью от 512 Мбайт до 2 Тбайт.
Файловые системы
FAT 12 и FAT 16 изначально применяются в
DOS и Windows и поддерживаются практически
всеми известными на сегодняшний день
операционными системами. Большинство
персональных компьютеров поставляется
с жесткими дисками, на которых установлена
одна из файловых систем FAT.
Файловая система FAT 32 поддерживается
операционной системой Windows 95 и более поздними
версиями, а также Windows 2000.
Для обеспечения пользовательским приложениям
доступа к файлам независимо от типа используемого
диска в операционной системе предусмотрено
несколько структур. Эти структуры поддерживаются
системами Windows и представлены ниже в порядке
расположения на диске:
Информация о
каждом разделе сохраняется в
загрузочном секторе раздела (или логического
диска) в начале каждого раздела. Существует
также основная таблица списка разделов,
помещенная в загрузочный сектор главного
раздела.
Загрузочный сектор главного раздела
(или главная загрузочная запись (Master Boot
Record - MBR)) является первым сектором на жестком
диске (цилиндр 0, головка 0, сектор 1) и состоит
из двух элементов.
Таблица главного раздела. Содержит список разделов на диске и расположение загрузочных секторов соответствующих логических дисков. Эта таблица очень маленькая и может содержать максимум четыре записи. Таким образом, для получения большего количества разделов в операционной системе (например, DOS) можно создать один дополнительный раздел и поместить в него несколько логических дисков.
Главный загрузочный код. Небольшая программа, которая выполняется системой BIOS. Основная функция этого кода - передача управления в раздел, который обозначен как активный (или загрузочный).
Загрузочный
сектор - это первый сектор на любом
логическом диске DOS. Например, на дискете
или на диске Zip это самый первый физический
сектор, так как дискету нельзя разбить
на разделы, и она имеет только один логический
диск. На жестком диске загрузочный сектор
(секторы) располагается в начале каждого
раздела, не являющегося дополнительным,
или в начале любой области диска, распознаваемой
как логический диск DOS.
Эти секторы немного похожи на загрузочные
секторы разделов, так как содержат таблицы
со специальной информацией о логическом
диске.
Блок параметров диска, в котором содержится специфическая информация, например размер раздела, количество используемых секторов диска, размер кластера и метка тома.
Загрузочный код - программа, которая начинает процесс загрузки операционной системы. Для DOS и Windows 9x/Me это файл Io.sys.
Загрузочный сектор дискеты загружается ROM BIOS, а при загрузке системы с жесткого диска MBR передает управление загрузочному сектору активного раздела. В обоих случаях загрузочный сектор логического диска получает управление. Он выполняет некоторые проверки и затем пытается прочитать с диска первый системный файл (в DOS/Windows это файл Io.sys). Загрузочный сектор не виден, так как находится вне области хранения файлов логического диска.
Каталог - это база данных, содержащая информацию о записанных на диске файлах. Каждая запись в ней имеет длину 32 байт, и между записями не должно быть никаких разделителей. В каталоге сохраняется практически вся информация о файле, которой располагает операционная система.
Имя файла и расширение - восемь символов имени и три символа расширения; точка между именем и расширением файла подразумевается, но не включается в эту запись.
Байт атрибутов файла, содержащий флаг, который представляет стандартные атрибуты файла.
Время и дата создания файла или его модификации.
Размер файла в байтах.
Ссылка на начальный кластер - номер кластера, с которого начинается файл.
Информация
о расположении файла, т.е. расположении
оставшихся кластеров, содержится в FAT.
Все каталоги имеют одинаковую структуру.
Записи в этой базе данных сохраняют важную
информацию о файлах, которая связана
с информацией, хранящейся в FAT, посредством
одного из полей записи - номера первого
занимаемого файлом кластера на диске.
Если бы все файлы на диске не превышали
размеров одного кластера, потребности
в FAT вообще бы не возникло. В FAT содержится
информация о файле, отсутствующая в каталоге,
- номера кластеров, в которых расположен
весь файл.
Таблица размещения
файлов (FAT) содержит номера кластеров,
в которых расположены файлы на диске.
Каждому кластеру в FAT соответствует одно
число. Секторы, не содержащие пользовательских
данных (файлов), не отражены в FAT. К таким
секторам относятся загрузочные секторы,
таблицы размещения файлов и секторы корневого
каталога.
В файловой системе FAT дисковое пространство
разбивается не на секторы, а на группы
секторов, которые называются кластерами
(ячейками размещения). Кластер содержит
один или несколько секторов. Размер кластера
определяется при делении диска на разделы
с помощью программы Fdisk и зависит от размера
создаваемого раздела. Наименьший размер
диска, который может занимать файл ненулевого
размера, - один кластер. Каждый файл использует
целое число кластеров. Например, если
файл занимает на один байт больше размера
кластера, то для его размещения на диске
будет выделено два кластера.
FAT - это электронная таблица, управляющая
распределением дискового пространства.
Каждая ячейка этой таблицы связана с
определенным кластером на диске. Число,
содержащееся в этой ячейке, сообщает
о том, использован ли данный кластер под
какой-либо файл и, если использован, где
находится следующий кластер этого файла.