Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Операционные системы. Часть 2. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
1. На экран выводится соответствующее сообщение об
ошибке.
2. HPFS сохраняет информацию, которая должна быть за-
писана в дефектный сектор в одном из запасных секторов, зара­нее зарезервированных на этот случай. Список свободных за­пасных блоков хранится в резервном блоке HPFS. При обнару­жении ошибки во время записи данных в нормальный блок HPFS выбирает один из свободных запасных блоков и сохраняет эти данные в нем.
3. Файловая система обновляет карту аварийного замеще­ния в резервном блоке. Эта карта представляет собой просто пары двойных слов, каждое из которых является 32-битным номером сектора. Первый номер указывает на дефектный сектор, а второй — на тот сектор среди имеющихся запасных секторов, который был выбран для его замены.
4. После замены дефектного сектора запасным карта ава­рийного замещения записывается на диск, и на экране появляет­ся всплывающее окно, информирующее пользователя о произо­шедшей ошибке записи на диск. Каждый раз, когда система вы­полняет запись или чтение сектора диска, она просматривает карту аварийного замещения и подменяет все номера дефектных секторов номерами запасных секторов с соответствующими дан­ными. Следует заметить, что это преобразование номеров суще­ственно не влияет на производительность системы, так как оно выполняется только при физическом обращении к диску, но не при чтении данных из дискового кэша. Очистка карты аварий­ного замещения автоматически выполняется программой CHKDSK при проверке диска HPFS. Для каждого замещенного блока (сектора) эта программа выделяет новый сектор для файла, которому принадлежат данные, в наиболее подходящем месте жесткого диска.
5. Программа перемещает данные из запасного блока в этот сектор и обновляет информацию о положении файла, что может потребовать новой балансировки дерева блоков размеще­ния. После этого CHKDSK вносит поврежденный сектор в спи­сок дефектных блоков, который хранится в дополнительном блоке HPFS, и возвращает освобожденный сектор в список сво­бодных запасных секторов резервного блока.
201
6. Затем удаляет запись из карты аварийного замещения и
записывает отредактированную карту на диск.
Все основные файловые объекты в HPFS, в том числе файловые узлы, блоки размещения и блоки каталогов, имеют уникальные 32-битные идентификаторы и указатели на свои ро­дительские и дочерние блоки. Файловые узлы, кроме того, со­держат сокращенное имя своего файла или каталога. Избыточ­ность и взаимосвязь файловых структур HPFS позволяют про­грамме CHKDSK полностью восстанавливать файловую струк­туру диска, последовательно анализируя все файловые узлы, блоки размещения и блоки каталогов. Руководствуясь соб­ранной информацией, CHKDSK реконструирует файлы и ката­логи, а затем заново создает битовые карты свободных секторов диска. Запуск программы CHKDSK следует осуществлять с со­ответствующими ключами. Так, например, один из вариантов работы этой программы позволяет найти и восстановить уда­ленные файлы. HPFS относится к так называемым монти-
руемым файловым системам. Это означает, что она не встроена в операционную систему, а добавляется к ней при необходимости.
3.4.4. Файловая система ОС UNIX
Файловая система UNIX имеет иерархическую струк­туру каталогов и файлов, включая корневой каталог. Файло-
вая система располагается на устройстве, которое обычно явля­ется магнитным диском того или иного типа. Если диск доста­точно велик, он может быть разбит на несколько логических дисков; тогда на каждом логическом диске может быть разме­щена отдельная файловая система. Каждая файловая система, прежде чем стать доступной, должна быть смонтирована.
Рассмотрим одну из ранних реализаций файловой сис­темы UNIX, основные идеи которой сохранились до сих пор.
Каждая файловая система имеет четыре основные части:
1) загрузочный блок — это первый блок диска (блок 0),
зарезервированный для системной загрузочной программы;
2) суперблок — это первый блок собственно файловой
системы (блок 1), содержащий основные данные о файловой
202
203
системе и ее размещении на диске, в том числе о списках сво­бодных i-узлов и блоков;
3) i-узлы — это последовательность блоков, следующих за суперблоком. I-узел содержит ссылки на блоки. Имеется ровно один i-узел для каждого каталога или файла в файловой систе­ме;
4) блоки — это блоки, которые занимают оставшееся про­странство диска и содержат либо действительные данные ката­логов и файлов (блоки данных), либо ссылки на блоки (косвен­ные блоки).
Суперблок содержит следующие данные: – размер дискового пространства, доступного файловой сис­теме (в блоках); – число блоков, зарегистрированных для i-узлов; – имя файловой системы; – имя тома; – время последнего изменения; – время последнего копирования (back up); – ссылку на список свободных блоков; – ссылку на список свободных i-узлов.
Структура файловой системы UNIX представлена на ри­сунке 3.4.
Загрузоч­ный блок
Суперблок
Список свободных
i-узлов
i-узлы
Блоки
Список свободных блоков
Рис. 3.4. Структура файловой системы UNIX
Каждый файл и каждый каталог в файловой системе пред­ставлен i-узлом, содержащим указатели на блоки, составляющие файл.
В i-узле содержится также информация о правах доступа к файлу, число ссылок на файл из каталогов и другие данные. Ка­ждый i-узел содержит 13 указателей.
Первые 10 указателей непосредственно ссылаются на бло­ки данных файла. Поскольку блок содержит 512 байтов, то этого достаточно для обработки файлов до 5120 байтов (512 ×10).
Если длина файла больше 5120 байт, используется 11-й указатель i-узла, который ссылается на косвенный блок из 128 ссылок на блоки данных. Использование косвенного блока по­зволяет увеличить длину файла до величины 70656 байт (512 ×
(10 + 128)).
Если и этого недостаточно, то используется 12-й указатель i-узла, ссылающийся на дважды косвенный блок, содержащий 128 ссылок на косвенные блоки. Тогда максимальный размер файла увеличивается до величины 8459264 байта (512 × (10+1282)). Наконец, использование последнего 13-го указателя
на трижды косвенный блок из 128 ссылок на дважды косвенные блоки дает предельную длину в файловой системе — 1082201088 байтов (512×(10+128+1282+1283)). Другие версии системы UNIX могут отличаться количеством ссылок в i-узле, косвенных блоках и размером блока данных.
Когда система загружается, имеется только одна из файловых систем, называемая корневой. В ней находятся все важнейшие каталоги (/dev,/etc, /bin и т.п.). Все остальные файловые системы должны быть созданы и смонтированы.
Команда mkfs создает новую файловую систему. Она расположена в каталоге /etc и имеет два параметра:
/etc/mkfs <имя> <размер>
Первый параметр является именем специального файла и указывает устройство, на котором создается файловая система.
Второй параметр — размер пространства файловой систе­мы в блоках — используется для определения по некоторым правилам числа блоков после того, как размещены i-узлы.
Пример создания файловой системы на флоппи-диске:
/etc/mkfs /dev/flo 2000
204
isize = 230
Ответное сообщение указывает число блоков, выделенных для размещения i-узлов.
Монтирование файловой системы UNIX для какой-либо ОС осуществляется посредством команды mount. Эта команда подключает корневой каталог монтируемой файловой системы в один из каталогов корневой файловой системы. Команда распо­ложена в каталоге /etc и имеет два параметра: /etc/mount
<устройство> <каталог>
Первый параметр является именем спецфайла для монти­руемого логического устройства, содержащего подключаемую файловую систему. Второй — имя уже существующего катало­га, под которым монтируется файловая система.
Чтобы выяснить, какие файловые системы смонтированы в данный момент, надо выполнить команду mount без парамет­ров:
mount
/dev/fl0 on /floppy0
Ответом является сообщение об этих системах (в данном случае об одной системе). Оно формируется на основе данных о монтаже файловых систем, хранимых в файле /etc/mnttab.
Права доступа корневого каталога монтируемой файловой системы и каталога, под которым производится монтаж, должны быть одинаковыми во избежание ошибок операционной систе­мы.
Если файловая система на съемном устройстве больше не используется, ее можно демонтировать командой umount, рас­положенной в каталоге /etc и имеющей один параметр:
umount <устройство>
Например, демонтаж файловой системы на гибком диске из предыдущего примера выполняется командой:
umount /dev/fl0
Результатом демонтажа является разрыв связи между кор­невым каталогом демонтируемой файловой системы и катало­гом корневой файловой системы, в котором производился мон­таж. При выполнении команды демонтажа текущий каталог должен быть вне демонтируемой файловой системы, иначе бу-
205
дет выдано сообщение о том, что устройство занято (umount : device busy)и команда не будет выполнена.
Структура файловой системы, описанная выше в тер­минах i-узлов, блоков, косвенных блоков и суперблока, может быть нарушена. В этом случае возникает необходимость в ее
восстановлении. При разрушении информации в трижды кос­венном блоке могут появиться следующие проблемы: – блок может оказаться вне системы, т.е. перестать быть ча­стью файла, и отсутствовать в списке свободных блоков; – могут появиться дубли i-узлов, описывающие один и тот же файл дважды; – могут возникнуть ситуации, когда некоторый блок является частью файла и одновременно присутствует в блоков; – могут существовать некоторых файлов, которые не включе­ны ни в один каталог.
Эти проблемы могут быть ликвидированы, поскольку структура файловой системы обладает некоторой избы­точностью (наличием дополнительной информации), позво­ляющей восстанавливать отдельные поломки. Вот некоторые
виды избыточности: – блок данных, являющийся каталогом, содержит имена фай-
лов и номера i-узлов; где-то имеется i-узел, соответствующий этому каталогу, и этот i-узел должен быть каталогом, а не обыч­ным файлом; – блок, включенный в список свободных блоков, теоретически не может быть частью какого-либо файла; для проверки этого достаточно занятых файлами, и сканировать список свободных блоков; – аналогично, блок, принадлежащий файлу, должен принадле­жать только одному файлу; это легко проверить.
проверки файловой системы, запускаемая командой fsck (file system check). В различных реализациях существуют разные ко­манды проверки целостности файловой системы: icheck, dcheck, ncheck. Однако все они в большей или меньшей степени пере­крываются командой fsck.
сканировать все i-узлы для просмотра всех блоков,
Эти и другие виды избыточности использует программа
206
списке свободных
Команда fsck выполняется в несколько фаз, на которых производится следующая работа: – проверка целостности i-узлов (счетчик связи, тип и фор­мат i-узла); – проверка каталогов, указывающих на i-узлы, содержащие ошибки;
– проверка каталогов, на которые нет ссылок; – проверка счетчиков связей в каталогах и файлах; – проверка неверных блоков и дублированных блоков в спи-
ске свободных блоков; неиспользуемых блоков ны быть включены, но не являются таковыми, в список свобод­ных блоков; счетчика общего числа свободных блоков.
Команда по умолчанию всегда проверяет корневую фай­ловую систему: все другие файловые системы проверяются, ес­ли их имена занесены в файл /etc/checklist.
После выполнения fsck, связанного с «починкой» файло­вой системы, может появиться сообщение
***** BOOT UNIX (NO SYNC!) *****,
требующее перезагрузки системы без выполнения коман­ды sync.
Если этого не сделать, работа по восстановлению списка свободных блоков будет утрачена, так как копии управляющих таблиц и буфера в оперативной памяти остались старыми. Для их обновления требуется перезагрузка без выгрузки буферов на диск командой sync.
Необходимым условием правильной работы fsck является также наличие пустого каталога /lost+found в корневом каталоге.
Если при выполнении fsck будут найдены каталоги, на ко­торые никто не ссылается в проверяемой файловой системе, они будут подключены в каталог /lost+found для дальнейшего изу­чения их принадлежности.
207
, которые долж-
3.4.5. Файловые системы для CD-ROM
Файловая система CDFS
В Windows 2000 обеспечивается поддержка файловой сис­темы CDFS (Compact Disk File System), отвечающей стандарту
ISO 9660, описывающему расположение информации на CD-
ROM. Поддерживаются длинные имена файлов в соответствии с ISO 9660 Level 2.
При создании CD-ROM под управлением Windows 2000 следует иметь в виду следующее:
− все имена каталогов и файлов должны содержать менее 32 символов;
− все имена каталогов и файлов должны состоять только из символов верхнего регистра;
− глубина каталогов не должна превышать 8 уровней от корня;
−
использование расширений имен файлов не обязательно.
Файловая система UDF
UDF (Universal Disk Format — универсальный дисковый формат) — спецификация формата файловой системы, незави­симой от операционной системы (ОС) для хранения файлов на оптических носителях (оптических дисках). UDF является реа­лизацией стандарта ISO/IEC 13346 (известного также как
ECMA-167).
Формат UDF призван заменить ISO 9660. ISO 9660 имеет некоторые ограничения, которые делают его несовместимым с DVD, CD-RW и другими новыми форматами дисков. UDF раз­работан так, чтобы избавить от этих ограничений. UDF позволя­ет дозаписывать файлы на CD-R- или CD-RW-дисках, один файл одновременно, без существенных потерь дискового пространст­ва, используя метод пакетной записи. Также UDF учитывает возможность выборочного стирания некоторых файлов на пере­записываемых носителях CD-RW, освобождая место на диске. В стандарте ISO 9660 такое не предусмотрено. UDF также лучше подходит для DVD, так как имеет лучшую поддержку для дис­ков большого объёма — в частности ISO 9660 не поддерживает файлы размером более 2 Гб.
UDF разработан и развивается Optical Storage Technology Association (OSTA).
Существует несколько версий формата UDF:
− 1.02 (поддерживается Windows 98, многими версиями ОС корпорации Apple, возможно использовать для DVD-RAM и магнитооптических дисков);
208
− 1.50 (поддерживается Windows 2000, Windows XP и Windows Server 2003; может быть несовместим с Windows 98 или Apple);
− 2.01 (поддерживается Windows XP и Windows Server 2003; может быть несовместим с Windows 98, Windows 2000 или Ap-
ple);
− 2.50 (поддерживается Windows Vista; может быть несовмес­тим с более ранними версиями Windows и др. платформами);
− 2.60 (поддерживается Windows Vista, Mac OS X 10.5, NetBSD).
209
3.5. Управление устройствами ввода-вывода и файловыми системами в ОС Windows
3.5.1. Диспетчер устройств и драйвера устройств
Задача системы ввода-вывода ОС Windows заключается в предоставлении основных средств (каркаса) для эффективного управления широким спектром устройств ввода-вывода. Основу этих средств образует набор независимых от устройств проце­дур для определенных аспектов ввода-вывода и набор загру­женных драйверов для общения с устройствами. Формирует этот каркас менеджер ввода-вывода, который предоставляет остальной операционной системе независимый от устройств ввод-вывод, вызывая для выполнения физического ввода­вывода соответствующий драйвер [13].
Файловые системы формально являются драйверами уст­ройств, работающих под управлением менеджера ввода-вывода. В операционной системе Windows существует два драйвера для файловых систем FAT и NTFS, которые независимы друг от друга и управляют различными разделами диска или различны­ми дисками [13].
Чтобы гарантировать, что драйверы устройств хорошо ра­ботают с остальной частью ОС, корпорация Мicrosоft определи­ла для драйверов модель Windows Driver Model, которой долж­ны соответствовать драйверы устройств. Разработчикам драйве­ров предоставляется набор инструментов, который должен по-
мочь в создании драйверов, удовлетворяющих требованиям этой модели [13].
Существует набор утилит, позволяющий контролировать работу программ, управляющих аппаратными устройствами. Так, утилита Drivers из набора средств Мiсrоsоft Windows Resource Кit позволяет получить детальную информацию о за­груженных драйверах в текстовом формате.
Корпорацией Мiсrоsоft разработана утилита Bootvis, по­зволяющая выявлять проблемы, возникающие в процессе за­грузки операционной системы. Эта утилита выполняет трасси­ровку всех этапов загрузки системы, в том числе этапов загруз­ки системного ядра, драйверов устройств и запуска процессов. Утилита не входит в стандартную поставку Windows, но ее можно загрузить из Интернета (http://download.microsoft.com:80
/download/whistler/BTV/1.0/WXP/EN-US/BootVis-Tool.exe) [13].
В самой операционной системе Windows имеется про­грамма «Диспетчер устройств», которую используют для об- новления драйверов (или программного обеспечения) оборудо­вания, изменения настроек оборудования, а также для уст­ранения неполадок. Драйверы устройств для аппаратных про­дуктов с эмблемой «Для Мiсrоsоft Windows ХР» или какой-либо другой более поздней версии снабжаются цифровой подписью корпорации Microsoft, которая подтверждает, что данный про­дукт проверен на совместимость с Windows и не изменился по­сле проведения проверки. В окне диспетчера устройств пред­ставлено графическое отображение оборудования, установлен­ного· на компьютер. Для открытия окна диспетчера устройств нужно щелкнуть правой клавишей мыши по значку «Мой ком­пьютер» и выбрать в контекстном меню строку «Свойства». В открывшемся окне «Свойства системы» следует перейти на вкладку «Оборудование» и нажать кнопку «Диспетчер уст­ройств».
В окне «Диспетчера устройств» (рис. 3.5) можно, раскры­вая соответствующие узлы, видеть устройства, которые либо подключены и работают, либо отключены. «Диспетчер уст­ройств» обычно используется для проверки состояния оборудо­вания, подключения-отключения оборудования и обновления драйверов устройств, установленных на компьютере. Кроме то-
210