Писане собствена операционна система №1

1) прекъсне вектор са както следва (това имаме нужда, когато се направи таблица капан):

IRQ INT причина за
8h IRQ0 система таймер






9h IRQ1 Keyboard
Slave контролер IRQ2 10h
IRQ3 11h Порт COM2, модемът
IRQ4 12h Порт COM1, мишка
IRQ5 13h Порт LPT2
IRQ6 14h диск
IRQ7 15ч Порт LPT1, принтер
IRQ8 70Н часовник в реално време
IRQ9 71h нулиране прекъсване
IRQ10 72h За допълнителни устройства
IRQ11 73з За допълнителни устройства
IRQ12 74h PS Mouse
IRQ13 75h Грешка математика копроцесор
IRQ14 76 h Произход IDE контролер
IRQ15 77H втория IDE контролер, твърд диск

2) BIOS. Това е, в общи линии, отклонение, тъй като Тук ние считаме, не толкова на устройството BIOS като се научите как да добавите тя да функционира. Използването на тези, разбира се, ще направим OS, непоносим, ​​но те могат да бъдат много полезни за началния етап. В писането на операционната система няма да го споменавам, той е любознателен читател като упражнение. =)

Така че, BIOS (Ще говорим за AWARD BIOS, тъй като тя е най-популярната версия, така че може би незначителни несъответствия с други
BIOS) - последователност от пакетирани файлове, които завършват с bootblock на файла. Структурата на първия мегабайт памет е предназначена за BIOS:

original.tmp и байтове за КРС

До пространството е основната част на BIOS, а именно:

original.tmp - основната част, която се намира рутинна BIOS Setup, както и части, необходими за инициализация.
CRC - контролна сума BIOS
awardext.rom - рутинни O конфигурация на компютъра
awardepa.bin - изображение
Можете също така да се запознаете с други модули по избор.

Така че, когато компютърът е включен bootblock инициализира чипсета регистри, разопаковането архивирани (с помощта на LHA) модули и ги изпраща на паметта.
Съответно, файлове с данни могат да бъдат препрограмирани чрез промяна или добавяне на нещо в BIOS. По този начин, можете да промените всички BIOS настройките (от надписи и завършва с добавянето на възможност за работа с новите устройства, информацията, която не е в тази версия
BIOS). Това се прави много лесно, например с помощта на modbin (стандартна програма за награда), можете да извлечете данните на файлове
(Вземете, например, от Интернет), за да ги промените на собствения си и да напишете в
BIOS. Само когато архивираните модули, не забравяйте да се определи на КРС, в противен случай BIOS ще си помисли, че той е разрушен.







Така че, това, което ви е необходимо за по-сериозна флаш BIOS от малка промяна на съществуващите кодове. Първо нека ви припомня,
ви, че има много фирми, които произвеждат дънни платки, както и процесори и единен стандарт за чипсет не съществува, така че пиша родово BIOS на всички дънни платки не е възможно, трябва да се напише за всяка дънна платка своите функции и да ги комбинира в един BIOS. Но това изисква много човекочаса, така че да се справи с тази задача е доста трудно или просто невъзможно.

Така че нашата програма ще се намира в ROM (памет само за четене). BIOS ще прехвърли контрола за него, но и за това той трябва да я намеря. Съответно, нашата програма трябва да бъде в района на с S800: 0 до E000: 0 в паметта, тъй като тази област е сканиран за наличието на някои BIOS 0AA55H подписи. В този подпис байт за байт брои за изчисляване на контролната сума. Ако контролната сума е равна на нула, а след това ROM, а управлението се насочва към зоната на паметта, където този подпис с отместване е установено, 3. С цел да се "изравнят" шах, е необходимо в края на програмата, за да добавите един байт, което е броят равен на разликата 100h и контролна получили.

Така че, това е то, програмата ви трябва да изглежда така, пишете в ROM.

Зареждане Linux и Windows

За да се разбере по-точно устройство за стартиране на операционната система, преди да се пристъпи към разгледа принципите на първоначалните тестове на най-популярния мишката в нашето време Операционна система: Linux и
Windows.

Linux може да се стартира чрез специализиран буутлоудъра (Лило), както и чрез сектора за начално зареждане на диска. Както товарач имаме, но има само желание за по-пълно се запознаят с устройството за зареждане, помислете за втория случай:

А сега да разгледаме сваляне на Windows (NT, тъй като по-ранни версии на остарели):

По-близо до Практика

Така че, ние погледна примерите на готови OS стадии изтегляния, както и устройство с памет. Преминете направо към писането на своята операционна система. Започваме с писането на зареждане на ОС, която трябва да се осигури натоварване и да се подготвят всичко за началото на операционната система. Тя ще бъде разделена на две (с кодово деление). Първата задача да подготви почвата, а по-скоро постави в код памет от дискета, и след това се прехвърля контрола на втория товарач, чиято задача е да се преведат на процесора в защитен режим и да направи друга подготовка за прехвърляне на контрола е всъщност ядро.

1) първично зареждане товарач

таблица: db «0123456789ABCDEF»
PE:
// ASCII-код превърне в шестнадесетичната му представяне и показване
Pusha
XOR BX, ВХ
Mov бл, ах
и бл, 11110000b
SHR бл, 4
Mov Al, [таблица + BX]
повикване компютър
Mov бл, ах
и бл, 00001111b
Mov Al, [таблица + BX]
повикване компютър
Попа
кисна
// От AL характер на изхода на екрана
брой:
Pusha
Mov ах, 0x0E
вътр 0x10
Попа
кисна
// низ от SI дисплей
PS:
Pusha
.контур:
lodsb
тества Al, ал
JZ .quit
Mov ах, 0x0E
вътр 0x10
JMP кратко .loop
.откажат от:
Попа
кисна
// Съобщенията за услуги
msg_startup: db «OS зареждане ...», 0x0A, 0x0D, 0
msg_cyl: db «Цилиндър:», 0
msg_head: db «, ръководител:», 0
msg_er: db «Грешка! Кодекс за него: », 0
msg_end: гб «грешка при четене», 0x0A, 0x0D, «Рестартирайте компютъра, моля», 0
msg_crlf: db 0x0A, 0x0D, 0

// подпис butsektora:
ПЪТИ 510 - ($ - $$) db 0
db 0xAA, 0x55

2) Средно товарач

И сега вторичен зареждане на ОС:

Както товарач готов. Остава само да ги събира и да го изпратите на дискета bootsector. За симетрия с първата част приключа, в следващата част ще напишем ядрото.

Покажете тази статия на приятел: