- •Тема 1: Основные компоненты ос
- •1.1 Роль и задачи операционных систем
- •1.2 История развития операционных систем
- •1.3. Классификация современных операционных систем
- •1.4 Основные функции типовых ос
- •1.4.1. Управление процессами и потоками
- •1.4.2. Управление памятью
- •1.4.3. Управление вводом-выводом
- •1.4.4. Управление файлами и файловые системы
- •1.4.5. Сетевая поддержка
- •1.4.6. Безопасность данных
- •1.4.7. Интерфейс пользователя
- •1.4.8 Поддержка 64-битовых процессоров
- •1.5 Аппаратная инициализация компьютера
- •1.6.1 Два этапа загрузки
- •1.6.2 Загрузка и инициализация ядра
- •1.6.3 Загрузка компонентов системы
- •1.7 Загрузка Windows хр
- •1.8 Базовые понятия архитектуры операционных систем
- •1.8.1 Ядро системы и вспомогательные модули ос.
- •1.8.2 Привилегированный режим и режим пользователя
- •1.9 Реализация архитектуры операционных систем
- •1.9.1. Монолитные системы
- •1.9.2 Системы с микроядром
- •1.10 Операционная система и ее окружение
- •1.10.1 Взаимодействие ос и аппаратного обеспечения
- •1.10.2 Взаимодействие ос и выполняемой программы
- •Тема 2: Управление процессами и потоками
- •2.1. Базовые понятия процессов и потоков
- •2.1.1. Процессы и потоки в современных ос
- •2.1.2. Модели процессов и потоков
- •2.1.3. Составные элементы процессов и потоков
- •2.2. Многопотоковость и ее реализация
- •2.2.1. Понятие параллелизма
- •2.2.2. Виды параллелизма
- •2.2.3. Преимущества и недостатки многопотоковости
- •2.2.4 Состояния процессов и потоков
- •Тема 3 Прерывания. Методы и реализация
- •3.1 Прерывания. Назначение и типы.
- •3.2 Механизм прерываний
- •3.3 Обработка прерываний
1.6.1 Два этапа загрузки
Использование загрузочного сектора для непосредственной загрузки ядра ОС имеет свои особенности:
код загрузчика вынужденно является очень простым, потому в нем не возможно выполнять более сложные действия (например, руководить загрузкой нескольких ОС), большинство других недостатков являются последствиями этого;
не возможно передавать параметры в загрузчика;
процесс ограничен описанной схемой переключения из МВR на загрузочный сектор, нет возможности руководить этим процессом;
нет возможности загружать ядро из другого раздела диска или из подкаталога;
ОС всегда будет запущена в реальном режиме процессора.
Для того, чтобы решить эти проблемы, код загрузчика ОС должен быть усложнен. Естественно, что усложненный код не поместится в один сектор, потому предложен подход, который получил название схемы двухэтапной загрузки.
В этом случае загрузчика разбивают на две части: загрузчик первого и второго этапов.
Загрузчик первого этапа - хранят в загрузочном секторе диска, и основным его заданием является поиск на диске и загрузка в память загрузчика второго этапа.
Загрузчик второго этапа — это полномасштабное приложение (программа), которая получает контроль над компьютером после выполнения начальной загрузки. В сущности, такой загрузчик является мини-ОС специализированного назначения.
Рассмотрим некоторые возможности двухэтапного загрузчика.
В нем можно руководить загрузкам нескольких операционных систем. Особенно удобно это делать в загрузчиках, которые принимают управление от МВR: при этом загрузчик берет на себя поиск активного раздела и загрузку системы из него. Конфигурацию такого загрузчика можно динамически изменять во время изменения разделов диска. Загрузчик может содержать код доступа к разным файловым системам, код загрузки разных ядер и тому подобное.
Может предоставлять интерфейс пользователя, который обычно сводится к отображению меню выбора загружаемой операционной системы. Возможна также передача введенных пользователем параметров в ядро перед его загрузкой.
Его конфигурация может быть задана пользователем из загруженной ОС. Для этого, например, можно задать текстовый конфигурационный файл, сохранить его на диске и запустить специальную утилиту, которая сделает синтаксический разбор файла, превратит его во внутреннее отображение и сохранит на диске в фиксированном месте, известному загрузчику.
Не ограниченный одним разделом и одним диском загрузчик может работать со всеми дисками компьютера, загружать ядра, которые находятся в разных местах на диске.
1.6.2 Загрузка и инициализация ядра
Код ядра хранят в отдельном файле на диске, загрузчик должен его найти. Есть разные подходы к реализации загрузки ядра: оно может загрузиться в память полностью или частями (при этом одни части могут загружать другие за потребностью), или в частично сжатом состоянии (а после выполнения некоторых предыдущих операций быть распакованным).
В случае одноэтапной -загрузки ядро загружают всегда в реальном режиме.
В случае двухэтапного -режим загрузки зависит от того, переключают ли загрузчика второго этапа в защищенный режим.
После загрузки ядра в память управления передают по адресу специальной процедуры, которая начинает процесс инициализации ядра, и выполняются такие действия, как опрос и инициализация оборудования (обычно будут инициализировать все оборудование — даже то, которое было уже проинициолизировано в ВIOS), инициализация подсистем ядра, загрузки и инициализация необходимых драйверов (в первую очередь диска и видеокарты), монтирования корневой файловой системы. Точная последовательность действий разная для разных ОС.