Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гл.10 ОС буклет.doc
Скачиваний:
2
Добавлен:
11.11.2018
Размер:
115.71 Кб
Скачать

10.1.4. Загрузка и инициализация ядра

Код ядра хранят в отдельном файле на диске, загрузчик должен его найти. Есть разные подходы к реализации загрузки ядра: оно может загрузиться

в память полностью или частями (при этом одни части могут загружать другие за потребностью), или в частично сжатом состоянии (а после выполнения некоторых предыдущих операций быть распакованным).

В случае одноэтапной -загрузки ядро загружают всегда в реальном режиме.

В случае двухэтапного -режим загрузки зависит от того, переключают ли загрузчика второго этапа в защищенный режим.

После загрузки ядра в память управления передают по адресу специальной процедуры, которая начинает процесс инициализации ядра, и выполняются такие действия, как опрос и инициализация оборудования (обычно будут инициализировать все оборудование — даже то, которое было уже проинициолизировано в ВIOS), инициализация подсистем ядра, загрузки и инициализация необходимых драйверов (в первую очередь диска и видеокарты), монтирования корневой файловой системы. Точная последовательность действий разная для разных ОС.

10.1.5. Загрузка компонентов системы

После того как ядро загрузилось в память, начинается загрузка разных компонентов системы. К ним принадлежат дополнительные драйверы (какие не были нужны во время загрузки), системные фоновые процессы и тому подобное. Большую часть этой работы выполняют в режиме пользователя. В итоге к моменту, когда пользователь может начать работать с системой, в памяти, кроме ядра, присутствует набор процессов, нужных для полноценной работы.

Когда система загрузилась полностью, она обычно отображает приглашение для входа пользователя (если она соединена с терминалом), а когда пользователь успешно войдет в систему, для него будут инициализировать программное обеспечение, которое организует его сессию (например, запускают копию командного интерпретатора).

10.2. Загрузка Linux

10.2.1. Особенности загрузчика Linux

Во время загрузки Linux используют двоетапний загрузчика. Есть несколько программных продуктов, которые реализуют таких загрузчиков, самый известный из них lilo (от linux loader). Он может быть установлен как в МВR (заменив там код, который загружает первый сектор активного раздела), так и в загрузочном секторе какого-то (обычно активного) раздела диска. Второй подход является безопаснее при условиях, когда на компьютере установлено несколько ОС в режиме мультизагрузки, поскольку некоторые ОС могут перезаписывать МВR по своей инициативе.

Первая часть lilo, записанная в загрузочный сектор или МВR, во время своего выполнения готовит память и загружает у нее вторую часть. Но считывает из диска двоичное отображение карты имеющихся на компьютере вариантов загрузки (разные ОС, разные установки Linux и тому подобное) и предлагает пользователю выбрать один из них (с помощью подсказки «LILO boot.:»). Отметим, что исходную версию карты вариантов загрузки создает пользователь (системный администратор) в виде обычного текстового файла /etc/lilo.соnf. После каждого изменения карты необходимо обновлять ее отображение на диске, используемое загрузчиком. Для этого выполняют команду (с правами rооt):

# lilo

После выбора пользователем одного из вариантов загрузки поведение загрузчика зависит от характера файловой системы для раздела. В случае выбора раздела с другой ОС (например, Windows) считывают в память и выполняют загрузочный сектор этого раздела (потому с помощью lilo можно загрузить любую ОС), если же выбран раздел из Linux, в память загружают ядро системы (его адрес на диске содержится в карте вариантов загрузки). После загрузки в памяти появляется сжатое ядро системы и пригодный для выполнения код двух функций загрузки: setup() I startup_32(). Код загрузчика переходит к выполнению функции setup(), начиная инициализацию ядра.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]