Hogyan lehet összehozni egy saját operációs rendszert? Az ötlet megvan, hogyan kell hozzákezdeni, ha még nem nagyon próbálkozunk ilyesmivel?
Ne is gondoljatok ilyenekre, hogy multitasking, meg bármi ilyesmit képesek lesztek összehozni első nekifutásra.
Szvsz először bőven elég lesz próbálkozni azzal, hogy a boot folyamat során valami saját kódot lefuttattok, mondjuk egy boot-olható pendrive-ról, pl. kiíratjátok console-ban a képernyőre, h. hello world, és ennyiből fog állni az egész "operációs rendszeretek".
Nektek még ez is több napi/heti guglizás/tanulás lesz szerintem, legalábbis, ha érteni is akarjátok, hogy PONTOSAN mit csináltok. Márpedig ebben a témában az nélkülözhetetlen.
Ha ezek után nem ment el tőle a kedvetek, akkor lehet egy lépéssel továbblépni, pl. bekérni valamilyen inputot a user-től, aztán azt visszaecho-zni. Aztán még valami nagyon apró kis dolog, pl. megvalósítani rendszer-idő kiírást egy adott inputra, pl. beírja a user, h. today, és visszadobja a BIOS-ban beállított rendszeridőt. Aztán még egy kis apróság. És még egy. Így egyre többet és többet tanultok meg a hardverek működéséről, és végül talán össze tudtok hozni valami nagyon minimál DOS-szerű dolgot.
De ez is hónapok/évek munkája lesz, és rengeteg tanulás.
Kedves utolsó:
annyi megjegyzésem van a dolgokhoz, hogy azért nem apróság visszechozni a stanard inputról bevitt dolgokat.
Nekem megvan Andrew Tannenbaum és Albert S Woodfull Operációs rendszerek című könyve( igaz 15 éves, és a minix operációs rendszerről szól( a linux elődjéről)
olyan durván 1300 sor megoldani azt,hogy amikor írunk az megjelenjen a képernyőn, és itt most nincs szó feladatütemezésről, csak simán a consolse kezelésről:
-billetnyűzet
-monitoron megjelenik a szöveg amir írtak.
Persze lehet nem túl korszerű a megoldás, de 1300 sor tömény c kód, és 200 sor assamby utasítás értelemzése, hát nem most fognak eljutni idáig.
"azért nem apróság visszechozni a stanard inputról bevitt dolgokat"
Feature-nek elég apróság. Az egy dolog, hogy írni kell hozzá X mennyiségű kódot. De ennél egyszerűbbet nem tudtam kitalálni a hello world utáni köv. lépésnek :)
Igaz végül is, de azért ajánlotta ma multi-taskot, mert egy egyfeladatos egyfelhasználós rendszer az életben nem lesz képes kihasználni a processzort teljes egészében.
Pont emiatt fejlődött ki az utóbbi.
Bár nekik még nem lényeg, hisz jó lenne eljutni odáig, hogy tudjanak mindenek előtt egy
-bootolható lemezt készíteni, ezt csak assamblyben lehet( c-ben még nem találtam sehol)
-Illetve a bootolható rutinból egy programot megtudjanak hívni, ami tartalmazza tartalmazza a ram memcpy, malloc függvény teljes implementációját( ugyanis mivel nincs op rendszer ezt is nekik kell evégezniük), valamint a képernyőre írjanak egy drivert, amivel ki tudnak jelezni szöveget. És erre jön a printf teljes implementációja)
Ennyiből állna a Hello World feladat.
Azért akik kitalálták valszeg egy Hello World program után akarnak nekiállni egy ilyennek, ezért sokalottam az 1300 sort.
"Azért akik kitalálták valszeg egy Hello World program után akarnak nekiállni egy ilyennek, ezért sokalottam az 1300 sort."
Na igen, én pont azért írtam ezt a hello world op.rendszert, mert mire idáig eljutnak, rájönnek majd, hogy ez sokkal de sokkal bonyolultabb, mint ahogy elképzelik most :)
De hogy kérdező konkrét kérdésére válaszoljak, hogy mi kell hozzá:
1.) Kell egy virtuális gép:
egyrészt mivel sokszor fogjátok újraindítani a gépet a próbálkozásaitok során, és az nem mindig kedves az embernek, ezért jó ha virtuális gépben próbálkoztok. Másrészt. mivel a hardvert közvetlenül programozzátok és könnyen okozhattok akár hardverhibát is ezért jó ha "csak a virutális gépet" teszitek tönkre. Emiatt mindenképpen szükség van rá. Erre szolgáló programok:
VirtuálBox <= nyilt forráskódú Pc emulátor
VmWare Player <== szerintem az egyik legjobb virtuális gép, bár túl sok "szól" bele
Virtual PC <== microsoftos program ugyanezeket tudja még nem használtam.
-Kell egy netwide assember( nasm), mivel sokmindent kell assamblyben írni. Bár tény, hogy a c fordító is tud assamblyből fordítani, de azért nem árt ha van, másrészt van neki disassemblere, ezért hibajavításkor mást nem ellenörzés közben látjátok, hogy mit csináltatok.
-Kell egy debugger. Ezzel közvetlenül meg tudjátok nézni a regiszterek állapotát ha szükséges, így ismét tudtok hibát javítani.
-Kell egy régi dos-os program ami exe2bin névre hallgat. Ezzel exe-ből tudtok bin állományokat csinálni. A rendszerbetöltő exe-re fordul, majd abból kell bináris állományt készíteni, ugyanis ezt ismeri fel a bios a bootolás közben.
-Nem árt egy ultraiso, vagy egyéb iso fájl szerkeztő. Ugyanis létre kell hozni egy iso fájlt, abba beletenni a bin állományt, majd abba a további programokat. Ezt tudjátok "megetetni" a virtuális géppel. Magyarán az isoról tudtok bootolni( már csak ezért is jó, mert nem kell elcseszni erre több száz db cd-t, vagy nem kell erre rendszeresíteni egy pendrive-ot( ami nem hinném, hogy célszerű lenne, ugyanis a programok amik bootolható teszik a pendrive-ot gyakran belenyúlnak a telepítőbe és mivel a saját operációs rendszeretek se nem windows se nem linux ezért csak gubanc lehet belőle.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!