Гордеев А.В. Операционные системы (2-е изд., 2004) (1186250), страница 41
Текст из файла (страница 41)
Диск Е:получает порядковый номер 6, а не 9, как следовало бы ожидать, если подсчитывать все имеющиеся элементы в таблицах разделов. И это логично, поскольку в каждой таблице дисков логический диск описывает только один элемент — первый.Таким образом, если бы расширенный раздел был разбит не на два, а на три логических диска, то последний подраздел (в системе Windows он именовался бы диском F:)получил бы номер 7.Системный загрузчик Windows NT/2000/XPОперационные системы класса Windows NT имеют возможность загружать не однуоперационную систему, а несколько, то есть системный загрузчик Windows NT/2000/ХР является менеджером загрузки.
Для указания установленных операционных систем и выбора одной из них используется файл boot.ini. Этот файл является текстовым. Он обрабатывается программой ntldr, которая, собственно, и является системным загрузчиком и на которую передается управление из внесистемногозагрузчика.Файл bootini состоит из двух секций. Пример такого файла приведен в листинге 5.1.Листинг 5 .
1 . Файл boot.ini[boot loader]timeout=10default=multi(0)disk(0)rdisk(0)partitTon(2)\WINNT[operating systems]multi(0)disk(0)rdisk(0)part1tion(2)\WINNT="IT.MTC.EDU Microsoft Windows 2000 Server RUS"/fastdetectmulti(0)disk(0)rdisk(l)partition(2)\WIN2KP="Staff.MTC.EDU Microsoft Windows 2000Professional RUS" /fastdetectmulti(0)disk(0)rdisk(0)partition(4)\WIN2K_S="SQL server on M$ Windows 2000 Server RUS" /•fastdetectmulti(0)disk(0)rdisk(2)partition(2)\WIN2K.PRO"Microsoft Windows 2000 Professional RUS"/fastdetectC:\="Microsoft Windows 98"C:\CMDC0NS\B00TSECT.DAT="Recovery Console Microsoft Windows 2000" /cmdconsпервой секции этого файла, названной [boot loader], строка timeout задает времясекундах, по истечении которого будет загружаться операционная система, укаанная в строке default этой секции. Как мы видим, для выбора одной из операцинных систем пользователю дается 10 с. Если бы значение timeout равнялось нулюЛи Вовторой секции была бы прописана только одна операционная система,У пользователя не было бы выбора.
В этом случае будет загружаться система,156Глава 5. Управление вводом-выводом в операционных системахуказанная в строке default. Если же значение timeout равняется - 1 , то загрузка небудет происходить до тех пор, пока пользователь явно не выберет в меню одну изоперационных систем и не нажмет клавишу Enter.Инструкция default указывает, где (на каком накопителе и в каком разделе этогонакопителя) располагается операционная система, загружаемая по умолчаниюВ большинстве случаев мы можем увидеть там примерно такую строку:default=multi(0)disk(0)rdisk(0)part1tion(2)\WINNTСлово multi в этой строке означает, что при работе программы ntldr должны использоваться драйверы из BIOS компьютера (используется прерывание intl3h).Номер в скобках должен быть равен 0.Слово disk на персональных компьютерах с подключением накопителей на магнитных дисках через IDE-интерфейс фактически не несет никакой информации,однако оно должно быть записано, а в скобках должен стоять ноль.
В случае SCSIдисков это слово задает идентификатор SCSI ID диска.Слово rdisk определяет порядковый номер накопителя. Всего при использованииIDE-интерфейса может быть до 4 накопителей на жестких дисках; они нумеруются от 0 до 3.Наконец, слово partition определяет номер раздела, на который установлена операционная система. После указания раздела записывается имя каталога, в которомрасположены файлы этой операционной системы.Во второй секции, обозначенной как [operating systems], построчно перечисляютсяпути к установленным операционным системам с текстовыми полями, заключенными в кавычки.
Именно тот текст мы и видим при работе загрузчика ntldr, когдаон выводит меню с операционными системами. Если на компьютере установленыпомимо систем Windows NT/2000/XP еще какие-нибудь операционные системы(например, DOS, Windows 9x, Linux и т. д.), то их можно будет также загрузить.Для этого в секции необходимо указать полный путь к файлу, в котором долженсодержаться соответствующий системный загрузчик (загрузочный сектор). Этотфайл обязательно должен располагаться на том же диске С:, иначе программа ntldrне сможет его найти.
Следует отметить, что для MS DOS и Windows 9x можно неуказывать имя файла с загрузочным сектором, а указать только сам корневой каталог диска С:. Но это возможно только в том случае, если имя файла, содержащегосистемный загрузчик, будет стандартным — bootsect.dos.Кэширование операций ввода-выводапри работе с накопителямина магнитных дискахКак известно, накопители на магнитных дисках обладают крайне низким быстродействием по сравнению с процессорами и оперативной памятью. Разница составляет несколько порядков. Например, современные процессоры за один такт работы, а они работают уже с частотами в несколько гигагерц, могут выполнять по ДВоперации, и, таким образом, время выполнения операции (с позиции внешнего на-Кэширование операций ввода-вывода1 57блюдателя, который не видит конвейеризации при выполнении машинных команд,позволяющей увеличить производительность в несколько раз) может составлятьменее 0,5 не (!).
В то же время переход магнитной головки с дорожки на дорожкузанимает несколько миллисекунд; подобная же задержка требуется и на поиск нужного сектора данных. Как известно, в современных приводах средняя длительностьна чтение случайным образом выбранного сектора данных составляет около 20 мс,что существенно медленнее, чем выборка команды или операнда из оперативнойпамяти и уж тем более из кэш-памяти. Правда, после этого данные читаются большим пакетом (сектор, как мы уже говорили, имеет размер 512 байт, а при операциях с диском часто читаются или записываются сразу несколько секторов).
Такимобразом, средняя скорость работы процессора с оперативной памятью на 2-3 порядка выше, чем средняя скорость передачи данных из внешней памяти на магнитных дисках в оперативную память.Для того чтобы сгладить такое сильное несоответствие в производительностиосновных подсистем, используется буферизация и/или кэширование данных в дисковом кэше (disk cache). Простейшим вариантом ускорения дисковых операцийчтения данных можно считать использование двойной буферизации.
Ее суть заключается в том, что пока в один буфер заносятся данные с магнитного диска, извторого буфера ранее считанные данные могут быть прочитаны и переданы в запросившую их задачу. Аналогично и при записи данных. Буферизация используется во всех операционных системах, но помимо буферизации применяется и кэширование. Кэширование исключительно полезно в том случае, когда программанеоднократно читает с диска одни и те же данные.
После того как они один разбудут помещены в кэш, обращений к диску больше не потребуется, и скорость работы программы значительно возрастет.Упрощая, можно сказать, что под дисковым кэшем можно понимать некий пулбуферов, которыми мы управляем с помощью соответствующего системного процесса.
Если считывается какое-то множество секторов, содержащих записи тогоили иного файла, то эти данные, пройдя через кэш, там остаются (до тех пор, покадругие секторы не заменят эти буферы). Если впоследствии потребуется повторное чтение, то данные могут быть извлечены непосредственно из оперативной памяти без фактического обращения к диску. Ускорить можно и операции записи:Данные помещаются в кэш, и для запросившей эту операцию задачи получается,что фактически они уже записаны. Задача может продолжить свое выполнение, асистемные внешние процессы через некоторое время запишут данные на диск.
Этоназывается отложенной записью (lazy write 1 ). Если режим отложенной записи отключен, только одна задача может записывать на диск свои данные. Остальныеприложения должны ждать своей очереди. Это ожидание подвергает информациюриску не меньшему (если не большему), чем сама отложенная запись, которая к тому же и более эффективна по скорости работы с диском.интервал времени, после которого данные будут фактически записываться, с од1011стороны, желательно выбрать большим, поскольку это позволило бы не чиать (если потребуется) эти данные заново, так как они уже и так фактически наДосл овио — «ленивая» запись.1 58Глава 5.
Управление вводом-выводом в операционных системахходятся в кэше. И после их модификации эти данные опять же помещаются в быстродействующий кэш. С другой стороны, для большей надежности, желательнопоскорее отправить данные во внешнюю память, поскольку она энергонезависима, и в случае какой-нибудь аварии (например, нарушения питания) данные в оперативной памяти пропадут, в то время как на магнитном диске они с большой вероятностью останутся в безопасности.Поскольку количество буферов, составляющих кэш, ограничено, может возникнуть ситуация, когда считываемые или записываемые данные потребуют заменыданных в этих буферах. При этом возможны различные дисциплины выделениябуферов под вновь затребованную операцию кэширования.Кэширование дисковых операций может быть существенно улучшено за счет упреждающего чтения (read ahead), которое основано на чтении с диска гораздо большего количества информации, чем на самом деле запрошено приложением или операционной системой.