Вторник, 7 Июля 2009 года, 8:39
Просмотров: 5804 шт.

Hi-Tech → Обзор загрузки Windows, Linux, Mac OS X, QNX


Обзор загрузки Windows, Linux, Mac OS X, QNX

Фазы загрузки х86 систем

После того как компьютер включен, процессор начинает выполнять инструкции BIOS. BIOS стартует компьютер даже если операционная система на установлена. Первый набор инструкций - power-on self test (POST). POST выполняет следующие функции:

...
*****


1) Выполняет начальную проверку оборудования, например определяет количество установленой RAM
2) Проверяет наличие устройств для начала загрузки ОС, например жесткого диска
3) Получает установки системной конфигурации из CMOS

После того как POST закончен, дополнительные адаптеры (видео карта, контроллеры жесткого диска) выполняют свой тест внутренней диагностики.

Затем BIOS загружает код загрузчика (который должен быть написан на ассемблере), передавая ему управление. Код загрузчика находится в master boot record (MBR), если конечно загрузчик существует, если нет, то BIOS выдаст Operating system not installed, т.е. Операционная система не установлена. MBR - это самый первый сектор жесткого диска. Код загрузчика содержит информацию от куда грузить ОС. Загрузчики выполняют и другие функции в различных операционных системах, что они делают и что происходит дальше будет описано ниже.




Windows

1) Ntldr (сокращение от NT loader) загружает загрузочные файлы с загрузочного раздела и переводит процессор в 32 битный режим плоской памяти (32-bit flat memory) и загружает файловую систему

2) Ntldr стартует Ntdetect.com, последний просто собирает информацию об установленном оборудовании и передает ее Ntldr, который ее сохраняет, чтобы ядро могло ее позже прочитать

3) Ntldr стартует ядро (Ntoskrnl.exe) и говорит ему что установлено, т.е. инфо об установленном оборудовании от Ntdetect.com. Ntldr также загружает hardware abstraction layer (HAL) в память. Ядро и HAL инициализируют Windows executive, который просто напросто читает конфигурацию оборудования из регистра (ключ HKEY_LOCAL_MACHINESYSTEM) и запускает сервисы и драйверы. Надо отметить, что драйверы это тоже сервисы

4) Ядро запускает Session Manager (Smss.exe), который:
а. Переключает Windows из текстового режима в графический
б. Запускает менеджер входа в систему Logon Manager (systemrootSystem32Winlogon.exe)
в. Создает дополнительные файлы виртуальной памяти
г. И если установлены новые программы и/или драйверы, то спросит перезагрузить систему

5) менеджер входа в систему Logon Manager (Winlogon.exe) запускает подсистему сервисов (Services.exe) и локальную систему безопастности (Local Security Authority, Lsass.exe) и на последок делает возможным комбинацию клавиш CTRL+ALT+DEL, чтобы показать логин скрин.

Все загрузка окончена!




LInux

Для LInux существуют 2 популярных загрузчика - LILO (LInux LOader) и GRUB. В этой статье будет описан GRUB, так как он более навароченный :) Дистрибьютив линукс был выбран Fedora (ядро версии 2.6.8).

Так вот, GRUB ищет закрузочный раздел и загружает загрузчик второй стадии (second stage boot loader), который читает конфигурацию в /boot/grub/grub.conf, этот файл содержит список всех доступных операционных систем и их параметры загрузки. Точнее сказать, этот файл просто содержит где и какие ядра операционок грузить, заметьте, не сами ОСи а их ядра. Когда все это закончено этот загрузчик второй стадии выводит Fedora сплэш на экран и список всех операционных систем на выбор для загрузки. Когда выбрана Федора линукс из этого списка начинае грузится линукс, :) а делает она это с загрузки ядра. Но все по порядку.

1) Линукс запускает программу Init (/sbin/init) которая выполнят несколько проверок системы (целостность файловой системы например) и запускает программы которые необходимы для работы ОС.

2) Затем смотрит файл /etc/inittab в котором содержится список режимов в котором этот самый линукс можно грузить и какой режим собственно выбран.

Список режимов:
0 - halt
1 - Single user mode
2 - Multiuser, without NFS (The same as 3, if you do not have networking)
3 - Full multiuser mode
4 - unused
5 - X11
6 - reboot

Таким образом если выбрат 1 - Single user mode, то система будет работать в режиме одного пользователя, если выбрат 5 - X11, то GUI будет загружен сразу, и если выбран 6, тогда система перезагрузится :) Интересный пункт надо отметить :)





Mac OS X

В этой ОС есть свой загрузчик - BootX (/System/Library/CoreServices/BootX). После того как он загружен он делает следующее:
1) Загружает ядро
2) Пытается загрузить предыдущий кэшированный (сохраненный) список драйверов если он существует
3) Потом как в линукс, запускает Init, теперь Open Firmware (типа БИОСа) больше не доступен
4) инициализирует различные Mach/BSD структуры данных
5) инициализирует ввод/вывод (I/O Kit)

Теперь загрузчик отдыхает, ядро продолжает загрузку

1) Ядро стартует mach init ( /sbin/mach_init), это просто такой демон (сервис) который обеспечивает взаимоотношение между именами сервисов и мак портами, которые обеспечивают доступ к этим сервисам

2) И опять как в линукс, mach init определяет в каком режиме грузить систему (Single/Multi user mode, загружать ли GUI, и т.д.) И проверяет целостность файловой системы

