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

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


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


Рис. 5.17. Сектор диска

Заголовок начинается с определенной комбинации битов, позволяющей оборудованию распознать начало сектора. В нем также содержатся номера цилиндра и сектора и некоторая другая информация. Размер области данных определяется программой
низкоуровневого форматирования. Многие диски используют секторы размером 512 байт. Поле кода корректировки ошибок — ECC (Error Correction Code) содержит избыточную информацию, которая может быть использована для исправления ошибок чтения1. Размер и содержимое этого поля варьируются от производителя к производителю и зависят от того, какую часть дискового пространства разработчик захотел отдать для достижения высокой надежности, и от степени сложности кода ECC, с которым может работать контроллер. Довольно часто используется 16-разрядное поле ECC. К тому же у всех жестких дисков есть некоторое количество запасных секторов, предназначенных для замены секторов, имеющих производственные дефекты.

При низкоуровневом форматировании задается положение нулевого сектора на каждой дорожке, смещенное относительно положения нулевого сектора предыдущей дорожки. Это смещение, называемое отклонением цилиндров (cylinder skew)[25] [26], создается для повышения производительности. Замысел состоит в том, чтобы дать возможность считывать с диска нескольких дорожек за одну непрерывную операцию без потери данных. Суть проблемы станет понятной после изучения изображения на рис. 5.15, а. Предположим, что поступил запрос на 18 секторов, начиная с сектора 0 внутренней дорожки. За один оборот диска происходит чтение 16 первых секторов, но для считывания 17-го сектора необходимо перемещение блока головок на одну дорожку ближе к краю диска. За время перемещения на одну дорожку сектор 0 уже уйдет из-под головки, поэтому для его подхода под нее нужен полный оборот диска. Эта проблема устраняется за счет сдвига секторов, показанного на рис. 5.18.

Величина отклонения цилиндров зависит от геометрии привода. Например, один оборот диска, вращающегося со скоростью 10 000 об/мин, занимает 6 мс. Если дорожка состоит из 300 секторов, то новый сектор проходит под головкой каждые 20 мкс. Если переход с дорожки на дорожку занимает 800 мкс, то за этот переход произойдет смещение на 40 секторов, поэтому отклонение цилиндра должно составлять как минимум на 40 секторов, а не на три сектора, как показано на рис. 5.18. Следует заметить, что переключение между головками также занимает некоторое время, поэтому кроме отклонения цилиндров есть еще и отклонение головок (head skew), но оно невелико по размеру — обычно значительно меньше времени прохода одного сектора.

В результате низкоуровневого форматирования емкость диска уменьшается в зависимости от размеров заголовков, промежутков между секторами и полей ECC, а также количества запасных секторов. Зачастую объем отформатированного пространства на 20 % меньше, чем неотформатированного. Запасные секторы при подсчете отформатированного пространства не учитываются, поэтому все диски заданного типа при поставке имеют одну и ту же емкость независимо от того, сколько дефектных секторов у них имеется на самом деле (если количество дефектных секторов превышает количество запасных, привод будет забракован и не поступит в продажу).

Из-за того что некоторые производители, стараясь представить свои диски более объемными, чем на самом деле, рекламируют их с указанием емкости до форматирования, возникает неразбериха. Рассмотрим, к примеру, привод, имеющий емкость в неотформатированном виде 200 • 109 байт. Он может быть продан как 200-гигабайтный диск.


Но после форматирования для данных, скорее всего, останется только 170 • 109 байт. Усугубляя неразбериху, операционная система, вероятнее всего, покажет, что его емкость составляет не 170, а 158 Гбайт, поскольку программное обеспечение рассматривает объем памяти 1 Гбайт как 230 (1 073 741 824) байт, а не как 109 (1 000 000 000) байт. Было бы лучше, если бы она показывала эту емкость как 158 Гбайт.

Еще больше дезориентирует тот факт, что при обмене данными 1 Гбайт/с означает 1 000 000 000 бит/с, поскольку приставка «гига» на самом деле означает 109 (ведь километр — это 1000 м, а не 1024 м). И только если речь идет об объеме памяти или диска, приставки «кило», «мега», «гига» и «тера» означают 210 , 220 , 230 и 240 соответственно.

Во избежание путаницы некоторые авторы используют для значений 103, 106, 109 и 1012 префиксы «кило», «мега», «гига» и «тера» соответственно, а для значений 210, 220, 230 и 240 — соответственно префиксы «киби», «меби», «гиби» и «теби».

Но префиксы с буквой «б» используются довольно редко. Если же вам нравятся большие числа, то за префиксом «теби» следуют префиксы «пеби», «эксби», «зеби» и «йоби», при этом «йоби» обозначает громадное количество байт (а точнее, 280).

