Írásban a saját operációs rendszer №1

1) A megszakítási vektort a következők (e szükségünk van mikor egy csapda táblázatot):

IRQ INT oka
8h IRQ0 Rendszer Timer
9h IRQ1 billentyűzet
Slave vezérlő IRQ2 10h
IRQ3 11h COM2 port, a modem
IRQ4 12h Port COM1, egér
Irq5 13h Port LPT2
IRQ6 14h meghajtó
IRQ7 15h LPT1, nyomtató
IRQ8 70H valós idejű óra
IRQ9 71h kioltó megszakítás
IRQ10 72h további eszközök
IRQ11 73h további eszközök
IRQ12 74h PS Mouse
IRQ13 75H Error matematikai koprocesszor
IRQ14 76h Eredeti IDE-vezérlő
IRQ15-re 77H második IDE-vezérlő, egy merevlemez

2) BIOS. Ez általában egy kitérőt, mert Itt tartjuk, nem annyira a BIOS eszköz megtanulják, hogyan kell hozzá, hogy működjön. Használja ezeket, persze, hogy a mi operációs rendszer, elviselhetetlen, de nagyon hasznos lehet a kezdeti szakaszban. Az írás az operációs rendszer nem említem meg, hogy az érdeklődő olvasó az edzés során. =)

Szóval, a BIOS-ban (fogok beszélni AWARD BIOS, mivel ez a legnépszerűbb változat, így talán kisebb eltérések más
BIOS) - sorozata tömörített fájlok, hogy vége a fájl indítóblokk. A szerkezet az első megabyte memóriát BIOS:

original.tmp és bájtok a CRC

Amíg a tér a fő része a BIOS, nevezetesen:

original.tmp - a fő része található, amely a BIOS Setup rutin, valamint a szükséges alkatrészek elindulni.
CRC - ellenőrző BIOS
awardext.rom - rutinszerű O konfiguráció a számítógép
awardepa.bin - kép
Azt is, hogy más választható modulok.

Így, amikor a számítógép be van kapcsolva indítóblokk inicializálja chipset nyilvántartások kicsomagolni az archivált (a LHA) modulokat, és elküldi azokat a memóriában.
Ennek megfelelően, az adatfájlokat lehet átprogramozni megváltoztatásával vagy hozzáadásával valamit a BIOS-ban. Így lehet változtatni a beállításokat a BIOS (feliratokról és befejezve azzal a kiegészítéssel, a lehetőséget, a munkát az új eszközöket, információkat, amelyek nem ebben a verzióban
BIOS). Ez úgy történik, elég könnyen, pl modbin (standard program Award), akkor kivonat a fájlokat adatokat
(Vegyük például az interneten), hogy megváltoztassa őket a saját, és írd
BIOS. Csak akkor, ha az archivált modulok ne felejtsük el, hogy rögzítse a CRC, különben a BIOS fogja gondolni, hogy ő tönkrement.

Szóval, mi kell egy komolyabb BIOS, mint egy kis változás a meglévő kódokat. Először hadd emlékeztessem
hogy olyan sok termelő cégek alaplapok, valamint a feldolgozók és egyetlen standard chipset nem létezik, ezért levelet generikus BIOS minden alaplap nem lehetséges, meg kell írni az egyes alaplap feladatait, és összekapcsolják őket egy BIOS-t. De ez megköveteli a sok munkaórát, így megbirkózni ezzel a feladattal elég nehéz, vagy egyszerűen lehetetlen.

Így a program a ROM-ban található (csak olvasható memória). BIOS fogja át a vezérlést, de ehhez meg kell találni. Ennek megfelelően, a program kell a régióban a S800: 0 E000: 0 memóriában, hiszen ez a terület vizsgálni a bizonyos BIOS 0AA55H aláírásokat. Ebben aláírás bájtonként számítanak a számítás a checksum. Ha az ellenőrző összeg nulla, akkor ez a ROM, és a vezérlés átadódik a memória terület, ahol ez az aláírás eltolással találtuk 3. Annak érdekében, hogy „kiegyenlítse” az ellenőrző, szükség van a végén a program, hogy adjunk egy byte, amely a szám egyenlő azzal a különbséggel 100h és az ellenőrző érkezett.

Tehát ez az, a programot kell kinéznie, akkor írj a ROM-ot.

Indításhoz Linux és Windows

Annak érdekében, hogy pontosabban megragadni az operációs rendszer boot eszköz, mielőtt fontolóra az elvek a kezdeti vizsgálatok a legnépszerűbb letöltés korunkban OS: Linux és
Windows-t.

Linux boot keresztül egy speciális bootloader (Lilo), és ezen keresztül a boot szektor a lemez. Ahogy rakodó van, de csak a vágy, hogy jobban megismerjék a rendszerindító eszköz, úgy a második esetben:

Most tekintsünk letölteni a Windows (NT, mivel a korábbi verziók elavult):

Közelebb a gyakorlatig

Tehát, megnéztük a példák kész OS állapotok letöltések, valamint a memória eszközt. Folytassa közvetlenül az írás annak OS. Kezdjük el írni a boot loader, ami biztosítja a be- és készíteni mindent kezdetét az operációs rendszer. Ez két részre oszlik (Code Division). Az első feladat, hogy előkészítse a talajt, hanem tegye a kód memóriában egy floppy lemezre, majd a vezérlést a második rakodó, amelynek feladata, hogy fordítsa le a processzort védett módban, és nem más felkészülés az irányítás átadása ténylegesen mag.

1) Az elsődleges boot betöltő

táblázat: db «0123456789ABCDEF»
pe:
// ASCII-kód átalakulni a hexadecimális és a kijelző
Pusha
xor bx, bx
mov bl, ah
és bl, 11110000b
SHR bl, 4
mov al, [asztal + bx]
hívás pc
mov bl, ah
és bl, 00001111b
mov al, [asztal + bx]
hívás pc
popa
áztat
// Al karakter kimenetét a képernyőre
pc:
Pusha
mov ah, 0x0E
int 0x10
popa
áztat
// string SI kijelző a
ps:
Pusha
.hurok:
lodsb
tesztelni al, al
JZ .quit
mov ah, 0x0E
int 0x10
JMP rövid .loop
.kilép:
popa
áztat
// Service üzenetek
msg_startup: db «OS betöltés ...», 0x0A, 0x0D, 0
msg_cyl: db «Henger:» 0
msg_head: db «fej:» 0
msg_er: db «Hiba! A kódex is: »0
msg_end: db «olvasási hiba», 0x0A, 0x0D «Indítsa újra a számítógépet, kérem», 0
msg_crlf: dB 0x0A, 0x0D, 0

// Signature butsektora:
TIMES 510 - ($ - $$) db 0
db 0xAA, 0x55

2) A másodlagos rakodó

És most másodlagos boot loader:

Mind a rakodó kész. Továbbra is csak fordítani őket, és küldje el a floppy lemez bootsector. Szimmetria az első rész befejezése, a következő részben fogjuk írni a kernel.

Itt található az ezt a cikket egy ismerősének: