Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Напиши свою операционную систему!


Информационный Канал Subscribe.Ru


Здравствуйте, уважаемые подписчики!

Это уже второй выпуск нашей рассылки. В нём я хочу рассказать о том, как же всё-таки
ОС загружается.

1) C чего начинается загрузка.

Загрузка компьютера начинается со старта BIOS (Basic Input/Output System
(Базовая система ввода/вывода)).
BIOS проводит поиск носителя, с которого можно загрузить операционную систему.
Поиск производится в определённом порядке (то есть если присутствует два устройства,
с которых возможно загрузиться, то загрузка будет проведена с носителя, стоящего
первым в списке
(так если у вас есть загрузочная дискета и жёсткий диск с ОС и дискета стоит
первой в списке проверки,
компьютер загрузится именно с неё)). Этот порядок конечно же можно изменить.
Производиться
это в программе настройки BIOS.

1.1) Ну нашёл BIOS нужный носитель, а что дальше?

Дальше ищется boot sector (сектор загрузки) и загружается по адресу 0:7с00 (что
это за адрес и
почему boot sector загружается именно туда для нас пока не очень важно, главное
знать, что он
загружается именно по этому адресу), ну а дальше... А дальше всё зависит от программы-загрузчика.
Давайте рассмотрим поведения загрузчиков наиболее распространённых ОС,
а именно Linux, Dos и Windows.

1.2) DOS

Начнём, пожалуй с первой пробы мастерства великой и ужасной Microsoft.

Dosовский boot sector загружает всего два  файла:

1. MsDos.sys
2. io.sys

По расширению .sys мы можем определить, что два этих файла системные
(а чего иначе boot sector будет их грузить? ;)).
Файл IO.sys содержит в себе все функции 21 прерывания (int 21h), файл msdos.sys
производит обработку
файла config.sys, загружает command.com , который читает, что же мы накалякали
в файле autoexec.bat.
После этого выполняются необходимые задачи, назначенные нами для выполнения бедным
DOS и
система готова к нашим над ней издевательствам!

1.3 Windows 95/98

Как же загружается всем нам известная Windows 98?
Никаких принципиальных изменений относительно DOSа не произошло. Единственное
существенное
отличие состоит в том, что файл msdos.sys больше не используется: он оставлен
ради совместимости,
как конфигурационный файл. Файл io.sys наоборот взгрузил на себя все функции
msdos.sys и теперь
после обработки файла autoexec.bat загружается win.com. Он переводит систему
в защищённый режим
и запукает остальное ПО, обеспечивающее нормальную работу Windows.

1.4 Windows NT

Корпорация Microsoft изрядно поработала над Windows NT и надо отдать им должное,
этот их продукт
получился намного устойчивее Windows 9X. В процесс загрузки также добавилось
немного нового.
Итак, давайте разберём, что же:

Загрузочный сектор Windows NT зависит от FS (File System - файловой системы).
Их два: один для NTFS, другой для FAT.

Теперь о порядке загрузки:

1. Загрузочный сектор запускает NTLDR (сокращение от NT LOADER), запускающийся
в реальном
режиме (RealMode)
2. NTLDR производит перевод системы в защищенный режим (Protected Mode)
3. Происходит  создание необходимых таблиц страниц для доступа к первому мегабайту
памяти.
4. Происходит активизация механизма страничного преобразования.
5. NTLDR читает boot.ini , используя встроенный код read only (только чтение)
файловой системы.
(Он может читать подкаталоги, в отличие от загрузочного сектора, который делать
это не может)
6. NTLDR выводит меню выбора загрузки.
7. NTLDR определяет каталог Windows (он записан в нашем файле boot.ini.) Он не
может быть
некорневой (например c:/os/windows/), но может быть на другом физическом или
логическом диске.
8. Если файл boot.ini содержит строчку для загрузки другой версии Dos или Windows,
загружается
bootsect.dos и выполнятся перезагрузка.
9. Если всё же такой строчки нет, boot.ini читается дальше.
10. Загружается ntdetect.com, проверяет конфигурацию компьютера и заносит её
в реестр.
11. Загружается ntoskrnl.exe, содержащий в себе ядро и различный подсистемы выполнения
и hal.dll
 с интерфейсом взаимодействия с вашим железом.
12. По желанию пользователя выводиться меню запуска последней удачной конфигурации,
и загружается
 копия реестра, соответствующая выбору пользователя.
13. Загружаются драйвера и файлы, необходимые для нормальной загрузки.
14. Вызывается функция main файла ntoskrnl.exe.
15. NTLDR завершает свою работу.

Так как исходные коды Windows и DOS не доступны , их загрузка  представлена столь
размыто.
 Если у вас есть замечания -  пишите.

Теперь давайте перейдём к ОС Linux. Её исходный код открыт, поэтому процесс загрузки
будет описан
более детально. Приступим:

1.5 Linux

Linux имеет два типа загрузки:

1. С помощью загрузочного сектора ядра
2. С помощью загрузчика Linux (LILO- LInux LOader)

Вот как Linux загружается с помощью загрузочного сектора ядра:

1. Загрузочный сектор переписывает себя по адресу 9000h:0.
2. Загрузка Setup, записаного по адресу: 9000h:0200h
3. Загрузка ядра по адресу 1000h:0. Максимальный размер ядра- 508 кб
4. Запуск Setup.
5. Проверка Setup на наличие ошибок.
6. Проверка оборудования, используя BIOS. Проверка объёма памяти, наличие жестких
дисков,
шины MCA, PC/2 mouse, APM BIOS.
7. Переход в защещённый режим.
8. Передача управления ядру.
9. Распаковка архивированного ядра (если оно архивированно), запись его по адресу
100000h.
10. Передача управления по этому адресу.
11. Активизация страничной адресации
12. Инициализация gdt и idt. Вся виртуальная память входит в сегмет ядра и кодовый
сегмент.
13. Загрузка драйверов.
14. Передача управления процессу int.
15. Читаются файлы конфигурации и происходит запуск всех необходимых программ
с помощью int.

А вот как система загружается с помощью LILO:

1. Загрузочный сектор LILO переписывает себя по адресу 9a00h:0;
2. До адреса 9b00h:0 размещается его стек.
3. Загружается вторичный загрузчик по адресу 9b00h:0 и происходит передача  ему
управления.
4. Вторичный загрузчик загружает загрузочный сектор ядра по адресу 9000h:0.
5. Происходит загрузка Setup по адресу 9000h:0200h.
6. Происходит загрузка ядра по адресу 1000h:0.
7. Управление передается Setup.

Вот пожалуй и всё на сегодня. Если что-то непонятно или я допустил где-то ошибку,
пишите
пожалуйста на адрес  mailto:vich2k2@mail.ru?subject=MakeOS.

В следующем выпуске, мы поговорим о архитектуре современных процессоров.
Ознакомиться с кодом различных загрузчиков вы можете, загрузив архив с ними с
нашего
сайта (www.3os.by.ru/downloads/boot.zip)

--
С уважением,
VICH  ( mailto:vich2k2@mail.ru )

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное