Смекни!
smekni.com

Методические указания по изучению дисциплины 5 "системное программирование" (стр. 7 из 13)

6.3.2. Структура диска.

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

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

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

Каким образом достигается оперативность обработки файлов и как она организована?

Вращение диска производится очень медленно по сравнению со скоростью работы процессора: одну и ту же запись можно считать за время не меньшее, чем период вращения диска. Поэтому произвольный доступ к информации на диске обычно не используется, а применяется считывание и запись по блокам. Размер блока может быть 256 или 512 байт.

Весь диск разбит на дорожки, называемые треками или цилиндрами (если в дисководе имеется несколько дисков), являющимися окружностями разного диаметра с центром, совпадающим с осью вращения диска. Количество треков конечно (от нескольких десятков на ГМД до сотен на ЖМД) и определяется типом дисковода и разметкой (толкование понятия ниже) диска. Для удобства поиска информации и ускорения обращения к диску каждый трек разбит на секторы (толковать в геометрическом смысле). Их может быть от восьми до нескольких десятков и также определяется типом диска и разметкой.

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

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

Однако, на новом, только что выпущенном диске, еще нет никакой информации, в том числе нет поля адреса, без которого никакие полезные действия с диском производить нельзя (если не считать использования ГМД в качестве летающей тарелки, а ЖМД - в качестве молотка для забивания шурупов). Программа, подготавливающая новый диск к работе, называется форматером. Она записывает (размечает) служебные области (сравните с разлиновкой строк в тетради), после чего проводит инициализацию диска - указывает, что на диске отсутствует информация (после разметки на диске остаются произвольные данные (зависят от форматера), в том числе в каталоге могут оказаться отмечены несуществующие файлы). Так же форматер проверяет физические ошибки диска и отмечает их в служебной области FAT (объяснение FAT далее по тексту).

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

Чтобы как-то уменьшить требуемое время, введена логическая структура кластер - совокупность секторов, которые обрабатываются одновременно. Иначе говоря, диск разбит на сектора, а секторы объединены в кластеры (от одного до десятка или более секторов на кластер). Секторы в кластере расположены в таком порядке, чтобы после считывания первого сектора кластера в память, около головки оказался второй сектор и т.д. Тот же порядок будет наблюдаться при записи.

6.3.3. Служебные области на диске

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

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

Другая важная служебная область на диске это FAT (Files Allocation Table) - таблица расположения файлов. В этой области указываются списки кластеров, занятых файлами, каталогами и подкаталогами (субдиректориями). Кроме того, в FAT указаны "плохие" (BAD) кластеры. BAD кластер- это кластер, содержащий сектор, который невозможно верно считать или в который невозможно верно записать. Такие секторы не могут быть использованы для хранения информации, и, как следствие, кластер не может быть использован ОС. Для надежности на диске имеется две копии FAT.

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

Помимо этих областей, существуют другие, менее важные, не рассматриваемые в этой работе области.

6.3.4. Форматирование дисков

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

Команда DOS общего назначения - "Format".

FORMAT DRIVE: [/V[:LABEL]] [/Q] [/F:SIZE] [/B | /S] [/C]

FORMAT DRIVE: [/V[:LABEL]] [/Q] [/T:TRACKS /N:SECTORS]

[/B | /S] [/C]

FORMAT DRIVE: [/V[:LABEL]] [/Q] [/1] [/4] [/B | /S] [/C]

FORMAT DRIVE: [/Q] [/1] [/4] [/8] [/B | /S] [/C]

где DRIVE буква названия дисковода;

/V[:LABEL] метка тома;

/Q быстрое форматирование;

/F:SIZE указание размера флоппи диска (такие как 160, 180, 320, 360, 720, 1.2, 1.44, 2.88).

/B оставляет пространство под системные файлы;

/S копирует системные файлы на форматируемый диск;

/T:TRACKS указывает количества треков на диске;

/N:SECTORS указывает количества секторов на треке;

/1 форматирует только одну строку на флоппи диске;

/4 форматирует диск 5.25 дюйма с повышенной плотностью;

/8 форматирует восемь секторов на трек;

/C проверяет кластеры, отмеченные как "плохие";

/U безусловное форматирование диска.

Параметры /T и /N должны указываться оба.

Под форматом диска обычно понимается количество сторон, а также число имеющихся на нем цилиндров и секторов на дорожке.

Команда FORMAT обеспечивает три режима форматирования: безусловное, безопасное и быстрое.

При безусловном или стандартном форматировании производятся следующие действия:

1) разбивка поверхности дискеты на секторы (формирование и запись секторных меток);

2) тестирование дискеты на предмет наличия дефектных секторов;

3) расписывание всей дискеты специальным кодом, обычно F6H;

4) формирование на дискете системной области, а именно:

- занесение в стартовый сектор загрузочной записи (BR-Boot Record);

- создание двух копий FAT (для надежности), инициализация их нуля ми и регистрация в них кластеров, содержащих дефектные секторы;

- формирование пустого корневого каталога.

Восстановление файловой структуры, имевшейся на дискете перед безусловным форматированием, невозможно!

При безопасном форматировании гибкого диска выполняются следующие операции:

1) тестирование поверхности диска на предмет наличия дефектных секторов, но без перезаписи его содержимого (проверяется также целостность и считываемость секторных меток);

2) сохранение на диске содержимого его системной области (BR, FAT и корневого каталога), чтобы облегчить при необходимости восстановление файловой структуры, разрушенной в результате ошибочного форматирования;

3) инициализация системной области диска (приведение ее в исходное состояние):

- инициализация копий FAT нулями и регистрация в них кластеров, содержащих обнаруженные при тестировании дефектные кластеры;

- полная очистка содержимого корневого каталога.

Восстановить содержимое диска после безопасного или быстрого форматирования можно при помощи команды UNFORMAT!