2011. Машбук (1114722), страница 54
Текст из файла (страница 54)
Мы поместили во флоппидисковод дискету и включили компьютер. Аппаратный загрузчик обращается к первомусистемному устройству, и поскольку в дисководе присутствует дискета, то считается, чтодисковод готов к работе. Тогда происходит попытка загрузки операционной системы сфлоппи-диска, и если это будет неуспешно, то будет выведено сообщение об ошибкезагрузки системы. Если же дискеты во флоппи-дисководе не будет, но будет находитьсядиск в CDROM, то точно так же будет предпринята попытка загрузить операционнуюсистему, но уже с оптического диска. Если же не будет ни флоппи-дискеты, ниоптического диска, то загрузчик попытается загрузить операционную систему с жесткогодиска. Обычно в штатном режиме загрузка происходит с жесткого диска, но в ситуации,например, краха системы и невозможности загрузиться с жесткого диска приведеннаямодель позволяет загрузить систему со съемного носителя и произвести некие действия повосстановлению работоспособности поврежденной системы.В приведенной модели работа аппаратного загрузчика основана на предположениио том, что любое системное устройство имеет некоторую предопределенную структуру(Рис.
106). В начальном блоке системного устройства располагается основнойпрограммный загрузчик (MBR — Master Boot Record). В качестве основногопрограммного загрузчика может выступать как загрузчик конкретной операционнойсистемы, так и некоторый унифицированный загрузчик, имеющий информацию оструктуре системного диска и способный загружать по выбору пользователя одну изальтернативных операционных систем.204…MBR — MasterBoot Record(основнойпрограммныйзагрузчик)Таблица разделов:{начало1, конец1}{начало2, конец2}…Загрузчик ОССуперблокРазделы дискаСвободное пространствоФайлыРис.
106. Структура «системного» диска.В общем случае после блока основного программного загрузчика на диске следуетпоследовательность блоков, в которых находится т.н. таблица разделов. В современныхжестких дисках имеется возможность разбивать все физическое пространство диска нанекоторые области, которые называются разделами (partition).
Внутри каждого разделаможет быть помещена в общем случае своя операционная система. Соответственно,границы каждого раздела (его конец и начало) регистрируются в указанной таблицеразделов. Еще одно важное применение данной таблицы связано с тем, что современныедиски имеют настолько большие емкости, что для адресации произвольной точки диска нехватает разрядной сетки процессора. И за счет косвенной адресации (адресацииотносительно начала раздела) использование подобной таблицы позволяет решить даннуюпроблему.Логическая структура раздела имеет следующий вид. В начальном блоке разделанаходится загрузчик конкретной операционной системы.
Все остальное пространствораздела обычно занимает файловая система. Зачастую в файловой системе частьпространства выделяется т.н. суперблоку, в котором хранятся настройки (размеры блоков,режимы работы и т.п.) и информация об актуальном состоянии (информация о свободныхи занятых блоках и т.п.) файловой системы. Все оставшееся пространство файловойсистемы состоит из свободных и занятых блоков, т.е.
блоков, способных хранитьсистемные и пользовательские данные.Прежде, чем продолжить изучение способов организации файловых систем,хотелось бы остановиться и еще раз просмотреть, что происходит при загрузкекомпьютера. При включении компьютера управление передается аппаратномузагрузчику, который просматривает (согласно приоритетам) список системных устройств,определяет готовое к работе устройство и передает управление основному программномузагрузчику этого устройства. Последний является программным компонентом и можетзагрузить конкретную операционную систему, а может являться мультисистемнымзагрузчиком, способным предложить пользователю выбрать, какую из операционныхсистем, расположенных в различных разделах диска, загрузить.
В одном разделе можетнаходиться, например, ОС Microsoft Windows XP, в другом — Linux, в третьем —FreeBSD, и т.д. Данный мультисистемный загрузчик владеет информацией, какаяоперационная система в каком разделе диска находится. После того, как пользовательсделал свой выбор, загрузчик по таблице разделов определяет координатысоответствующего раздела и передает управление загрузчику операционной системыуказанного раздела.
Соответственно, загрузчик операционной системы производитнепосредственную загрузку этой ОС.205Говоря об иерархии блоков, у многих создается впечатление, что такие понятия,как, например, блоки файла, блоки файловой системы, блоки устройств и т.п., обозначаютодно и то же, что, в общем случае, неверно. Большинство современных операционныхсистем поддерживают целую иерархию блоков, используемую при организации работы сблок-ориентированными устройствами. В основе этой иерархии лежат блоки физическогоустройства, т.е. это те порции данных, которыми можно совершать обмен с даннымфизическим устройством. Более того, размер блока физического устройства зависит отконкретного устройства.
Соответственно, детали этого уровня иерархии скрываютсяследующим уровнем абстракции — блоками виртуального диска. Следующий уровеньиерархии — уровень блоков файловой системы. Эти блоки используются при организацииструктуры файловой системы. Размер блока файловой системы, равно как и виртуальногодиска, является стационарной характеристикой, определяемой при настройке системы, и вдинамике эта характеристика не меняется. И, наконец, последний уровень представляютблоки файла. Размер данных блоков может определить пользователь при открытии илисоздании файла (как об этом говорилось выше). Отметим, что размер блока, в конечномсчете, влияет на эффективность работы, которая будет несколько выше, если размеры всехблоков будут хотя бы кратны друг другу.4.1.5 Модели реализации файловПервой тривиальной и самой эффективной с точки зрения минимизации накладныхрасходов является модель непрерывных файлов (Рис.
107). Данная модельподразумевает размещение каждого файла в непрерывной области внешнего устройства.Эта организация достаточно простая: для обеспечения доступа к файлу среди атрибутовдолжны присутствовать имя, блок начала и длина файла. Но тут возникают следующиепроблемы. Во-первых, внутренняя фрагментация (хотя это проблема почти всех блокориентированных устройств). В качестве иллюстрации можно привести следующее: еслинеобходимо хранить всего один байт, то для этого будет выделен целый блок, который, посути, будет пустым. Во-вторых, это фрагментация между файлами (эта проблемаобсуждалась при рассмотрении моделей организации работы оперативной памяти).
Ноданная система имеет и некоторые достоинства, и немаловажное из них — отсутствиефрагментации файла по диску: поскольку файл хранится в единой непрерывной областидиска, то при считывании файла головка жесткого диска совершает минимальноеколичество механических движений, что означает более высокую производительностьсистемы. Соответственно, при реализации данной модели должна решаться важнаяпроблема, возникающая при модификации файла, в частности, при увеличении егосодержательной части. Чтобы несколько упростить эту задачу, зачастую используюттакой прием: при создании файла к запрошенному объему добавляют некотороеколичество свободного пространства (например, 10% от запрошенного объема), но этотже прием ведет к увеличению внутренней фрагментации. Еще одной немаловажнойпроблемой является фрагментация свободного пространства.
Файловые системы,реализующие данную модель хранения файла, являются деградирующими: в ходеэксплуатации фрагментация свободного пространства увеличивается, и в итоге на дискеимеется множество мелких свободных участков, имеющих очень большой суммарныйобъем, но из-за своего небольшого размера эти участки использовать не представляетсявозможным. Для разрешения этой проблемы необходимо запускать процесс компрессии(дефрагментации), который занимается тем, что сдвигает файлы с учетомзарезервированного для каждого файла «запаса», «прижимая» их друг к другу. Этаоперация трудоемкая, продолжительная и опасная, поскольку при перемещении файлавозможен сбой.206Name1Name3Name2Name5Name4Name7………Name6Рис.
107. Модель непрерывных файлов.Следующей моделью является модель файлов, имеющих организациюсвязанного списка (Рис. 108). В этой модели файл состоит из блоков, каждый из которыхвключает в себя две составляющие: данные, хранимые в файле, и ссылка на следующийблок файла. Эта модель также является достаточно простой, достаточно эффективной приорганизации последовательного доступа, а также эта модель решает проблемуфрагментации свободного пространства (за исключением блочной фрагментации). Сдругой стороны, обозначенная модель не предполагает прямого доступа: чтобыобратиться к i-ому блоку, необходимо последовательно просмотреть все предыдущие.Также эта модель предполагает фрагментацию файла по диску, т.е.
содержимое файламожет быть рассредоточено по всему дисковому пространству, а это означает, что припоследовательном считывании содержимого файла добавляется значительнаямеханическая составляющая, снижающая эффективность доступа. И еще однимнедостатком данной модели является то, что в каждом блоке присутствует и системная, ипользовательская информация. Возможна ситуация, что при необходимости считатьданные, объемом в один логический блок, реально происходит чтение двух блоков.…ййй1 блокфайла2 блокфайла0 блокфайлаα1α2α3Kй блокфайлаαkРис. 108. Модель файлов, имеющих организацию связанного списка.Другой подход иллюстрирует модель, основанная на использовании т.н.
таблицыразмещения файлов (File Allocation Table — FAT, Рис. 109). В этой моделиоперационная система создает программную таблицу, количество строк в которойсовпадает с количеством блоков файловой системы, предназначенных для храненияпользовательских данных. Также имеется отдельный каталог (или система каталогов), вкотором для каждого имени файла имеется запись, содержащая номер начального блока.Соответственно, таблица размещения имеет позиционную организацию: i-ая строкатаблицы хранит информацию о состоянии i-ого блока файловой системы, а, кроме того, вней указывается номер следующего блока файла. Чтобы получить список блоковфайловой системы, в которых хранится содержимое конкретного файла, необходимо поимени в указанном каталоге найти номер начального блока, а затем, последовательнообращаясь к таблице размещения и извлекая из каждой записи номер следующего блока,возможно построение искомого списка.