- Этапы загрузки операционных систем
- Основные определения и этапы загрузки операционной системы
- Включение компьютера, POST, BootMonitor
- Загрузчик 1-го уровня. Master Boot Record
- Загрузчик 2-го уровня. Partition Boot Sector
- Начальный этап загрузки операционной системы. Менеджер загрузки ОС
- Загрузка ядра операционной системы
- Особенности загрузки операционных систем Windows Vista / 7 / 8
- Структура ОС Windows XP
Этапы загрузки операционных систем
Давным-давно, когда я был маленьким работал в институтской лаборатории на большом компьютере СМ-3 (что-то вроде знаменитой PDP-11), bootstrapping (загрузка) ЭВМ выглядела так. В фотосчитыватель заправлялась коротенькая бумажная перфолента с пробитой на ней программой начальной загрузки, запускался процесс считывания, а дальше … как повезет.
Дело в том, что бумажная ленточка постепенно изнашивалась, начинала плохо читаться, и ЭВМ могла с первого раза «не завестись». В этом случае процесс нужно было повторять, порой несколько раз, до победного конца. Когда ленточка окончательно выходила из строя и машина никак не хотела «оживать», приходилось временно вводить программу начальной загрузки вручную при помощи расположенных на передней панели переключателей. Тут, главное, было не торопиться и не делать ошибок.
В современных компьютерах процесс загрузки большей частью автоматизирован, однако это не означает, что он не заслуживает того, чтобы с ним познакомиться.
Основные определения и этапы загрузки операционной системы
Включение компьютера, POST, BootMonitor
Начальный этап загрузки операционной системы после включения компьютера начинается в BIOS (Basic Input/Output System — базовая система ввода-вывода). В настройках BIOS мы указываем загрузочное устройство, или ряд загрузочных устройств в порядке их приоритета. Возможны различные варианты загрузки и их комбинации: с жесткого диска, CD/DVD – диска, USB-flash и другие.
Сразу после прохождения POST (Power-On Self-Test — самотестирование после включения) BIOS компьютера начнет поочередно перебирать указанные загрузочные устройства до тех пор, пока на одном из них не найдет подходящую специальную запись, в которой содержится информация о дальнейших действиях.
Загрузчик 1-го уровня. Master Boot Record
Master Boot Record — главная загрузочная запись, расположена в первых физических секторах загрузочных устройств хранения. Она содержит таблицу разделов (Partition Table) и исполняемый код.
Главной задачей программы, записанной в MBR, является поиск активного системного раздела диска и передача управления его загрузочному сектору. Таким образом, эту стадию можно назвать подготовительной, в силу того, что непосредственно загрузки самой ОС еще не происходит.
Системным принято называть раздел диска (устройства хранения) на котором расположены файлы операционной системы, отвечающие за процесс загрузки ОС (сама операционная система может размещаться в другом разделе). В принципе, системных разделов может быть несколько, поэтому один из них отмечается как активный. Именно его ищет программа, загруженная с MBR.
Загрузчик 2-го уровня. Partition Boot Sector
Следующим этапом загрузки компьютера является передача управления исполняемому коду, записанному в PBS (Partition Boot Sector — загрузочный сектор активного раздела). PBS расположен в первом секторе (секторах) соответствующего раздела диска. В коде PBS прописано имя файла загрузчика операционной системы, которому и передается управление на этом этапе.
Начальный этап загрузки операционной системы. Менеджер загрузки ОС
Первоначально в Linux загрузчиком являлся LILO (Linux Loader). В силу имевшихся в нем недостатков, главным из которых была неспособность понимать используемые в Linux файловые системы, позднее начал использоваться загрузчик GRUB (GRand Unified Bootloader) в котором недостатки LILO были исправлены.
Если речь идет о версиях Windows до Vista, например, Windows XP, то будет загружен Ntldr. Он, в свою очередь, считывает информацию из текстового файла Boot.ini, в котором записана информация об установленных операционных системах.
Загрузка ядра операционной системы
Завершающим этапом загрузки операционной системы является загрузка ядра ОС и передача ему управления.
Несколько лет назад в моей практике был такой забавный случай.
Меня попросили помочь одному человеку купить и привести в порядок компьютер для дома. Товарищ этот на тот момент времени только-только вышел на пенсию, а до этого работал в должности начальника и компьютер видел, по большей части, издалека, на столе у своей секретарши. После выхода на пенсию у него появилось время и желание компьютер освоить. Ну что, по-моему, замечательно. Компьютер мы ему подобрали недорогой, но добротный и с хорошим, по тем временам, монитором. Я поставил и настроил кое-какие программы, показал как ими пользоваться. Господин обзавелся книжкой из серии «Что-то там для чайников» и мы расстались абсолютно довольные друг другом.
Примерно через неделю мой подопечный позвонил мне по телефону и чуть не плача сообщил, что все пропало и компьютер больше не работает. Благо, запираться он не стал и честно рассказал, как было дело. А дело было так. Товарищ полез исследовать содержимое своего компьютера и нашел в корне диска С:\ несколько подозрительных и «ненужных», на его взгляд, файлов. Он решил освободить место и файлики эти попросту удалил. Думаю, что все уже догадались, что это были boot.ini, ntldr, ntdetect и др. Поправить ситуацию сложности не представляло, разве что пришлось ехать к нему еще раз.
К слову сказать, для того, чтобы получить проблемы с загрузкой Windows XP, можно было и ничего не стирать, а слегка «подправить», например, boot.ini.
Видимо Microsoft как то узнала об этом случае и в следующей версии своей ОС решила припрятать файлы загрузчика получше.
Особенности загрузки операционных систем Windows Vista / 7 / 8
В Windows Vista или Windows 7 / 8 диспетчер загрузки называется Bootmgr. Он читает список установленных операционных систем не из простого текстового файла, коим является boot.ini, а из системного хранилища BCD (Boot Configuration Data), доступ к которому осуществляется посредством специальной утилиты bcdedit.exe .
Но это еще не все. Откроем “Управление компьютером” –> “Управление дисками” >
Процесс стандартной инсталляции операционной системы Windows Vista / 7 / 8 создает в начале диска дополнительный раздел «Зарезервировано системой». Ему не присваивается буква диска, благодаря чему, если не сделать дополнительных шагов, и сам раздел и его содержимое будут скрыты от пользователя. Этот основной раздел имеет статус «Системный» и «Активный» и, следовательно, удалить его тоже нельзя.
В Windows 7 размер такого раздела составляет 100 МБ, из которых занято около 30 МБ, в Windows 8 – уже 350 МБ, причем занято из них 105 МБ. Такая разница объясняется тем, что в Windows 8 на этот раздел перенесена папка “Recovery”.
Посмотрим содержимое раздела «Зарезервировано системой». Для этого назначим ему букву диска, например, «W» в “Управление дисками”. Дополнительно откроем «Панель управления» –> «Параметры папок» и на вкладке «Вид» снимем галку с «Скрывать защищенные системные файлы» и поставим отметку на «Показывать скрытые файлы, папки и диски».
Если в системе установлен файловый менеджер FAR Manager, то для просмотра можно воспользоваться им и не заниматься настройкой видимости скрытых файлов.
Так выглядит содержимое раздела «Зарезервировано системой» в Windows 8 >
Как и ожидалось, в корне раздела мы видим загрузчик Bootmgr.
А так выглядит часть содержимого папки «Boot» >
В папке мы находим базу хранилища данных конфигурации загрузки BCD и сопутствующие ей папки с языковыми файлами и файлами шрифтов.
Для полноты картины осталось сказать о том, какой раздел называется загрузочным. Ответ уже показан на картинке с томами Windows 7. Очевидно, что это раздел, на котором находятся все основные файлы операционной системы.
Ну что же, запомнить названия разделов диска очень легко по принципу «всё наоборот» — на системном нет системы (операционной), но расположен загрузчик третьего уровня, на загрузочном как раз отсутствует загрузчик, но находится сама система . Естественно, эта «запоминалка» работает только тогда, когда есть несколько разделов. Если раздел один, то он может быть сразу системным, активным и загрузочным.
Главной задачей загрузчика 3-го уровня, в роли которого выступает, в зависимости от типа ОС, Bootmgr, Ntldr или GRUB, является чтение с загрузочного диска и загрузка ядра операционной системы. Кроме того, в случае множественной загрузки, когда на компьютере установлено несколько операционных систем, загрузчик 3-го уровня позволяет выбирать нужную при каждом запуске компьютера.
Классической ошибкой, которой Microsoft посвятила отдельную статью, является установка Windows XP после Windows Vista / 7 /8. Установщик Windows XP помечает свой раздел как активный, после чего, во время загрузки, MBR передает управление PBS этого раздела а он, в свою очередь, — Ntldr. Загрузчик Windows XP ничего не знает о более поздних версиях операционных систем Windows и их загрузка становится невозможной. Лечится достаточно легко, но неискушенного пользователя такая ситуация может поставить в тупик.
Добавить к этому практически нечего и можно переходить непосредственно к редактированию загрузочного меню. Начнем с загрузочного меню Windows.
Структура ОС Windows XP
Windows XP имеет модульную структуру (рис. 2.20), в которой код операционной системы и драйверы выполняются в привилегированном режиме процессора (режиме ядра), обеспечивающем полный доступ ко всей аппаратной части компьютера, а пользовательские приложения выполняются в непривилегированном режиме процессора – пользовательском режиме без прямого доступа к оборудованию компьютера. В режиме ядра работают следующие компоненты.
1. Уровень абстрагирования от оборудования (Hardware Abstraction Layer, HAL). Его задачей является отделение операционной системы от особенностей конкретных реализаций в аппаратном обеспечении компьютера, т. е. от различий в материнских платах, в модификациях процессоров, в наборах микросхем и др. Благодаря этому уровню управление подсистемами прерываний, прямого доступа к памяти, системными шинами и таймерами для ядра операционной системы является одинаковым. Уровень HAL реализован в системном файле Hal.dll.
|
Рис. 2.20. Упрощенная структура Windows XP
2. Ядро операционной системы. Ядро содержит наиболее часто вызываемые низкоуровневые функции операционной системы: планирование и распределение ресурсов между процессами, их переключение и синхронизацию. В обязанности ядра входит также управление прерываниями и обработка ошибочных ситуаций при функционировании операционной системы. Код ядра Windows XP не разделяется на потоки, а находится только в оперативной памяти и не может быть выгружен на диск. Код ядра Windows XP находится в системном файле Ntoskrnl. exe.
3. Драйверы устройств. Драйверы представляют собой подпрограммы, транслирующие вызовы, поступившие от пользовательских программ в запросы обработки данных для конкретных устройств. Значительное число драйверов входит в состав Windows XP (они располагаются в подкаталоге Isystem32l drivers системного каталога и имеют тип файла *.sys, например, драйвер дисковой подсистемы находится в файле disk.sys), а для нестандартных периферийных устройств драйверы находятся в комплектах поставки.
4. Исполняющая подсистема (NT Executive). Модуль NT Executive состоит из микроядра и подсистем диспетчеризации управления программами с доступом к виртуальной памяти, окнам и графической подсистеме. Виртуальная память предоставляет пользовательским программам виртуальные адреса адресного пространства процессов и соответствующие физические страницы оперативной памяти компьютера. Графическая подсистема предназначена для создания оконного интерфейса, рисования элементов управления, расположенных в окнах. К исполняющей подсистеме относятся системные файлы Ntkrnlpa.exe, Kernel32.dll, Advapi32.dll, User32.dll, Gdi32.dll.
Операционная система Windows XP в значительной мере использует возможности процессоров, совместимых с семейством Intel x86. В их аппаратной архитектуре предусматривается четыре уровня привилегий выполнения кода программ от 0-го наивысшего привилегированного до 4-го пользовательского режима с ограниченным набором команд процессора. Программы режима ядра операционной системы Windows XP функционируют в нулевом, защищенном и привилегированном режиме, а остальные пользовательские программы работают в менее привилегированных режимах, находясь под контролем программ режима ядра.
Недоступные в пользовательском режиме операции и приложения обращаются к системным вызовам ядра операционной системыWin32 API. В состав API входит более 250 функций, обращение к которым осуществляется при помощи системных вызовов, основанных на подпрограммах ядра операционной системы. Все вызовы Win32 API обслуживаются как системными службами NT, так и модулем NT Executive – исполняющей системы Windows XP. Модуль NT Executive представляет собой несколько программных потоков, которые выполняются в режиме ядра. Код практически всех подсистем этого модуля находится в файле ntoskrnl.exe (кроме подсистемы Win32, код которой расположен в файле win32k.sys) и уровне абстрагирования от оборудования HAL, который содержится в файле hal.dll. В модулеNT Executive сосредоточены все самые важные части операционной системы.
Микроядро отвечает за выделение памяти для приложений и распределение процессорного времени, т. е. за реализацию многозадачности. Для этого в состав микроядра входит планировщик потоков (threads scheduler), который назначает каждому из потоков один из 32 уровней приоритета. Уровень 0 зарезервирован для системы. Уровни от 1-го до 15-го назначаются исполняемым программам, а уровни от 16-го до 31-го могут назначаться только администраторами. Планировщик делит все процессорное время на кванты фиксированного размера. При этом каждый программный поток выполняется только в течение отведенного ему времени, и если по окончании кванта он не освобождает процессор, планировщик в принудительном порядке приостанавливает этот поток и меняет программное окружение процесса, настраивая его на выполнение другого потока, обладающего тем же приоритетом. Микроядро также осуществляет всю работу, связанную с обработкой программных и аппаратных прерываний.
5. Диспетчеризация управления программами. Модуль состоит из следующего набора системных программ:
Диспетчер ввода-вывода – интегрирует добавляемые в систему драйверы устройств в операционную систему Windows XP;
Диспетчер объектов – служит для управления всеми разделяемыми ресурсами компьютера. В момент обращения приложения к какому-либо ресурсу диспетчер объектов сопоставляет с этим ресурсом объект (например, окно) и отдает приложению дескриптор [1] (№ окна) этого объекта. Используя дескриптор, приложение
взаимодействует с объектом, совершая в его отношении различные операции. Монитор системы безопасности следит при этом за тем, чтобы с объектом выполнялись только разрешенные действия;
Диспетчер процессов – предоставляет интерфейс, при помощи которого другие компоненты Windows NT Executive, а также приложения пользовательского режима могут манипулировать процессами и потоками. Во время работы диспетчер процессов сопоставляет с каждым процессом и потоком идентификатор процесса (PID – Process Identifier) и идентификатор потока (TID – Thret Identifier) соответственно, а также таблицу адресов и таблицу дескрипторов;
Диспетчер виртуальной памяти – служит для управления организации подсистемы памяти, позволяет создавать таблицы адресов для процессов и следит за корректностью использования адресного пространства приложениями. Кроме того, обеспечивает возможность загрузки в оперативную память исполняемых файлов и файлов динамических библиотек. Диспетчер виртуальной памяти представляет физическую память для пользовательских приложений – каждому процессу выделяются 4 Гб виртуального адресного пространства, из которых младшие 2 Гб используются процессом, а старшие 2 Гб (общие для всех процессов) отводятся на нужды системы. Каждый процесс работает в своем изолированном адресном пространстве и «не знает» о других процессах. Процессы обмениваются данными через разделяемую память, которая может быть спроецирована на виртуальное адресное пространство нескольких процессов. Главная задача диспетчера виртуальной памяти – организация логической памяти, размер которой больше размера физической, установленной на компьютере. Это достигается благодаря тому, что страницы памяти, к которым долго не было обращений, и которые не имеют атрибута неперемещаемых, сохраняются диспетчером в файле pagefile.sys на жестком диске и удаляются из оперативной памяти, освобождая ее для других приложений. В момент, когда происходит обращение к данным, находящимся в перемещенной на винчестер странице, диспетчер виртуальной памяти копирует страницу обратно в оперативную память, затем обеспечивает доступ к ней. Этот механизм обеспечивает выделение дополнительной памяти программам, которые нуждаются в ней, и при этом следит за тем, чтобы все работающие в системе программы обладали достаточным объемом физической памяти для того, чтобы продолжать функционирование;
Диспетчер кэша – используется для кэшированного чтения и записи и позволяет существенно ускорить работу жестких дисков и других устройств. При этом наиболее востребованные файлы дублируются диспетчером кэша в оперативной памяти компьютера, и обращение к ним обслуживается с использованием этой копии, а не оригинала, расположенного на сравнительно медленном долговременном носителе. Кэш в Windows XP является единым для всех логических дисков, вне зависимости от используемой файловой системы. Кроме того, он является динамическим, а это значит, что диспетчер управляет его размерами в зависимости от доступного объема свободной физической памяти в каждый конкретный момент;
Диспетчеры окон и графики – выполняют все функции, связанные с пересылкой системных сообщений и отображением информации на экране.
Процесс функционирования Windows XP условно подразделяется на три фазы: процесс начальной нагрузки, штатный режим работы и завершение работы. Для загрузки Windows XP используется следующий минимальный набор файлов:
– файлы, располагающиеся в корневом каталоге загрузочного диска: Ntldr, Boot.ini, Bootsect.dos (файл необходим только при использовании мультизагрузки), Ntdetect.com;
– файлы, располагающиеся в системном подкаталоге /system32: Ntoskrnl.exe, Hal.dll, разделы реестра SYSTEM;
– файлы, располагающиеся в системном подкаталоге /system32/drivers: (необходимые драйверы устройств).
Процесс загрузки компьютера начинается с процедуры начального тестирования оборудования (POST – Power-On Self Test). Код, выполняющий POST, зашит в базовой системе ввода-вывода (BIOS) каждого компьютера, при включении питания ему передается управление. Если в процессе тестирования обнаруживаются какие-либо ошибки, то BIOS генерирует коды ошибок (POSTcodes), которые отличаются для BIOS разных производителей, и звуковые коды. Если процедура POST завершается успешно, то BIOS передает управление главной загрузочной записи (MBR – Master Boot Record) и первая «аппаратная» стадия загрузки компьютера, когда процесс зависит только от аппаратуры компьютера, завершается.
Далее загрузочная запись, оперируя данными о разбиении жесткого диска на логические тома, передает управление исполняемому коду, загрузчику Ntldr, расположенному в загрузочном секторе.Загрузчик переходит в защищенный режим и производит необходимые для успешного функционирования манипуляции с памятью, кроме этого, Ntldr имеет модули, позволяющие работать с файловой системой и некоторыми другими базовыми ресурсами системы. Все другие действия выполняются с помощью вызова прерываний BIOS.
Если в файле boot.ini зарегистрировано более одной операционной системы, то после первичной инициализации загрузчик предоставляет пользователю возможность выбора путем вывода Ntldr приглашения о выборе операционной системы. Если выбрана операционная система Windows XP, загрузчик запускает файл Ntdetect. сот. Этот компонент считывает из CMOS-памяти системную дату и время, после чего производит поиск и распознавание аппаратных средств, подключенных в данный момент к компьютеру. Завершив работу,Ntdetect возвращает управление и собранную им информацию обратно в Ntldr. Далее загружается и инициализируется ядро операционной системы Ntoskrnl.exe и уровень абстрагирования от оборудования Hal.dll. При инициализации ядро производит ряд действий в определенной последовательности:
– инициализация диспетчера памяти;
– инициализация диспетчера объектов;
– установка системы безопасности;
– настройка драйвера файловой системы;
– загрузка и инициализация диспетчера ввода-вывода;
– загрузка системных сервисов, которые реализуют взаимодействие с пользователем.
В состав системных сервисов входят следующие модули:
– Smss.exe (диспетчер сеансов) – модуль управляет другими сервисами и службами Windows; запускает: Win32 (Csrss) и некоторые системные утилиты, выполняемые на этапе загрузки; реализует графический пользовательский интерфейс и запуск процессов Csrss.exe иWinLogon.exe;
– Csrss.exe – модуль предназначен для организации взаимодействия между компьютером и пользователем;
– Lsass.exe – служба, запускаемая WinLogon.exe и отвечающая за безопасность системы (предоставляет возможность пользователю зарегистрироваться в системе).
После загрузки операционной системы пользователь должен пройти процедуру аутентификации – ввести собственное регистрационное имя (логин) и пароль. Процедура подключения к системе позволяет определить, обладает ли пользователь правом входа и работы с системой. Эту процедуру выполняет служба WinLogon. При этом в системе происходят следующие события:
– процесс WinLogon отображает на экране фон рабочего стола и приглашение к вводу пользователем логина и пароля. Введенные данные передаются подсистеме безопасности;
– подсистема безопасности обращается к базе данных SAM (Security Accounts Manager) и проверяет, обладает ли пользователь полномочиями работы с системой.
Если пользователь является авторизированным пользователем системы, то подсистема безопасности формирует для негоидентификатор доступа, который вместе с управлением передает обратно процессу WinLogon. Процесс WinLogon посредством обращения к подсистеме Win32 создает новый процесс для пользователя и прикрепляет ему идентификатор доступа. Каждый процесс, в дальнейшем создаваемый пользователем, отмечается принадлежащим ему идентификатором доступа, поэтому доступ пользователя к ресурсам системы контролируется и отслеживается. Благодаря обязательной процедуре подключения к системе упрощается реализация механизмов: аудит системы и квоты на использование ресурсов. Пользовательский идентификатор доступа содержит идентификатор пользователя, а также идентификаторы всех групп, к которым принадлежит данный пользователь.
Если операционная система не загружается корректно, то при нажатии в процессе загрузки Windows XP клавиши F8 происходит переход в расширенное меню запуска, содержащее пункты:
– Безопасный режим – загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств;
– Безопасный режим с загрузкой сетевых драйверов –загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств с поддержкой подключения к сети;
– Безопасный режим с поддержкой командной строки – загрузка Windows XP с минимальным требуемым количеством системных файлов и драйверов устройств с загрузкой режима командной строки;
– Включить протоколирование загрузки – режим позволяет записать этапы загрузки Windows XP в файл Ntbtlog. txt;
– Включить режим VGA – режим, загружает драйвер стандартного монитора VGA с разрешением 640 на 480 точек на дюйм и 16 цветами;
– Загрузка последней удачной конфигурации – режим, восстанавливает последнюю неиспорченную копию реестра Windows XP.
- Установить Windows XP на виртуальную машину с образа, полученного от преподавателя. (название виртуальной машины должна иметь формат Windows XP Иванов Иван)
- Изучить теорию по структуре ОС.
Контрольные вопросы к защите:
1. Каковы минимальные требования к аппаратной платформе, которые рекомендует Microsoft для установки Windows XP?
2. В чем преимущества файловой системы NTFS?
3. На какие фазы условно можно разделить работу ОС Windows?
4. Какие цели достигаются на уровне абстрагирования?
5. Что такое ядро системы?
6. Что такое драйвера устройств?
7. Что такое исполняющая система?
8. Что такое диспетчер ввода-вывода?
9. Что такое диспетчер объектов?
10. Что такое диспетчер процессов?
11. Что такое диспетчер кэша?
12. Опишите ряд действий выполняемых ядром при инициализации?