Форматирование также влияет на производительность. Если у диска со скоростью вращения 10 000 об/мин на одну дорожку приходится 300 секторов по 512 байт, то на чтение 153 600 байт, имеющихся на дорожке, уходит 6 мс при скорости передачи данных 25 600 000 байт/с, или 24,4 Мбайт/с. Превысить эту скорость не представляется возможным независимо от типа используемого интерфейса, даже если это БСБ]- интерфейс, способный работать со скоростью 80 или 160 Мбайт/с.

Фактически для непрерывного считывания данных с такой скоростью необходим довольно объемный буфер контроллера. Рассмотрим, к примеру, контроллер, имеющий объем буфера в один сектор, который получил команду на считывание двух последовательных секторов. После того как с диска будет считан первый сектор и подсчитана его контрольная сумма, данные должны быть перенесены в оперативную память. Пока будет происходить перенос, под головкой окажется следующий сектор. Когда копирование в память будет завершено, контроллеру придется ждать, пока не завершится почти полный оборот диска, чтобы под головку опять попал второй сектор.

Эта проблема может быть устранена за счет чередующейся нумерации секторов при форматировании диска. На рис. 5.19, а показана обычная схема нумерации секторов (здесь отклонение цилиндров игнорируется). А на рис. 5.19, б изображено одинарное чередование (single interleaving), дающее контроллеру небольшую передышку между последовательными секторами, чтобы он успел скопировать буфер в оперативную память.

a б в

Рис. 5.19. Чередование: а — отсутствует; б — одинарное; в — двойное


Если процесс копирования проходит слишком медленно, может потребоваться двойное чередование (double interleaving) (рис. 5.19, в). Если емкость буфера контроллера составляет всего один сектор, то не важно, с помощью каких средств содержимое буфера копируется в оперативную память — самого контроллера, центрального процессора или микросхемы DMA, все равно это копирование займет одно и то же время. Чтобы исключить потребность в чередовании, контроллер должен хранить в буфере всю дорожку. Многие современные контроллеры могут хранить в буфере множество целых дорожек.

По завершении низкоуровневого форматирования диск разбивается на разделы. Логически каждый раздел можно уподобить отдельному диску. Разбиение на разделы необходимо для совместного существования нескольких операционных систем. Также в некоторых случаях разбиение на разделы может быть использовано для свопинга. На x86-совместимых компьютерах, как и на большинстве других, в секторе 0 содержится главная загрузочная запись (master boot record (MBR)), состоящая из кода программы начальной загрузки и таблицы разделов, расположенной в самом конце сектора. MBR и, соответственно, поддержка таблицы разделов, впервые появились на компьютерах IBM PC в 1983 году для поддержки довольно емких на то время жестких дисков в 10 Мбайт в PC XT. С тех пор емкость дисков существенно возросла. Поскольку записи MBR в большинстве систем ограничены 32 битами, максимальная емкость диска, имеющего 512-байтные секторы, который мог быть поддержан, составляет 2 Тбайт. Поэтому в настоящее время большинством операционных систем поддерживаются новые таблицы разделов GPT (GUID Partition Table — таблица разделов, использующая глобально уникальный идентификатор), с помощью которых поддерживаются диски емкостью до 9,4 Збайт (9 444 732 965 739 290 426 880 байт), что на момент выхода книги из печати считалось довольно существенной величиной.

В таблице разделов (partition table) указываются начальный сектор и размер каждого раздела. На x86-совместимых компьютерах в этой таблице выделяется место для четырех разделов. Если все они предназначаются для работы под Windows, то им присваиваются имена C:, D:, E: и F: и они рассматриваются как отдельные диски. Если три из них предназначаются для Windows, а один для UNIX, то Windows назовет свои разделы C:, D: и E:. А первому USB-накопителю будет присвоено имя F:[27]. Чтобы можно было загружаться с жесткого диска, один из разделов таблицы должен быть помечен как активный.

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

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

5.4.3.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Форматирование диска:

  1. СМЕЩЕНИЕ ДИСКА
  2. ЦВЕТ ИНДУЦИРОВАННЫЙ
  3. ЛЮМБАГО
  4. ГИПОТЕЗА СТЕРЕОХИМИЧЕСКАЯ
  5. Сожженные планеты
  6. Установка программы Астропроцессор ZET
  7. ..А хребет править руками
  8. По пути наименьшего сопротивления. Построение гороскопа на компьютере
  9. КАК РАЗДАЧА ДЕНЕГ ПРИВЕЛА К 1,5 МИЛЛИОНАМ ДОЛЛАРОВ
  10. Что движет эритроциты
  11. 3. Субъекты смежных прав
  12. Измерение времени
  13. Принципы Солнца и Луны
  14. 5.5. Административная ответственность за нарушение авторских и смежных прав
  15. 14.3. Приложения клеточных моделей
  16. Що таке суміжні права?
  17. Как развить свои способности к ясно-слышанию