3) Затем монтирует файловую систему

4) Запускает поддержку виртуальной памяти

5) SystemStarter Загружает файлы из автозагрузки, например CoreGraphics который в свою очередь загружает ATSServer и WindowServer

Все, логин скрин (или консоль) выведены на экран






FreeBSD

Загрузка FreeBSD тоже очень похожа на мак ОС и линукс, понятно почему, все они UNIX based.

FreeBSD имеет копию MBR в /boot/boot0, boot0 это одна из трех частей загрузчика так как MBR может быть только 512 байтов макс. boot0 загружает boot1 который только знает где находится boot2. Вот тут все и начинается, boot2 уже сложнее и больше boot0 и boot1. boot2 позволяет выбрать собственно сам загрузчик (loader) или любой другой загрузчик, например GRUB. И наконец позволяет выбрать ОС для загрузки. Так вот после того как ОС была выбрана loader (так называется загрузчик в FreeBSD, по англ. тока) инициализирует оборудование, определяет в каком режиме грузить систему и грузит ядро. И все.




QNX

Процесс зпгрузки, коротко в трех шагах:

1) Загрузчик, он же The Initial Program Loader (IPL), находит образ ОС (OS image) , заметьте это не ядро! и отдает управление в руки программы загрузки, которая находится в этом образе.

2) Затем программа загрузки конфигурирует ядро и отдает управление Neutrino microkernel, тобиж ядру, и менеджеру процессов (procnto).

3) менеджер процессов (procnto) затем загружает драйверы и программы

Теперерь поподробней, роль загрузчика, он же The Initial Program Loader (IPL), такова:

1. Начать загрузку после reset vector'а
2. Конфигурировать контроллер памяти
3. Конфигурировать clocks
4. Настроить стек (stack) и таким образом разрешить проверку и установку ОС

роль программы загрузки:

1. Копировать и разархивировать образ ОС (OS image), если необходимо
2. Конфигурировать железо
3. Определить сис. конфигурацию
4. Запустить ядро

Это конечто коротко, на самом сайте QNX все в больших деталях и еще приписка: "если все что написано вверху звучит как много работы, то так оно и есть!!" :)



---------------

Надо отметить, что кроме Windows загрузчики других ОСей, таких как GRUB или LILO, например могут загружать не только свои ядра, так например GRUB может грузить ядро FreeBSD, Linux и Mac os x. Были также планы по описанию загрузки BeOS, но документация для нее пока не найдена.

---------------
источники:

Linux - http://www.linuxhomenetworking.com/linux-hn/runlevels.htm
Mac OS X - http://www.kernelthread.com/mac/osx/arch_startup.html
FreeBSD - http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/boot-blocks.html
QNX - http://www.qnx.com/developers/docs/momentics621_docs/neutrino/building/overview.html
Windows - microsoft.com
QNX 5, 6 screenshots - www.osnews.com/img/534/qnx5.jpg
Mac OS X screenshots - http://www.condreyconsulting.com/production/PRODUCTS/Kanaka/Graphics/login.gif

Эта запись отмечена тегами: загрузкаwindowslinuxmac os xqnx

nomeNNescio
Блог им. nomeNNescio
Рейтинг записи
  0  

←Туда  Сюда→

Комментарии:

  • ShaDeRzzShaDeRzz  7 Июля#  
    А я думал, винда грузится простым нажатием кнопки "ВКЫЛ" :)

Авторизуйтесь или зарегистрируйтесь, чтобы иметь возможность комментировать записи!


Категории

Товары и Услуги  Авто  Отдых  Здоровье  Hi-Tech  Стройка  Fashion  Разное  Домашний очаг  Бизнес  Общество  Кухня  Образование  Флора и фауна  Музыка и кино  Спорт  Туризм  Хобби  География  Позитив  Наука и Техника  Карьера  Теория жизни  История  Знаменитости  Творчество  Отношения  Фольклор  Религия  Право  Астрономия  Мистика 


Облако тегов



TOP Блоггеры

profitinvestingprofitinvesting
Записей: 3786

webweb
Записей: 741

begtopmerbegtopmer
Записей: 687

sorokasoroka
Записей: 611

ShaDeRzzShaDeRzz
Записей: 242

little_fairylittle_fairy
Записей: 164

nomeNNescionomeNNescio
Записей: 153

savchenkosavchenko
Записей: 98

BeautyPROFBeautyPROF
Записей: 94

Jetos2Jetos2
Записей: 78

DiezelSun2DiezelSun2
Записей: 73

KisaMurMurKisaMurMur
Записей: 70

Весь список

Последние комменты

  • pepkoakrapovik написал(а):
    Реванш Усика і Ф’юрі — це подія, яку я точно не пропущу. У першому бою я підтримував Ф’юрі, але післ...
  • comp-service написал(а):
    хороший сервис, профессиональные мастера, все делают быстро и недорого
  • Serrt написал(а):
    Я бы керамику выбрал. Потому что с пленкой очень много заморочек. Да и желтеет она со временем. А с ...
  • Volk написал(а):
    Вот именно для этого керамика и нужна. Она отлично сохраняет блеск и цвет автомобиля. И от сколов и...
  • Argon написал(а):
    Я не сделал и уже пожалел. Машине еще двух лет нет, а она совсем вид потеряла. Блеск у кузова пропал...

Котлы тления Bullerjan - тепло в каждый дом