Оберон-клуб «ВЄДАsoft» https://zx.oberon.org/forum/ |
|
Bootloader и Kernel https://zx.oberon.org/forum/viewtopic.php?f=94&t=247 |
Страница 1 из 1 |
Автор: | S.Atan [ 16 июл 2015, 20:29 ] |
Заголовок сообщения: | Bootloader и Kernel |
Между первой и второй... Теперь давайте рассмотрим вообще как загружаются ОС. Вернее не рассмотрим, а попытаемся понять про нашу операционную систему. В классическом представлении, все операционные системы имеют один, два или более загрузчика. Первичный, вторичный и т.д. Зачем такое сделано? Вообще об этом писано не мало, можно почитать на форумах посвящённых ОS DEV... поэтому вкратце. Изначально, давным давно и до сих пор любой IBM совместимый компьютер имеет какие то начальные настройки, которые хрен знает где то хранятся и как то используются компьютером, и мы смутно представляем, что они называются BIOS (CMOS). Ну да Бог с ними и иже. Так вот, как только мы нажимаем пипочку ВКЛ на нашем PC или Notebook-е что то начинает пищать, свиристеть и подмигивать лампочками. В самом редком и хорошем случае бегут по экрану монитора (у богачей он есть, у остального населения в лучшем случае телек) какие то буковки на непонятном языке и чего то нам пишут. Так вот, это как раз и отображение на экране работы и загрузки BIOS начальных тестов компьютера и его предварительной настройки. После этого...эээээ. А что после этого? Вот теперь буду блистать профессионализмом. А после этого, если BIOS-у все понравилось, то (тут самое интересное) он передаёт управление коду находящемуся по адресу (ВНИМАНИЕ!!!) 07С0H. Вот. Батюшки светы, не приведи хоспади скажете вы и будете правы. Там же ничего нету, кроме пустоты... Правильно, поэтому разработчики компьютеров (нормальные парни оказывается) придумали, что первое устройство которое отыщет BIOS, диск там жесткий, квадратный или круглый или ещё какую хрень, считать с нулевого (или первого?) сектора 512 байт и запихнуть в память. Оперативную оперативно. А что бы народ простой не ломал голову куда он всё это запихнёт, придумали такой вот красивый, запоминающийся адрес. Итак, по простому. В настройках BIOS выставлено в Boot menu первое устройство Floppy FDD, то после инициализации BIOS-ом компьютера, он считает первые 512 байт с флоппи диска с нулевого сектора и запихнёт все байтики по адресу 07C0H, более того, передаст туда управление. А тут мы, хитрые и умелые, раз мы это всё знаем, значит напишем какую нибудь программулину, которая что то будет делать совершенно не нужное нам!!! Ну... или нужное. Так вот обычно... Обычно, программисты размещают в этом секторе диска так называемый первичный загрузчик. Маленький но эффективный. Который распределяет память, настраивает регистры, подготавливает почву для дальнейшего и передаёт уже управление вторичному загрузчику, который в размерах больше (но первичный выделил ему и память и место и создал условия всякие) да и код у него жирнее. Первичный загрузчик в нашем случае файл OBL.Asm Вторичный - Kernel.Mod В смысле их исходники. Линковщик лепит их попа к попе исправляя адреса переходов а креатор создаёт образ дискеты. Файл OBL.Asm банален и описан в интернете миллион раз, он настраивает регистры, записи начальные секторов, головок, кластеров диска, подготавливает таблицы ГТД и т.д. А вот файл Kernel.Mod уже по интереснее. Он настраивает прерывания, подготавливает почву для вывода сообщений на экран (если мы грузимся в текстовом режиме) настраивает сборщик мусора (поэтому без него никуда, линковщик просто откажется линковать проект) и инициализирует переменные необходимые для дальнейшей работы. Вообщем муть и тоска зелёная. В следующий раз будем работать с дисплеем и напишем драйвер клавиатуры. Русифицируем её (ну или китайского добавим) и рассмотрим по подробнее работу с портами BIOS. Прерывания то у нас стандартные отключены |
Страница 1 из 1 | Часовой пояс: UTC + 2 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |