|
|
Жесткий диск
Жесткий диск состоит из нескольких металлических пластин,
головок чтения-записи и механизма их позиционирования, помещенных в герметичную коробку (банку).
К нему прикреплена печатная плата с контроллером и буферной памятью (кэшем), которая посредством
шлейфа (40 или 80 жил) соединяется с материнской платой или отдельным контроллером.
Металлические пластины условно разбиты на концентрические
дорожки, а дорожки разделены на секторы.
Дорожки на равном расстоянии от центра на всех поверхностях
пластин объединяются в цилиндры. Таким образом, для чтения определенного сектора данных
(его емкость принята равной 512 байт) нужно:
1. Отвести головки на нужное расстояние от центра, то
есть позиционировать на нужный цилиндр;
2. Начать просмотр дорожки на нужной пластине,
активировав нужную головку;
3. Производить чтение всей информации до появления
заголовка сектора, номер которого (содержится в этом заголовке) совпадает с нужным нам для
операции чтения или записи.
В соответствии с такой схемой метод нахождения нужной
информации на жестком диске называется CHS-адресацией
(Cylinder-Head-Sector).
BIOS (базовая система ввода-вывода) является набором
системных подпрограмм (функций), среди которых есть и программа чтения-записи данных на жестком
диске. Для получения содержимого одного сектора требуется указать его CHS-адрес. Число секторов,
цилиндров и головок BIOS'у должно быть известно, для этого и существует автодетект в
Setup.
Впрочем, информация о геометрии, используемая для работы
функций доступа к диску, даже близко не соответствует реальной геометрии современного жесткого
диска. У него 1-3 пластины, одна из которых может использоваться только с одной стороны, и 1-6
головок. Поэтому контроллер жесткого диска производит трансляцию поступающих адресов, такую же
трансляцию производит и BIOS, работая по механизму LBA
(Logical Block Addressing).
В соответствии с идеологией MS-DOS жесткий диск может
состоять из так называемых "разделов" - независимых областей диска, которые могут быть построены
по схеме любой операционной системы, то есть использовать любую файловую систему.
Таких разделов должно быть два - основной
(Primary), с
которого обычно осуществляется загрузка, и расширенный
(Extended), который может быть разделен
на несколько частей-подразделов (логических дисков).
Первый раздел диска самостоятелен, остальные
объединяются в группу. Каждый раздел имеет принадлежность к той или иной файловой системе.
В рамках DOS (и основанных на этой же операционной
системе Windows3.x/95/98/ME) существуют три файловых системы - FAT12, FAT16 и FAT32.
Системные секторы
Самый первый сектор любого жесткого диска имеет название
Master Boot Record, MBR. Он состоит из двух частей - программы начального загрузчика и таблицы
разделов (Disk Partition Table, DPT). DPT состоит из четырех записей, обозначающих адрес начала
раздела, его размер в секторах, адрес конца и тип файловой системы.
Конечно, используется только две записи - для основного и расширенного раздела,
потому что каждый подраздел (логический диск) имеет такую же DPT с указанием адреса
следующего подраздела. Задача загрузчика в MBR - дать возможность загрузки с нужного раздела
(т.е. использовать несколько операционных систем).
Стандартный загрузчик DOS предоставляет весьма ограниченный механизм выбора - загрузка
возможна с того раздела, у которого установлен флаг активности таблице
DPT.
Самый первый сектор раздела называется Boot Sector.
В его составе также есть загрузочная программа и таблица BIOS Parameter
Block, BPB.
В этой таблице есть информация о местонахождении и размере другой важной области - таблицы
размещения файлов, FAT. По своей сути FAT - это большой массив элементов, каждый элемент
соответствует каждому кластеру. Кластер - блок секторов (от 8 до 128), элемент распределения
всего дискового пространства раздела. Каждому файлу при его создании выделяется нужное число
кластеров. Номер первого кластера заносится в каталог (директорий, папку), а соответствующий
этому кластеру элемент FAT содержит номер второго кластера. Элемент
FAT, соответствующий
второму кластеру, содержит номер третьего кластера и т.д. Весь FAT состоит из таких цепочек
(Chains).
Если элемент FAT не связан ни в одну цепочку, и при
этом не равен 0, он называется "потерянным"
(Lost Cluster). "Потеря" кластеров происходит при
перезагрузке в момент записи цепочки в FAT, например, при создании/изменении файла, когда
операция записи прерывается. Конечно, это не самые страшные последствия неожиданной перезагрузки,
но все же терять место на диске не очень хочется. Программисты из Microsoft хорошо знали о
"стабильности" своей Windows, поэтому и запускается Scandisk автоматически.
Если файл впоследствии увеличивается в размерах,
ему назначаются новые кластеры из числа свободных, причем чаще всего они находятся в другом
месте диска. Цепочка "перепрыгивает" другие цепочки - вот вам и фрагментация, которую устраняют
программы-дефрагментаторы, переносящие файлы так, чтобы их кластеры шли друг за другом по порядку.
Хотя система цепочек и является достаточно эффективной и
простой, у нее есть недостатки:
1. Низкая надежность - при исчезновении одного элемента
весь файл будет нечитаемым, а порча FAT означает потерю большого количества (если не всех)
файлов. Для устранения этого недостатка существует две одинаковых копии
FAT.
2. Если размер файла не кратен размеру кластера,
образуется Слек (Slack) - часть кластера, не занятая полезной информацией. Чем больше размер
кластера, тем большая часть диска занята слеком. Для файла длиной 1 байт вы теряете весь кластер,
а если он имеет большой размер (32 Кбайта, например), то потери на слек могут составлять 30-50%
от общей емкости диска (кстати, проверить их можно программой Sandra - модуль Drive
Information).
Размер элемента FAT дает название самой файловой системе. FAT12 имеет 12-битные элементы,
которые позволяют организовать на диске около 4-х тысяч кластеров. FAT16 имеет 16-битные
элементы, число кластеров - 65530. FAT32 - 32-битные элементы, около 4 млрд. кластеров.
Чем больше на диске будет кластеров, тем меньше можно
сделать размер самого кластера и тем самым меньше потерять места. По этому FAT12 используется
только для гибких дисков, FAT16 - для дисков емкостью до 500 Мб (в принципе можно и до 2 Гб).
Начальная загрузка
Загрузка операционной системы происходит следующим
образом:
1. BIOS, после проведения первичной самодиагностики
(POST, Power-On Self-Test), считывает самый первый сектор с того устройства, которое задано
первым в Setup (Advanced Features, Boot Sequence или First Boot
Device) и начинает его
выполнение;
2. Загрузчик, который был в этом секторе, просматривает
свою таблицу разделов на предмет наличия активного (загрузочного) раздела, вычисляет адрес
загрузочного сектора активного раздела, считывает и запускает этот сектор;
3. Загрузчик из boot-сектора выполняет считывание и
запуск файлов операционной системы;
Для DOS 7.1, входящей в состав Windows95/98, это всего
один файл - IO.SYS;
4. IO.SYS сначала просматривает файл CONFIG.SYS - ищет
там загрузочное меню, устанавливает драйвера устройств, которые там могут быть заданы
(кроме того, HIMEM.SYS, IFSHLP.SYS и SETVER.EXE загружаются в любом случае), после чего
запускает обработчик командной строки COMMAND.COM;
5. COMMAND.COM выполняет пакетный файл AUTOEXEC.BAT,
после чего вызывает программу WIN.COM; впрочем, если подправить файл MSDOS.SYS
(бывший компонент операционной системы, сейчас просто конфигурационный файл), COMMAND.COM не
начнет загрузку Windows, перейдя в режим диалога.
Все эти операции происходят без участия программы
кэширования дисковых операций (SMARTDRV.EXE - стандартная программа кэширования), поэтому
происходит постоянное обращение к FAT за информацией о кластерах каждого файла.
Значит, при проведении дефрагментации загрузочного раздела жесткого диска следует
предусмотреть расположение перечисленных файлов как можно ближе к началу диска.
Первым на диске должен быть файл подкачки WIN386.SWP, потом - директории
(или каталоги, папки - кто как привык их называть), после них нужно располагать файлы,
участвующие в загрузке. Конечно, стандартный Defrag этого не может,
но есть много других хороших программ дефрагментации.
Если вы еще не пользуетесь ими, подумайте, может быть,
есть смысл установить Norton Utilities 2000, в составе которых имеется дефрагментатор Speed
Disk.
Boot virus
Так называется разновидность вирусов, внедряющихся на
одном из этапов начальной загрузки, обычно на самом первом.
Boot-вирус записывает в MBR свой загрузчик вместо
исходного. Тем самым вместо операционной системы первым загружается вирус. Он размещает в
памяти свое тело, которое хранит в неиспользованных секторах, идущих после
MBR, но до первого
загрузочного сектора раздела. Перехватив обращения к дискам, вирус продолжает загрузку
операционной системы. В случае обращения к дискете вирус изменит ее boot-сектор,
заменив в нем программу-загрузчик.
Если пользователь загрузится с такой дискеты, вирус
получит управление и сразу же заразит MBR жесткого диска.
Если boot-вирус не умеет заражать файлы, обходясь только
системными секторами, он не представляет большой опасности:
1. Заразиться можно только при загрузке с дискеты
(или второго жесткого диска);
2. Можно просто включить "Virus
Warning" в Setup - вы
получите предупреждение о попытке вторжения в загрузочный сектор (вопреки распространенному
мнению, эта опция должна выключаться только при инсталляции
Windows);
3. вылечить жесткий диск можно всего одной
командой - "fdisk /mbr", которая записывает в MBR оригинальную программу-загрузчик.
Проблемы при загрузке
Нарушение процесса загрузки может произойти на любом из
этапов. Чтобы определить причину и "виновника", нужно обратить внимание на появляющиеся
сообщения:
Если все сообщение - в верхнем регистре
(т.е. заглавными буквами), то это BIOS не находит MBR на указанном ему в Setup устройстве,
что свидетельствует об ошибке чтения либо об отсутствии признака системного сектора у первого
сектора диска (т.е. диск не размечен). Чтобы убедиться, что с диском все нормально, нужно зайти
в BIOS Setup и запустить Autodetect.
Сообщения "Invalid partition
table" и
"Error loading operating system" принадлежат загрузчику из
MBR; загрузочный сектор активного
раздела либо не читается, либо его еще (или уже) нет;
Сообщения "Invalid system
disk" и "Disk I/O error"
выдает загрузчик из boot-сектора, сообщая об отсутствии файлов операционной системы или об
ошибке на диске.
Что делать в случаях, когда загрузка не происходит?
1. Если проблема не связана с самим диском, нужно серьезно
разбираться с тем, куда делись системные сектора.
2. Налицо либо нарушения таблицы
DPT,
либо разрушение загрузочного сектора. Лечить диск запуском NDD или Scandisk с дискеты
не рекомендуется - можно все окончательно загубить и добавить работы тем, кто будет потом
восстанавливать информацию на диске;
3. Системные файлы могли быть удалены или испорчены,
можно попытаться исправить ситуацию загрузкой с дискеты и вводом команды "sys
c:". NDD, Scandisk, fdisk…
Прежде всего, при возникновении серьезных проблем с
системными секторами никогда не пользуйтесь программами диагностики NDD или
Scandisk.
Назначение таких программ - отыскание "потерянных" кластеров и "отвязанных" длинных имен, все
остальное им не под силу.
Для "ручной" работы с диском обычно используется
Diskedit из комплекта Norton Utilities - не потому что он самый продвинутый и удобный, а в силу
привычки, так как Нортоновские утилиты существуют с незапамятных времен.
Если вы не владеете глубокими знаниями о структуре и механизмах работы системных секторов и
загрузчиков, вам лучше не пытаться экспериментировать с этой программой.
Хотя иметь ее, безусловно, необходимо.
А вот уметь пользоваться fdisk должен каждый.
Если вы хотите выделить первый раздел диска исключительно под
Windows, лучше задать ему размер
1-2 Гб и поставить туда FAT16 - быстрее будет грузиться, легче будет, в случае чего,
восстанавливать. Известно, что fdisk по умолчанию устанавливает FAT32 на раздел больше 500 Мб.
Чтобы "переубедить" его, выберите "N" в "начальной заставке" fdisk
(там, где говорится о поддержке больших разделов).
Размечайте первый раздел (больше 2 Гб не получится),
запускайте fdisk снова, выбрав уже "Y".
После разметки и форматирования нового диска не
поленитесь создать загрузочную дискету, на которую с помощью diskedit запишите MBR
(Alt-A, Alt-W, выбрать имя файла), загрузочный сектор первого раздела
(Alt-B, Alt-W, имя файла), diskedit, unerase, fdisk, sys, format,
himem.sys, какой-нибудь
русификатор (если DOS русифицирована). В случае сбоя такая дискета позволит сэкономить массу
времени и нервов.
|
|