logo
!Архитектура ЭВМ и вычислительных систем

Устройство жесткого диска. Логическая и физическая адресация данных.

Жесткий диск (НDD - Hard Disk Drive) устроен следующим образом: на шпинделе, соединенным с электромотором, расположен блок из нескольких дисков (блинов), над поверхностью которых находятся головки для чтения/записи информации. Форма головкам придается в виде крыла и крепятся они на серпообразный поводок. При работе они "летят" над поверхностью дисков в воздушном потоке, который создается при вращении этих же дисков. Очевидно, что подъемная сила зависит от давления воздуха на головки. Оно же, в свою очередь, зависит от внешнего атмосферного давления. Поэтому некоторые производители указывают в спецификации на свои устройства предельный потолок эксплуатации (например, 3000 м). Ну чем не самолет? Диск разбит на дорожки (или треки), которые в свою очередь поделены на сектора. Две дорожки, равноудаленные от центра, но расположенные по разные стороны диска, называются цилиндрами.

Адресация данных

Минимальной адресуемой областью данных на жёстком диске является сектор. Размер сектора традиционно равен 512 байт.[15] В 2006 году IDEMA объявила о переходе на размер сектора 4096 байт, который планируется завершить к 2010 году[16]. Western Digital уже сообщил о начале использования новой технологии форматирования, названой Advanced Format, и выпустил накопитель (WD10EARS-00Y5B1) использующий новую технологию.

В Windows Vista, Windows 7, Windows Server 2008 и Windows Server 2008 R2 присутствует ограниченная поддержка дисков с таким размером сектора.[17][18]

Существует 2 основных способа адресации секторов на диске: цилиндр-головка-сектор (англ. cylinder-head-sector, CHS) и линейная адресация блоков (англ. linear block addressing, LBA).

CHS

При этом способе сектор адресуется по его физическому положению на диске 3 координатами — номером цилиндра, номером головки и номером сектора. В дисках, объёмом больше 528 482 304 байт (504 Мб), со встроенными контроллерами эти координаты уже не соответствуют физическому положению сектора на диске и являются «логическими координатами» (см. выше).

LBA

При этом способе адрес блоков данных на носителе задаётся с помощью логического линейного адреса. LBA-адресация начала внедряться и использоваться в 1994 году совместно со стандартом EIDE (Extended IDE). Стандарты ATA требуют однозначного соответствия между режимами CHS и LBA:

LBA = [ (Cylinder * no of heads + heads) * sectors/track ] + (Sector-1)

Метод LBA соответствует Sector Mapping для SCSI. BIOS SCSI-контроллера выполняет эти задачи автоматически, то есть для SCSI-интерфейса метод логической адресации был характерен изначально.

Физическая и логическая структура магнитных дисков

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

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

Так же как и основная память, поверхность диска (или дисков) имеет структуру. Элементы физической структуры следующие:

дорожка – концентрическая окружность, по которой движутся головки чтения-записи при размещении или поиске данных. Дорожки нумеруются, начиная с нуля. Нулевой номер имеет самая внешняя дорожка на диске;

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

стороны диска. Нумеруются, начиная с нуля. Для винчестера, расположенного вертикально, нулевой номер имеет самая верхняя сторона, для гибкого диска нулевой номер у «лицевой» стороны дискеты;

цилиндр – совокупность дорожек с одинаковыми номерами на разных сторонах диска. Номера цилиндров совпадают с номерами дорожек;

кластер – совокупность секторов, имеющих смежные номера. Может состоять из одного сектора (для дискет) или нескольких (для винчестера). Является минимальным адресуемым элементом данных для операционной системы. Кластеры используются операционной системой для добавления данных к файлу: добавление очередной «порции» данных к файлу выполняется в объеме кластера независимо от того, что реальный объем добавляемых меньше объема кластера. Это приводит к нерациональному расходованию внешней памяти. Поэтому не рекомендуется хранить на диске большое количество маленьких файлов: они имеют много пустых «хвостов».

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

Дискретное пространство диска имеет, в свою очередь, следующую структуру (она описана в порядке возрастания номеров сторон, дорожек и секторов):

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

главная загрузочная запись MBR (Master Boot Record). Содержит код процессора, необходимый для дальнейшей загрузки операционной системы;

загрузочная запись операционной системы BR (Boot Record). Содержит следующую информацию: программу загрузки операционной системы, размер кластера, количество копий FAT, количество файлов в корневом каталоге Root, размер FAT и некоторую другую информацию;

таблица размещения файлов FAT (File Allocation Table) и ее копии. Содержит полную карту принадлежности кластеров файлам и используется операционными системами для хранения сведений о размещении файлов на диске и о «плохих» (bad) кластерах. В силу важности FAT она дублируется несколько раз;

корневой каталог Root. Это таблица, в которой каждая запись соответствует файлу или подкаталогу, подчиненному корневому каталогу диска, и имеет структуру:

имя файла или подкаталога;

тип файла,

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

время создания;

дата создания;

номер начального кластера файла или подкаталога;

размер файла.

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

6. область размещения файлов FA (File Area). Содержит файлы и подкаталоги, которые описаны в Root. Следует иметь в виду, что при размещении файлов на диске операционная система выбирает для этого первые попавшие свободные кластеры. Поэтому в результате файл физически "разорван" на множество "кусков", что увеличивает время его сборки впоследствии. Такое явление называется фрагментацией файла. Для устранения фрагментации выполняют дефрагментацию файла, когда он по возможности "собирается" в единое целое, что позволяет оптимизировать работу с внешней памятью.

Взаимосвязь областей Root, FAT, FA при поиске файла или каталога по его имени, указанному, например, в команде MS DOS, показана ниже.

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

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

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

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

в найденной записи FAT выбирает содержимое записи – это номер следующей записи FAT с описанием продолжения (или окончания) файла;

если очередная запись FAT содержит EOF, “сборка” файла закончена; иначе повторяется предыдущий шаг.