- •Челябинск
- •2002 Предисловие
- •От издательства
- •Часть 1 Операционные системы и среды
- •Глава 1 Основные понятия Понятие операционной среды
- •Понятия вычислительного процесса и ресурса
- •Диаграмма состояний процесса
- •Реализация понятия последовательного процесса в ос
- •Процессы и треды
- •Прерывания
- •Основные виды ресурсов
- •Классификация операционных систем
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 2 Управление задачами и памятью в операционных системах
- •Планирование и диспетчеризация процессов и задач Стратегии планирования
- •Дисциплины диспетчеризации
- •Вытесняющие и не вытесняющие алгоритмы диспетчеризации
- •Качество диспетчеризации и гарантии обслуживания
- •Диспетчеризация задач с использованием динамических приоритетов
- •Память и отображения, виртуальное адресное пространство
- •Простое непрерывное распределение и распределение с перекрытием (оверлейные структуры)
- •Распределение статическими и динамическими разделами
- •Разделы с фиксированными границами
- •Разделы с подвижными границами
- •Сегментная, страничная и сегментно-страничная организация памяти
- •Сегментный способ организации виртуальной памяти
- •Страничный способ организации виртуальной памяти
- •Сегментно-страничный способ организации виртуальной памяти
- •Распределение оперативной памяти в современных ос для пк
- •Распределение оперативной памяти вMs-dos
- •Распределение оперативной памяти вMicrosoftWindows95/98
- •Распределение оперативной памяти вMicrosoftWindowsNt
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 3 Особенности архитектуры микропроцессоровi80x86
- •Реальный и защищённый режимы работы процессора
- •Новые системные регистры микропроцессоров i80x86
- •Адресация в 32-разрядных микропроцессорахi80х86 при работе в защищённом режиме Поддержка сегментного способа организации виртуальной памяти
- •Поддержка страничного способа организации виртуальной памяти
- •Режим виртуальных машин для исполнения приложений реального режима
- •Защита адресного пространства задач
- •Уровни привилегий для защиты адресного пространства задач
- •Механизм шлюзов для передачи управления на сегменты кода с другими уровнями привилегий
- •Система прерываний 32-разрядных микропроцессоровi80x86
- •Работа системы прерываний в реальном режиме работы процессора
- •Работа системы прерываний в защищённом режиме работы процессора
- •Обработка прерываний в контексте текущей задачи
- •Обработка прерываний с переключением на новую задачу
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 4 Управление вводом/выводом и файловые системы
- •Основные понятия и концепции организации ввода/вывода в ос
- •Режимы управления вводом/выводом
- •Закрепление устройств, общие устройства ввода/вывода
- •Основные системные таблицы ввода/вывода
- •Синхронный и асинхронный ввод/вывод
- •Кэширование операций ввода/вывода при работе с накопителями на магнитных дисках
- •Функции файловой системы ос и иерархия данных
- •Структура магнитного диска (разбиение дисков на разделы)
- •Файловая системаFat
- •Структура загрузочной записиDos
- •Файловые системыVfaTиFat32
- •Файловая система hpfs
- •Файловая система ntfs (New Technology File System)
- •Основные возможности файловой системы ntfs
- •Структура тома с файловой системой ntfs
- •Возможности файловой системыNtfSпо ограничению доступа к файлам и каталогам
- •Основные отличияFaTи ntfs
- •Контрольные вопросы и задачи Вопросы для проверки
- •Задания
- •Глава 5 Архитектура операционных систем и интерфейсы прикладного
- •Принцип функциональной избирательности
- •Принцип генерируемости ос
- •Принцип функциональной избыточности
- •Принцип виртуализации
- •Принцип независимости программ от внешних устройств
- •Принцип совместимости
- •Принцип открытой и наращиваемой ос
- •Принцип мобильности (переносимости)
- •Принцип обеспечения безопасности вычислений
- •Микроядерные операционные системы
- •Монолитные операционные системы
- •Требования, предъявляемые к ос реального времени
- •Мультипрограммность и многозадачность
- •Приоритеты задач (потоков)
- •Наследование приоритетов
- •Синхронизация процессов и задач
- •Предсказуемость
- •Принципы построения интерфейсов операционных систем
- •Интерфейс прикладного программирования
- •Реализация функцийApIна уровне ос
- •Реализация функцийApIна уровне системы программирования
- •Реализация функцийApIс помощью внешних библиотек
- •Платформенно-независимый интерфейс posix
- •Пример программирования в различныхApiос
- •Текст программы дляWindows(WinApi)
- •Текст программы дляLinux(posixapi)
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 6 Проектирование параллельных взаимодействующих вычислительных процессов
- •Независимые и взаимодействующие вычислительные процессы
- •Средства синхронизации и связи при проектировании взаимодействующих вычислительных процессов
- •Использование блокировки памяти при синхронизации параллельных процессов
- •Возможные проблемы при организации взаимного исключения посредством использования только блокировки памяти
- •Алгоритм Деккера
- •Синхронизация процессов посредством операции «проверка и установка»
- •Семафорные примитивы Дейкстры
- •Мьютексы
- •Использование семафоров при проектировании взаимодействующих вычислительных процессов
- •Задача «поставщик – потребитель»
- •Пример простейшей синхронизации взаимодействующих процессов
- •Решение задачи «читатели – писатели»
- •Мониторы Хоара
- •Почтовые ящики
- •Конвейеры и очереди сообщений Конвейеры (программные каналы)
- •Очереди сообщений
- •Примеры создания параллельных взаимодействующих вычислительных процессов
- •Пример создания многозадачного приложения с помощью системы программированияBorlandDelphi
- •Пример создания комплекса параллельных взаимодействующих программ, выступающих как самостоятельные вычислительные процессы
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 7 Проблема тупиков и методы борьбы с ними
- •Понятие тупиковой ситуации при выполнении параллельных вычислительных процессов
- •Примеры тупиковых ситуаций и причины их возникновения
- •Пример тупика на ресурсах типаCr
- •Пример тупика на ресурсах типаCRиSr
- •Пример тупика на ресурсах типаSr
- •1: P(s2); 5: p(s1);
- •Формальные модели для изучения проблемы тупиковых ситуаций
- •Сети Петри
- •Вычислительные схемы
- •Модель пространства состояний системы
- •Методы борьбы с тупиками
- •Предотвращение тупиков
- •Обход тупиков
- •Обнаружение тупика
- •Обнаружение тупика посредством редукции графа повторно используемых ресурсов
- •Методы обнаружения тупика по наличию замкнутой цепочки запросов
- •Алгоритм обнаружения тупика по наличию замкнутой цепочки запросов
- •Контрольные вопросы и задачи Вопросы для проверки
- •Глава 8 Современные операционные системы
- •Семейство операционных системUnix Общая характеристика семейства операционных систем unix, особенности архитектуры семейства осunix
- •Основные понятия системыUnix
- •Виртуальная машина
- •Пользователь
- •Интерфейс пользователя
- •Привилегированный пользователь
- •Команды и командный интерпретатор
- •Процессы
- •Функционирование системыUnix
- •Выполнение процессов
- •Подсистема ввода/вывода
- •Перенаправление ввода/вывода
- •Файловая система
- •Структура файловой системы
- •Защита файлов
- •Межпроцессные коммуникации вUnix
- •Сигналы
- •Семафоры
- •Программные каналы
- •Очереди сообщений
- •Разделяемая память
- •Вызовы удаленных процедур (rpc)
- •Операционная системаLinux
- •Семейство операционных систем os/2WarpкомпанииIbm
- •Особенности архитектуры и основные возможности os/2Warp
- •Особенности интерфейса os/2Warp
- •Серверная операционная система os/2Warp4.5
- •Сетевая ос реального времениQnx
- •Архитектура системыQnx
- •Основные механизмы qnx для организации распредёленных вычислений
- •Контрольные вопросы и задачи Вопросы для проверки
- •Приложение а Тексты программы параллельных взаимодействующих задач
- •Приложение б Тексты программ комплекса параллельных взаимодействующих приложений
- •Текст программы а
- •Текст программы в
- •Текст программы d
- •Текст программы g
- •Список литературы
- •Часть 1 6
- •Глава 5 Архитектура операционных систем и интерфейсы прикладного 240
- •Глава 6 Проектирование параллельных взаимодействующих вычислительных 279
- •Глава 7 Проблема тупиков и методы 348
- •Глава 8 Современные операционные 391
Структура магнитного диска (разбиение дисков на разделы)
Для того чтобы можно было загрузить с магнитного диска собственно саму ОС, а уже с её помощью и организовать работу той или иной системы управления файлами, были приняты специальные системные соглашения о структуре диска. Расположение структуры данных, несущее информацию о логической организации диска и простейшую программу, с помощью которой можно находить и загружать программы загрузки той или иной ОС, очевидно – это самый первый сектор магнитного диска.
Как известно, информация на магнитных дисках размещается и передаётся блоками. Каждый такой блок называется сектором(sector), сектора расположены на концентрических дорожках поверхности диска. Каждая дорожка (track) образуется при вращении магнитного диска под зафиксированной в некотором предопределенном положении головкой чтения/записи. Накопитель на жестких магнитных дисках (НЖМД)1содержит один или более дисков (в современных распространенных НЖМД часто – два или три). Однако обычно под термином «жесткий диск» понимают весь пакет магнитных дисков [24].
Группы дорожек (треков) одного радиуса, расположенных на поверхностях магнитных дисков, образуют так называемые цилиндры(cylinder). Современные жесткие диски могут иметь по несколько десятков тысяч цилиндров, в то время как на поверхности дискеты число дорожек (число цилиндров) ныне, как правило, составляет всего восемьдесят2.
Каждый сектор состоит из поля данныхиполя служебной информации,ограничивающей и идентифицирующей его. Размер сектора (точнее – ёмкость поля данных) устанавливается контроллером или драйвером. Пользовательский интерфейсDOSподдерживает единственный размер сектора – 512 байт.BIOSже непосредственно предоставляет возможности работы с секторами размером 128, 256, 512 или 1024 байт. Если управлять контроллером непосредственно, а не через программный интерфейс более высокого уровня (например, уровеньDOS), то можно обрабатывать секторы и с другими размерами. Однако в большинстве современных ОС размер сектора выбирается равным 512 байт.
Физический адрес сектора на диске определяется с помощью трех «координат», то есть представляется триадой [c-h-s], где с – номер цилиндра (дорожки на поверхности диска,cylinder),h– номер рабочей поверхности диска (магнитной головки,head),as– номер сектора на дорожке. Номер цилиндра с лежит в диапазоне 0...С-1, где С – количество цилиндров. Номер рабочей поверхности диска h принадлежит диапазону 0...Н-1, где Н – число магнитных головок в накопителе. Номер сектора на дорожке s указывается в диапазоне 1...S, где S – количество секторов на дорожке. Например, триада [1-0-2] адресует сектор 2 на дорожке 0 (обычно верхняя рабочая поверхность) цилиндра 1. В дальнейшем мы тоже будем пользоваться именно этими обозначениями.
Напомним, что обмен информацией между ОЗУ и дисками физически осуществляется только секторами. Вся совокупность физических секторов на винчестере представляет его неформатированную ёмкость.
Жесткий диск может быть разбит на несколько разделов(partition) которые в принципе затем могут использоваться либо одной ОС, либо различными ОС. Причем самым главным является то, что на каждом разделе может быть организована своя файловая система. Однако для организации даже одной-единственной файловой системы необходимо определить, по крайней мере, один раздел.
Разделы диска могут быть двух типов – primary(обычно этот термин переводят какпервичный)иextended (расширенный).Максимальное число primary-разделов равно четырем. При этом на диске обязательно должен быть, по крайней мере, один primary-раздел. Если primary-разделов несколько, то только один из них может быть активным. Именно загрузчику, расположенному в активном разделе, передаётся управление при включении компьютера и загрузке операционной системы. Остальные primary-разделы в этом случае считаются1«невидимыми, скрытыми» (hidden).
Согласно спецификациям на одном жестком диске может быть только один extended-раздел, который, в свою очередь, может быть разделен на большое количество подразделов –логических дисков (logical).В этом смысле термин «первичный» следует признать не совсем удачным переводом словаprimary; можно это слово перевести и как «простейший, примитивный». В этом случае становится понятным и логичным терминextended.
Один из primary-разделов должен быть активным,именно с него должна загружаться программа загрузки операционной системы, или так называемыйменеджер загрузки,назначение которого – загрузить программу загрузки ОС из какого-нибудь другого раздела, и уже с её помощью загружать операционную систему. Поскольку до загрузки ОС система управления файлами работать не может, то следует использовать для указания упомянутых загрузчиков исключительно абсолютные адреса в формате [с-h-s].
По физическому адресу [0-0-1] на винчестере располагается главная загрузочная запись(masterbootrecord,MBR), содержащаявнесистемный загрузчик(non–systembootstrap–NSB), а такжетаблицу разделов(partitiontable,PT). Эта запись занимает ровно один сектор, она размещается в памяти, начиная с адреса 0:7C00h, после чего управление передаётся коду, содержащемуся в этом самом первом секторе магнитного диска. Таким образом, в самом первом (стартовом) секторе физического жесткого диска находится не обычная записьbootrecord, как на дискете,amasterbootrecord.
MBR является основным средством загрузки с жесткого диска, поддерживаемым BIOS. В MBR находятся три важных элемента:
программа начальной загрузки (non-systembootstrap). Именно она запускаетсяBIOSпосле успешной загрузки в память первого сектора с MBR. Она, очевидно, не превышает 512 байт и её хватает только на то, чтобы загрузить следующую, чуть более сложную программу, обычно – стартовый сектор операционной системы – и передать ему управление;
таблица описания разделов диска (partitiontable). Располагается в MBRпо смещению 0x1BEи занимает 64 байта;
сигнатура MBR. Последние два байта MBR должны содержать число AA55h. По наличию этой сигнатурыBIOSпроверяет, что первый блок был загружен успешно. Сигнатура эта выбрана не случайно. Её успешная проверка позволяет установить, что все линии передачи данных могут передавать и нули, и единицы.
Таблица partition tableописывает размещение и характеристики имеющихся на винчестере разделов. Можно сказать, что эта таблица разделов – одна из наиболее важных структур данных на жестком диске. Если эта таблица повреждена, то не только не будет загружаться операционная система (или одна из операционных систем, установленных на винчестере), но перестанут быть доступными и данные, расположенные на винчестере, особенно если жёсткий диск был разбит на несколько разделов.
Смещение (Offset)
|
Размер (Size) (байт)
|
Содержимое (Contents)
|
0
|
446
|
Программа анализа Partition Table и загрузки System Bootstrap с активного раздела жесткого диска
|
+1BEh
|
16
|
Partition 1 entry (Описатель раздела)
|
-1CEh
|
16
|
Partition 2 entry
|
+1DEh
|
16
|
Partition 3 entry
|
+1EEh
|
16
|
Partition 3 entry
|
+1FEh
|
16
|
Сигнатура (AA55h)
|
Рис.4.4.Структура MBR
Упрощенно структура MBR представлена на рис. 4.4. Из неё видно, что в начале этого сектора располагается программа анализа таблицы разделов и чтения первого сектора из активного раздела диска. Сама таблица partitiontableрасполагается в конце MBR, и для описания каждого раздела в этой таблице отводится по 16 байтов. Первым байтом в элементе раздела идет флаг активности разделаbootindicator(0 – не активен, 128 (80Н) – активен). Он служит для определения, является ли раздел системным загрузочным и есть ли необходимость производить загрузку операционной системы с него при старте компьютера. Активным может быть только один раздел. За флагом активности раздела следует байт номера головки, с которой начинается раздел. За ним следует два байта, означающие соответственно номер сектора и номер цилиндра загрузочного сектора, где располагается первый сектор загрузчика операционной системы. Затем следует кодовый идентификаторSystemID(длиной в один байт), указывающий на принадлежность данного раздела к той или иной операционной системе и установке на нём соответствующей файловой системы. В табл. 4.1 приведены некоторые (наиболее известные) идентификаторы.
Таблица 4.1.Сигнатуры (типы) разделов
System ID
|
Тип раздела
|
System ID
|
Тип раздела
|
00
|
Empty («пустой» раздел)
|
41
|
PPC PreP Boot
|
01
|
FAT12
|
42
|
SFS
|
02
|
XENIX root
|
4D
|
QNX 4.x
|
03
|
XENIX usr
|
4E
|
QNX 4.x 2nd part
|
04
|
FAT16 (<32 Мбайт)
|
4F
|
QNX 4.x 3nd part
|
05
|
Extended
|
50
|
OnTrack DM
|
06
|
FAT16
|
51
|
OnTrack DM6 Aux
|
07
|
HPFS/NTFS
|
52
|
CP/M
|
08
|
AIX
|
53
|
OnTrack DM6
|
09
|
AIX bootable
|
54
|
OnTrack DM6
|
0A
|
OS/2 Boot Manager
|
55
|
EZ Drive
|
0B
|
Win95 FAT32
|
56
|
Golden Bou
|
0С
|
Win95 FAT32 LBA
|
5C
|
Priam Edisk
|
0Е
|
Win95 FAT16 LBA
|
61
|
Speed Stor
|
0F
|
Win95 Extended
|
64
|
Novell Netware
|
10
|
OPUS
|
65
|
Novell Netware
|
11
|
Hidden FAT12
|
75
|
PC/IX
|
12
|
Compaq diagnost
|
80
|
Old Minix
|
14
|
Hidden FAT16 (<32 Мбайт)
|
82
|
Linux swap
|
16
|
Hidden FAT16
|
83
|
Linux native
|
17
|
Hidden HPFS/NTFS
|
84
|
OS/2 hidden C:
|
18
|
AST Windows swap
|
85
|
Linux Extended
|
1B
|
Hidden Win95 Fat
|
86
|
NTFS volume set
|
1C
|
Hidden Win95 Fat
|
A5
|
BSD/386
|
1E
|
Hidden Win95 Fat
|
A6
|
Open BSD
|
24
|
NEC DOS
|
A7
|
Next Step
|
3C
|
Partition Magic
|
ЕВ
|
Be OS
|
40
|
Venix 80286
|
|
|
За байтом кода операционной системы расположен байт номера головки конца раздела, за которым идут два байта – номер сектора и номер цилиндра последнего сектора данного раздела. Ниже представлен формат элемента таблицы разделов.
Таблица 4.2.Формат элемента таблицы разделов
Название записи элемента Partition Table |
Длина, байт |
Флаг активности раздела |
1 |
Номер головки начала раздела |
1 |
Номер сектора и номер цилиндра загрузочного сектора раздела |
2 |
Кодовый идентификатор операционной системы |
1 |
Номер головки конца раздела |
1 |
Номер сектора и цилиндра последнего сектора раздела |
2 |
Младшее и старшее двухбайтовое слово относительного номера начального сектора |
4 |
Младшее и старшее двухбайтовое слово размера раздела в секторах |
4 |
Номера сектора и номер цилиндра секторов в разделах занимают по 6 и 10 бит соответственно. Ниже представлен формат записи, содержащей номера сектора и цилиндра.
Биты номера цилиндра
|
Биты номера сектора
| ||||||||||||||
15
|
14
|
13
|
12
|
11
|
10
|
9
|
8
|
7
|
6
|
5
|
4
|
3
|
2
|
1
|
0
|
Как мы уже сказали, загрузчик non-systembootstrapслужит для поиска с помощьюpartitiontableактивного раздела, копирования в оперативную память компьютера загрузчикаsystembootstrapиз выбранного раздела и передачи ему управления, что позволяет осуществить загрузку ОС.
Вслед за сектором MBRразмещаются собственно сами разделы (рис. 4.5). В процессе начальной загрузки сектора MBR, содержащего таблицуpartitiontable, работают программные модулиBIOS. Начальная загрузка считается выполненной корректно только в том случае, когда таблица разделов содержит допустимую информацию.
В MS-DOSв первичном разделе может быть сформирован только один логический диск, а в расширенном – любое их количество. Каждый логический диск «управляется» своим логическим приводом. Каждому логическому диску на винчестере соответствует своя (относительная)логическаянумерация. Физическая же адресация жесткого диска сквозная.
Первичный раздел DOSвключает толькосистемный логический дискбез каких-либо дополнительных информационных структур.
Рис.4.5.Разбиение диска на разделы
Расширенный раздел DOSсодержит вторичную записьMBR(secondaryMBR,SMBR), в состав которой вместоpartitiontableвходит таблица логического диска (LDT,logicaldisktable), ей аналогичная. Таблица LDT описывает размещение и характеристики раздела, содержащего единственный логический диск, а также может специфицировать следующую запись SMBR. Следовательно, если в расширенном разделеDOSсоздано К логических дисков, то он содержит К экземпляров SMBR, связанных в список. Каждый элемент этого списка описывает соответствующий логический диск и ссылается (кроме последнего) на следующий элемент списка.
Утилиты, позволяющие разбить диск на разделы и тем самым сформировать как partitiontable, так и, возможно, списковую структуру из LDT (подобно тому, как это изображено на рис. 4.6), обычно называютсяFDISK(отformdisk), хотя есть утилиты и с другим названием, умеющие выполнить разбиение диска. Напомним, что FDISK отMS-DOSпозволяет создать только один primary-раздел и одинextended, который, в свою очередь, предлагается разделить на несколько логических дисков. Аналогичные утилиты других ОС имеют существенно больше возможностей. Так, например,FDISKсистемы OS/2 позволяет создавать несколько primary–разделов, причем их можно выделять не только последовательно, начиная с первых цилиндров, но и с конца свободного дискового пространства. Это удобно, если нужно исключить из работы некоторый диапазон дискового пространства (например, из-за дефектов на поверхности магнитного диска). С помощью этой утилиты можно установить и менеджер загрузки (boot-менеджер).
Прежде чем перейти к boot-менеджерам, рассмотрим ещё раз процесс загрузки ОС. Процедура начальной загрузки (bootstraploader) вызывается как программное прерывание (BIOSINT19h). Эта процедура определяет первое готовое устройство из списка разрешенных и доступных (гибкий или жесткий диск, в современных компьютерах это могут быть такжеCD-ROM, приводZIP-driveкомпанииIomega, сетевой адаптер или другое устройство) и пытается загрузить с него в ОЗУ короткую главную программу-загрузчик. Для винчестеров – это загрузчикnon-systembootstrapизMBR, и ему передаётся управление. Главный загрузчик определяет на диске активный раздел, загружает его собственный загрузчик (systembootstrap) и передаёт управление ему. И, наконец, этот загрузчик загружает необходимые файлы операционной системы и передаёт ей управление. Далее операционная система выполняет инициализацию подведомственных ей программных и аппаратных средств. Она добавляет новые сервисы, вызываемые, как правило, тоже через механизм программных прерываний, и расширяет (или заменяет) некоторые сервисыBIOS. Необходимо отметить, что в современных мультипрограммных операционных системах большинство сервисовBIOS, изначально расположенных в ПЗУ, как правило, заменяются собственными драйверами, поскольку они должны работать в режиме прерываний, а не в режиме сканирования готовности.
Соответственно рассмотренному процессу загрузки, мы каждый раз при запуске компьютера будем попадать в одну и ту же ОС. Но иногда это нас не устраивает. Так называемые boot-менеджеры (менеджеры загрузки) предназначены для того, чтобы пользователь мог выбрать среди нескольких установленных на компьютере ОС нужную и передать управление загрузчику этой выбранной ОС. Существует большое количество таких менеджеров, хороший обзор таких программ приведен в работе [78]. В ней рекомендуется в качестве менеджера загрузки использовать Systemcommander. Однако этот менеджер должен располагаться в активном разделе с файловой системойFAT, что в наше время нельзя признать хорошим решением. На наш взгляд, одним из лучших долгое время былBootmanagerкомпанииIBM, входящий в состав утилит OS/2. Для его размещения создается отдельный primary-раздел, который, естественно, и является активным (он помечается какstartable).Раздел для Boot-менеджера OS/2 занимает всего один цилиндр и может размещаться не только на нулевом (начальном) цилиндре, но и на последнем цилиндре. В этом разделе не организуется никакой файловой системы, поскольку обращение к менеджеру идет с использованием абсолютной адресации, а самBootmanagerпредставляет собой простейшую абсолютную двоичную программу. УстановкаBootmanagerосуществляется из программы FDISK. При этом появляется возможность указать, какие разделы могут быть загружаемыми (они помечаются какbootable), то есть в каких разделах на первом логическом секторе будут размещены программы загрузки ОС. Загружаемыми могут быть какprimary-, так и extended-разделы. При этом, естественно, имеется возможность указать как время на принятие решения, так и загрузку некоторой ОС «по умолчанию». Удобным является и то, что при разбиении диска на разделы можно вообще не создавать primary-разделов. Это особенно важно, если в компьютере установлено более одного дискового накопителя либо если мы подготавливаем винчестер, который должен достаточно часто переноситься с одного компьютера на другой. Дело в том, что в большинстве ОС принято следующее правило именования логических дисков: первый логический диск обозначается литерой С:, второй –D: и т. д. При этом литеру С: получает активный primary-раздел. Однако если к одному винчестеру в персональном компьютере подключить второй винчестер и он тоже имеет активный primary-раздел, то этот primary-раздел второго винчестера получит литеру D:, отодвигая логический диск D: первого винчестера на место диска Е: (и т. д. по цепочке). Если же второй (и последующие) винчестер не имеет primary-раздела с установленной на нем файловой системой, которую данная ОС знает, то «именование» логических дисков первого винчестера не нарушается. Естественно, что логические диски второго винчестера получают литеры логических дисков вслед за дисками первого винчестера.BootmanagerOS/2, создавая только логические диски на винчестере, на самом деле создает и «пустой» primary-раздел, однако этот раздел не становится активным и не получает статус логического диска. К сожалению, все более популярная в наши дни ОСWindows2000 теперь не только снимает флаг активности с раздела, в котором размещенBootmanager(как это происходило при инсталляции любых ОС от компанииMicrosoft), но и физически уничтожает его двоичный код. Замена драйвера FASTFAT.SYSсистемы Windows 2000на более раннюю версию (в бета-версии ОС Windows 2000система не уничтожала код Boot manager) помогает лишь до установки Service pack.Поэтому рекомендовать этот менеджер загрузки уже нельзя. Из последних менеджеров загрузки, пожалуй, наиболее мощным являетсяBootstar, но его нельзя рекомендовать неподготовленным пользователям.
Одной из самых известных и до сих пор достаточно часто используемых утилит, с помощью которой можно посмотреть и отредактировать таблицу разделов, а также выполнить и другие действия, связанные с изучением и исправлением данных как на дискете, так и на винчестере, является программа Diskeditorиз комплекта нортоновских утилит. Работа с ней достаточно подробно изложена в книге [9]. Следует, однако, заметить, чтоDiskeditor, с одной стороны, очень мощное средство, и поэтому его следует использовать с большой осторожностью, а с другой стороны – эта утилита работает только в средеDOS. На сегодняшний день главным недостатком этой утилиты является ограничение на максимальный размер диска в 8 Гбайт.
Надо признать, что в последнее время появилось большое количество утилит, которые предоставляют возможность более наглядно представить разбиение диска на разделы, поскольку в них используется графический интерфейс. Эти программы успешно и корректно работают с наиболее распространенными типами разделов (разделы под FAT,FAT32,NTFS). Однако созданы они в основном для работы в средеWin32API, что часто ограничивает возможность их использования. Одной из самых известных и мощных программ для работы с разделами жесткого диска являетсяPartitionMagicфирмыPowerQuest.