Интернет-журнал "Домашняя лаборатория", 2007 №3
Шрифт:
Шумовой эффект "хрюканья", возникающий при работе с жестким диском, обусловлен перемещением головок взад-вперед по диску. Процесс равномерного считывания содержимого диска практически бесшумен. Вы можете сами в этом убедиться, сравнив шумовые эффекты от работы программы ScanDisk в режиме проверки поверхности диска, при которой блок головок медленно и равномерно перемещается вдоль диска, и программы Defrag, при работе которой блок головок постоянно двигается взад-вперед.
Однако даже при работе ScanDisk в режиме "полной" проверки диск все равно время от времени "всхрюкивает". Это происходит как раз в те моменты, когда проверка доходит до дефектного сектора, и контроллер винчестера заставляет головки переместиться в
"Всхрюкивание" жесткого диска при начале загрузки компьютера также связано с перемещением головок по определенной последовательности дорожек во время самотестирования.
Жесткий диск в своем "натуральном" виде, полученном на заводе, непригоден для размещения информации. Чтобы на винчестере можно было хранить данные, необходимо создать на нем файловую систему.
Файловая система
Каждый пользователь Windows может провести небольшой интересный эксперимент.
Перейдите в корневой каталог какого-нибудь логического диска, например, С, выделите там все папки и файлы и посмотрите совокупный объем хранящейся в них информации с помощью пункта "Свойства" меню правой кнопки мыши. Если вы работаете в Windows98, обратите внимание на число в окне свойств выделенных папок, после которого стоит слово «занято», — эта величина показывает размер физически занятого этими папками пространства на диске. В Windows2000/XP соответствующая строчка так и гласит — "на диске: столько-то байт". Ну, а в Windows95 посмотрите в окне "Мой компьютер" объем занятого пространства диска, точно так же вызвав пункт «Свойства диска» (рис. 8.1).
Рис. 8.1. Неодинаковые данные.
Значение совокупного объема данных во всех файлах и папках на диске может вас несколько удивить: оно окажется на несколько десятков процентов меньше, чем объем занятого ими пространства диска.
К примеру, на диске С по данным окна "Мой компьютер" и соответствующей строчки в окне свойств совокупности размещенных на нем папок и файлов было занято 1.83 гигабайт, а объем всего содержимого диска — 1.44 гигабайта (рис. 8.1). Почему так? Куда делись еще 0.39 гигабайт? А ведь этого объема несколько лет назад хватило бы на небольшой жесткий диск…
Да и вообще — как, собственно, устроена система хранения данных на компьютере? Нет, ясно — данные записаны в секторах жесткого диска, чтение их оттуда и запись туда осуществляется контроллером винчестера согласно командам операционной системы. Но ведь секторов так много, и данные в них такие разные! Как же все-таки компьютер находит на кружке из алюминия с магнитным покрытием нужную информацию и при этом не путается? Как он разбирается во всей этой массе секторов?
Для того, чтобы решить задачу размещения данных на диске, была создана
В разных операционных системах файловая система устроена по-разному. В этой главе будет рассмотрена система FAT, использующаяся в MS-DOS, Windows95 и Windows98 в качестве основной файловой системы, так как она является наиболее просто устроенной и на ее примере легко продемонстрировать основные принципы организации данных. Структура файловых систем, использующихся в качестве основных в операционных системах Unix, Linux, Windows NT/2000/XP другая, но их устройство — тема отдельной книги.
Кластерная организация
На минутку представим себя создателями первых операционных систем. Вот у нас есть жесткий диск — огромный массив секторов размером по 512 байт. Сектор, или блок — это "единица" поверхности жесткого диска на физическом уровне: именно к секторам обращается микросхема, управляющая жестким диском — контроллер жесткого диска — при проведении операций чтения и записи. Каждый сектор имеет свой "адрес" на диске, который известен контроллеру. Нужно обеспечить возможность записи файлов (то есть — отдельных фрагментов информации, каждый из которых имеет имя) на диск и чтения их оттуда, причем размер файлов значительно превышает 512 байт — то есть весь жесткий диск можно считать одной непрерывной поверхностью для записи данных.
Казалось бы — а в чем проблема? Пишем файлы на диск друг за другом, записываем в особую область на диске информацию о номерах секторов с началами файлов и размер каждого файла — и нет проблем. Чтобы прочесть нужный файл, надо лишь перейти к его началу и считать столько секторов, сколько файл занимает. Но дело в том, что файлы с жесткого диска иногда надо не только читать, но и удалять, а на их место записывать новые. И что же получится? Файл удален, после него осталось свободное место, а другой файл, который предполагается записать на место старого, отличается по размерам и либо не влезает целиком туда, либо меньше и не заполняет все освободившееся место! В первом случае придется либо искать достаточно большой кусок свободного места, либо записывать новый файл в конец диска, а во втором — пытаться заполнить оставшееся свободным место более мелкими файлами. Все очень неудобно, и к тому же в результате может получиться диск, на котором полно свободных секторов, а новый файл записать некуда.
Чтобы решить эту проблему, был придуман принцип кластерной структуры жесткого диска и использования специальной таблицы размещения файлов. При использовании этого принципа весь жесткий диск как бы делится на множество кусочков равного объема — кластеров, каждый из которых содержит одинаковое число секторов. В начале диска размещается особая область с данными — FAT-таблица (от File Allocation Table — таблица размещения файлов), в которой записывается, в каких кластерах находится содержимое каждого находящегося на жестком диске файла. Например, примерно так: "файл записан в 121, 122 и 123 кластерах".
С первого взгляда может показаться, что это — такая же ситуация, как и ранее. Но все дело в том, что один файл может располагаться не в последовательно расположенных кластерах, а в множестве отдельных кластеров, разбросанных по всему диску. Достаточно лишь перечислить номера этих кластеров и указать их последовательность друг за другом. То есть в FAT может появиться такая информация: "файл расположен в кластерах 120, 124 и 137". Операционная система, получив запрос на чтение этого файла, смотрит в FAT, в каких кластерах он записан, а потом последовательно их считывает, переписывая содержимое этих кластеров в оперативную память и соединяя его в ней в один неразрывный файл.