Добавлен: 20.10.2018
Просмотров: 474
Скачиваний: 7
13. Файловые системы и организация внешней памяти
Файловая система (ФС) – это та часть ОС, которая отвечает за
организацию хранения данных на устройствах внешней памяти. Главное
назначение ФС – сокрытие технических деталей работы конкретных
устройств хранения данных и предоставление пользователям (людям и
приложениям) удобного и простого способа доступа к данным. В ОС уже
многие годы стандартным способом организации хранения данных является
использование файлов с возможностью группирования их в каталоги. Файлы
и каталоги – это логические понятия, создаваемые системой, сами данные
хранятся во внешней памяти в виде набора байтов на жестких дисках разных
типов (магнитных, оптических). Преобразование символьных имен файлов и
каталогов в адреса данных на дисках является важнейшей задачей ФС. За
время существования ВТ было разработано множество различных ФС. В
настоящее время наиболее часто используются следующие ФС:
FAT16/FAT32,
NTFS,
ufs.
Современные ОС имеют возможность
поддерживать на одном компьютере несколько разных ФС.
Для правильного понимания работы ФС необходимо иметь представление
о следующих моментах, связанных с использованием файлов.
1. По способу использования файлы различаются на:
обычные, т.е. содержащие информацию произвольного характера;
каталоги, содержащие информацию о сгруппированных вместе файлах
или подкаталогах;
специальные, или фиктивные файлы, которые связываются с
устройствами ввода/вывода для унификации механизмов доступа к
данным.
2. Чаще всего набор файлов на диске с помощью каталогов структурируется
в виде иерархического дерева (дерево каталогов).
3. Каждый файл имеет символьное имя, которое может быть простым
(собственно имя файла) или составным (полное имя, включая имена всех
каталогов, начиная с главного).
4. Файлы имеют характеристики, или атрибуты, набор которых зависит от
типа ФС; важнейшими атрибутами являются: размер файла, дата и время
создания, тип файла, разрешенные операции.
5. Файлы могут иметь разную логическую организацию, например:
неструктурированный набор байтов;
файл записей одной и той же длины и структуры;
файл записей разной длины.
Для описания принципов работы ФС необходимо, как минимум,
рассмотреть следующие вопросы:
Физическая организация хранения данных на дисках.
Учет свободной и занятой дисковой памяти.
Структуры данных, используемые для определения местонахождения
запрошенных данных на диске.
Алгоритмы выполнения основных операций чтения/записи данных.
Жесткий диск – это набор пластин, вращающихся с высокой скоростью
на одной оси. Запись информации может производиться на любую
поверхность этих пластин. Читающие головки могут перемещаться по
радиусу пластин с некоторым дискретным шагом, и тем самым на
поверхности как бы создаются отдельные концентрические дорожки (треки),
перенумерованные от 0 до некоторого N. Номер 0 имеет самая внешняя
дорожка. Набор дорожек с одним номером на всех пластинах образует
цилиндр. Каждая дорожка разбивается на отдельные участки, называемые
секторами. Стандартный размер сектора
−
512 байт, и именно эта единица
участвует в операциях чтения/записи байтов, т.е. прочитать/записать можно
только целиком весь сектор, но не отдельные байты в нем. Это одно из
важнейших отличий дисковой памяти от основной байт-адресуемой памяти.
Если на диск записывается число байт, НЕ кратное 512, то часть последнего
необходимого сектора будет использоваться впустую. Например, для
обычной текстовой страницы надо 2000 байтов, т.е. 4 сектора, три из которых
будут заполнены полностью, а последний частично: 2000 = 512 + 512 + 512 +
464, т.е. 48 байтов четвертого сектора – это лишняя информация.
Для выполнения операции чтения/записи очередной порции данных
контроллер жесткого диска должен иметь адрес размещения этих данных с
указанием номера цилиндра, номера поверхности и номера сектора. Номер
цилиндра определяет радиальное перемещение головок, номер поверхности –
используемую головку, а номер сектора – угол поворота диска. Контроллеры
современных дисководов позволяют файловым системам оперировать более
удобным способом адресации, а именно – линейным порядковым номером
сектора относительно всего диска. Таким образом, все секторы диска
получают логические номера от 0 до некоторого NL, а преобразование
логического номера в настоящий дисковый адрес выполняется контроллером.
Современные диски содержат десятки миллионов физических секторов,
что часто является слишком большой величиной для ФС, поэтому сама ФС
может оперировать при распределении дискового пространства более
крупными единицами – кластерами или блоками. Каждый блок – это
последовательность нескольких рядом расположенных секторов. Типичный
блок – это 1Кб (2 сектора), 2Кб (4 сектора), 4 Кб (8 секторов). Некоторые ОС,
например Windows 2000, могут динамически менять размер блока в
зависимости от установленного на компьютере диска.
Размер блока имеет большое значение для эффективности файловой
системы. Эта ситуация аналогична проблеме выбора размера страницы
основной памяти. Чем меньше размер блока, тем лучше используется
дисковое пространство, меньше непроизводительные потери памяти, меньше
фрагментация диска, но больше накладные расходы на поддержку
необходимых структур данных и выполнение операций чтения/записи.
Наоборот, при больших блоках быстрее выполняется чтение/запись данных,
т.к. после позиционирования головки обрабатываются сразу несколько
подряд расположенных секторов. Кроме того, меньшее число блоков требует
и меньшего числа записей в поддерживающих структурах данных, но к
сожалению, возрастает фрагментация диска. Поэтому выбор размера блока
(кластера) – это всегда компромисс.
Еще одним важным вопросом организации дисковой памяти является
разделение диска на несколько крупных частей-разделов (partition) с
возможностью установки в каждом разделе своей файловой системы.
Каждый раздел занимает свою непрерывную область диска, определяемую
номерами используемых для него блоков. Разделы могут иметь разные
размеры. Каждый раздел содержит всю необходимую информацию, как
служебные данные для самой ФС, так и собственно сами файлы.
Начальный сектор 0 диска отводится под так называемую главную
загрузочную запись (MBR, Master Boot Record), содержащую небольшой
программный код и небольшую таблицу разделов (Partition Table). Этот код
считывается с диска в память, запускается на выполнение, считывает таблицу
разделов, определяет в ней активный раздел и тем самым – адрес первого
блока активного раздела. После этого можно уже считывать информацию из
данного блока, содержащего обычно код загрузчика соответствующей ОС и
называемого поэтому загрузочным блоком. Этот загрузчик и выполняет
загрузку той ОС, которая определена для данного раздела.
Несмотря на имеющиеся между файловыми системами различия, можно
дать некоторую общую структуру раздела. Каждый раздел диска должен
содержать:
загрузочный блок с кодом загрузчика конкретной ОС;
блок с важнейшими параметрами самой ФС;
информацию о свободных/занятых блоках раздела;
информацию о блоках, назначенных каждому файлу раздела;
главный (корневой) каталог раздела;
файлы и каталоги, входящие в данный раздел.
Обобщенная структура жесткого диска, содержащего два раздела с двумя
файловыми системами, представлена на следующей схеме.
На
ча
ль
ный
з
агруз
чи
к
Та
бли
ца
ра
зде
лов
За
груз
оч
ный
блок
ФС 1
И
нформа
ци
я о ФС
1
Та
бли
ца
с
вободн
ых блок
ов
Ин
фор
м
ац
ия о
ра
сп
ре
де
ле
ни
и блок
ов
м
ежду фай
ла
м
и
К
орн
евой
к
ат
алог ФС
1
Фа
йлы и
к
ат
алоги
файл
овой
с
ис
те
м
ы 1
За
груз
оч
ный
блок
ФС 2
И
нформа
ци
я о ФС
2
Та
бли
ца
с
вободн
ых блок
ов
Ин
форма
ци
я о
ра
сп
ре
де
ле
ни
и блок
ов
м
ежду фай
ла
м
и
К
орн
евой
к
ат
алог ФС
2
Фа
йлы и
к
ат
алоги
ф
ай
ловой
с
ис
те
м
ы 2
Главная
загрузочная
запись
Первый раздел с ФС 1
Второй раздел с ФС 2