Autor: DjH | 4.8.2008 |
Vítám vás u prvního dílu, který bude víceméně o teorii, jak udělat jednoduchý operační systém. Před tím než ho začneme dělat, musíme si uvědomit hodně věcí:
- Bude v Real Mode, nebo v Protected Mode? - V čem ho budeme programovat? - Jaké bude mít funkce? - Bude na disketě, USB disku, harddisku? - Jaký bude používat FileSystem? - Co všechno bude potřeba? - A co od něho vlastně očekáváme a k čemu bude?
Bude v Real Mode, nebo v Protected Mode?
Půjdeme pěkně popořádku. Real Mód či Chráněný mód?
Oba módy mají své výhody i nevýhody.
V reálném módu nám může rozhodit nepovedená aplikace celý operační systém,
ale pracovat v chráněném režimu je podstatně těžší.
Jelikož náš systém má být jednoduchý,
bude jednodušší a pro nás pohodlnější vybrat Real Mode.
Do chráněného režimu se dá operační systém kdykoliv přepsat.
V čem ho budeme programovat?
Na výběr máme z Assembleru, C, C++, Pascalu, a možná i dalších. Assembler je dnes až moc přehnaná volba, a nebylo by to zrovna nejjednodušší. C++? Museli bychom si napsat vlastní iostream, cout, cin, string… Taky si myslím že ne. Pascal? Pár OS jsem v Pascalu viděl ale není to ono. C? Ano! C. Sice si budeme muset napsat vlastní funkce jako printf(), strlen(), malloc() a podobně, většina jde však získat na internetu (GNU C a podobně). Co nám nepůjde v C, uděláme v inline ASM.
Jaké bude mít funkce?
Podle našich znalostí a možností. Budeme se snažit jich udělat co nejvíce, ale ne tolik, aby některé byly zbytečné. Letmo:
- vstup z klávesnice - výstup na monitor - nějaká ta správa paměti - jednoduchá práce s diskem (alespoň read) - execute, spouštění aplikací - nějaké API v podobě interruptů
Bude na disketě, USB disku, harddisku?
Disketa je zastaralá, USB disk je lákavý, HDD je ideální. Na HDD se OS sám od sebe nedostane, s USB se BIOS moc nekamarádí a jsme opět u diskety, která nám bude asi tak na ten jednoduchý operační systém vyhovovat. Pokud ho budeme emulovat někde ve VMWare či QEMU, tak nám poslouží Image Floppy disku
Jaký bude používat FileSystem?
Je lákavé si vytvořit vlastní kterému budeme rozumět, ale to bychom si museli naprogramovat i jednoduchý správce disku (resp. img té diskety). Není lepší se naučit FAT 12?
Co všechno bude potřeba?
Nyní se dostáváme k TOOLům, které budeme potřebovat. Tedy nějaký kompilátor, emulátor, správce floppy obrazů, linker, editor… Jako kompilátor pro C bych použil stařičký Turbo C verze 2.01, k tomu je potřeba i Turbo ASM když bude vkládat Assembler. A jako kompilátor pro samotné ASM soubory použijeme NASM. Jako emulátor si já osobně vyberu VMWare. Doporučuju i vám. Jako správce floppek použijte Ultra ISO, protože soubory co přidáte do obrazu uloží pod jménem 8.3 (až bude řeč o FAT12, tak to přiblížím). Jako linker použijeme JLOC. Opravdu doporučuju. A jako editor? U mě jednoznačně vede PSPad.
A co od něho vlastně očekáváme a k čemu bude?
Mě osobně to láká už dlouho, vytvořit si vlastní OS. Zaprvé mi trochu přiblíží, jak takový OS funguje (řekl bych spíš fungoval, protože budeme dělat něco jako DOS), a zadruhé získáme nějaké zkušenosti s C, pointery a tak podobně. A na otázku k čemu nám nakonec ten OS bude, odpovím jednoznačně, upřímně a krutě: k ničemu.
Ještě by bylo k věci si nějak rozdělit strukturu složek a naší práce. Viděl bych asi takovéto větvení složek:
> _tools – zde budou kompilátory, budou vždy se zdrojovými kódy a tak si nikdo nemusí lámat hlavu, kde je sehnat. Já vám je dodám. Dotyčnému potom stačí rozbalit archiv se zdrojáky a spustit compile.bat. > boot – zde se bude nacházet jen zdrojový kód bootloaderu > doc - zde bude nějaká ta dokumentace > include - zde budou všechny hlavičkové soubory > output - zde bude jen obraz naší diskety s naším OS > output/files - zde budou výsledné zkompilované aplikace > source - zde budou zdrojové kódy > source/kernel – zdrojáky jádra > source/app - zdrojáky (například) aplikace „app“ > tmp - zde budou různé OBJ soubory, které budou muset projít ještě linkováním > compile.bat – soubor, který nám celý OS zkompiluje > delete.bat – soubor, který nám vymaže obsah složky tmp