Operativni sistem omogućava korisniku interakciju sa računarskim hardverom. Sistem se sastoji od stotina hiljada linija koda. Obično se operativni sistem pravi pomoću programskih jezika C#, C, C ++ i asemblera. Operativni sistem vam omogućava da pregledate računar dok čuvate i izvršavate komande. Nemojte misliti da je stvaranje operativnog sistema jednostavno. Za to je potrebno mnogo znanja.
Korak
Korak 1. Prije svega, naučite o programiranju
Asemblerski jezik je veoma važan; toplo se preporučuje da naučite neki drugi komplementarni jezik na visokom nivou, poput jezika C.
Korak 2. Odlučite koji medij želite koristiti za učitavanje OS -a
Ovaj medij može biti CD pogon, DVD pogon, fleš disk, tvrdi disk, disketa ili drugi računar.
Korak 3. Definirajte srž ideje SO
Na primjer, u sustavu Windows osnovna ideja je GUI jednostavan za korištenje i puno sigurnosti.
Korak 4. Odredite koju platformu procesora podržava vaš operativni sistem
IA-32, ARM i x86_64 su najčešće platforme za personalne računare. Dakle, svi su oni vaš najbolji izbor.
Korak 5. Odlučite želite li sve sami raditi od nule ili postoji već dostupno jezgro na kojem biste željeli nadograditi
Na primjer, Linux od nule je projekt za ljude koji žele izgraditi vlastiti Linux distro.
Korak 6. Odlučite hoćete li koristiti svoj pokretački program za učitavanje ili unaprijed izgrađen, kao što je Grand Unified Bootloader (GRUB)
Za samo kodiranje pokretačkog programa potrebno je veliko znanje o hardveru i BIOS -u. Kao rezultat toga, ovaj korak može ometati stvarni raspored programiranja jezgre.
Korak 7. Odlučite koji programski jezik ćete koristiti
U redu je imati operativni sistem na jeziku kao što je Pascal ili BASIC, ali trebate koristiti C ili Assembly. Sklapanje je vrlo potrebno jer to zahtijevaju neki važni dijelovi operativnog sistema. S druge strane, jezik C ++ sadrži ključne riječi za čije je izvođenje potreban drugi potpuni SO.
Da biste kompajlirali operativni sistem iz C ili C ++ koda, naravno da ćete koristiti jedan ili drugi kompajler. Stoga je dobra ideja konzultirati korisnički vodič/priručnik/dokumentaciju za C/C ++ kompajler po vašem izboru, bilo da je uključen u softver ili dostupan na web stranici distributera. Morate znati mnogo komplikovanih stvari o kompajleru, a za razvoj C ++ morate znati o shemi upravljanja kompajlerom i njenom ABI -ju. Od vas se očekuje da razumijete različite izvršne formate (ELF, PE, COFF, osnovni binarni itd.), Te da razumijete da je ekskluzivni Windows format, PE (.exe) zaštićen autorskim pravima
Korak 8. Definirajte svoje aplikacijsko sučelje za programiranje (API)
Jedan dobar API za odabir je POSIX jer je dobro dokumentiran. Svi Unix sustavi imaju barem djelomičnu podršku za POSIX. Stoga bi povezivanje Unix programa s vašim OS -om trebalo biti jednostavno.
Korak 9. Odlučite se o svom dizajnu
Postoji nešto poput monolitnog jezgra i mikro jezgra. Monolitna jezgra implementiraju sve usluge u jezgru, dok mikro jezgra imaju male jezgre u paketu sa uslugama implementacije demona korisnika. Općenito, monolitna jezgra su brža, ali mikro jezgra imaju bolju izolaciju grešaka i pouzdanost.
Korak 10. Razmislite o razvoju i radu u timu
Na taj način potrebno je manje vremena za rješavanje više problema, što će vjerovatno ubrzati izgradnju boljeg OS -a.
Korak 11. Nemojte potpuno brisati tvrdi disk
Zapamtite, brisanjem pogona nepovratno će se izbrisati svi podaci na njemu! Upotrijebite GRUB ili drugi upravitelj pokretanja za dvostruko pokretanje vašeg sistema s drugim OS -om sve dok vaš OS ne bude potpuno funkcionalan.
Korak 12. Počnite od malih nogu
Počnite s malim stvarima poput prikaza teksta i zastanite prije nego pređete na stvari poput upravljanja memorijom i složenog rada. Obavezno napravite i 32 -bitnu i 64 -bitnu verziju.
Korak 13. Čuvajte sigurnosnu kopiju posljednjeg radnog izvornog koda
Ovaj korak je koristan kao zaštita u slučaju da nešto pođe po zlu s trenutnom verzijom SO -a ili razvojem. Ako se vaš računar ruši i ne pokreće se, dobro je imati drugu kopiju za rad kako biste riješili problem.
Korak 14. Razmislite o testiranju vašeg novog operativnog sistema sa virtuelnom mašinom
Umjesto ponovnog pokretanja računara svaki put kada unesete promjene ili nakon slanja datoteka sa svog razvojnog računara na testnu mašinu, možete koristiti aplikaciju virtualne mašine za pokretanje vašeg OS -a dok je vaš trenutni OS pokrenut. Trenutne aplikacije za VM uključuju: VMWare (koji takođe ima besplatan serverski proizvod), otvorene alternative, Bochs, Microsoft Virtual PC (nije kompatibilan sa Linuxom) i Oracle VirtualBox.
Korak 15. Pokrenite "kandidaturu za izdanje" ili beta verziju
Ovaj korak će omogućiti korisniku da vas obavijesti o potencijalnim problemima s vašim operativnim sistemom.
Korak 16. Operativni sistem bi takođe trebao biti prilagođen korisniku
Pobrinite se da dodate funkcije prilagođene korisniku, neka budu sastavni dio vašeg dizajna.
Savjeti
- Provjerite ima li zastoja i drugih grešaka. Greške, zastoji i druga pitanja će uticati na vaš projekat izgradnje operativnog sistema.
- Provedite sigurnosne funkcije kao najveći prioritet ako želite da sistem radi ispravno.
- Koristite web stranice poput OSDev i OSDever kako biste lakše razvili vlastiti operativni sistem. Molimo vas da imate na umu da će za većinu svrhe zajednica OSDev.org biti više nego sretna ako koristite njihovu wiki, a ne pridružite se forumu. Ako se odlučite pridružiti forumu, postoji preduvjet: morate zaista znati o C ili C ++ i x86 montažnom jeziku. Također biste trebali razumjeti opće i složene programske koncepte poput povezanih lista, redova itd. Zajednica OSDev -a u svojim propisima izričito navodi da njena zajednica nije stvorena za njegovanje novih programera.
- Ne pridružujte se sa OSDev.org forumom, a zatim postavite očigledno pitanje. Od vas će se tražiti samo da pročitate vodič. Pročitajte Wikipedia i upute za opremu koju želite koristiti.
- Ako pokušavate razviti operativni sistem, definitivno vas smatraju "bogom" programiranja.
- Trebali ste pročitati i priručnik za procesor za arhitekturu procesora koju ste odabrali; da li x86 (Intel), ARM, MIPS, PPC itd. Priručnike za arhitekture procesora lako je pronaći pomoću Google pretraživanja ("Intel priručnik", "ARM priručnik" itd.).
- Nakon što su svi razvojni radovi dovršeni, odlučite želite li objaviti kôd kao otvoreni kôd ili po autorskim pravima.
- Ne počinji projekt operativnog sistema za početak učenja programiranja. Ako ne znate iznutra i izvana o C, C ++, Pascal-u ili nekom drugom prikladnom jeziku, uključujući manipulaciju pokazivačem, manipulaciju bitovima na niskom nivou, pomicanje bitova, ugrađene asemblerske jezike itd., Niste spremni za operativni sistem razvoj.
- Stvaranje potpuno nove particije za 'proširenje' SO -a može biti dobra opcija.
- Ako želite jednostavan način, razmislite o Linux distribucijama kao što su Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD ili SUSE Studio i SUSE KIWI. Međutim, operativni sistem koji kreirate pripada kompaniji koja je prva pokrenula uslugu (iako imate pravo da ga slobodno distribuirate, mijenjate i pokrećete prema želji prema GPL -u).
Upozorenje
- Nećete dobiti potpuni operativni sistem u roku od dvije sedmice. Počnite s SO za pokretanje, a zatim prijeđite na hladnije stvari.
- Nepažljivo upisivanje operativnog sistema na tvrdi disk može ga potpuno oštetiti. Budi pazljiv.
- Ako radite nešto što se ne preporučuje, poput pisanja nasumičnih bajtova na slučajne I/O portove, srušit ćete svoj OS i (u teoriji) bi mogli opeći vaš hardver.
- Ne očekujte da će se operativni sistem lako izgraditi. Postoji mnogo kompliciranih međuovisnosti. Na primjer, da biste stvorili operativni sistem sposoban za rukovanje s više procesora, vaš Menadžer memorije mora imati mehanizam "zaključavanja" kako bi spriječio više procesora da pristupe istom resursu u isto vrijeme. "Zaključavanje" koje se koristi za ovo bi zahtijevalo od planera da osigura da samo jedan procesor pristupa kritičnim resursima u bilo kojem trenutku, a svi drugi moraju čekati. Zapravo, raspoređivač ovisi o prisutnosti Menadžera memorije. Ovo je primjer ovisnosti o slijepoj ulici. Ne postoji standardni način rješavanja ove vrste problema; od svakog programera operativnih sistema se očekuje da bude dovoljno vješt da zna svoj način rješavanja.
Dodatni izvori
- Smjernice: Linux od nule
- Bootloader: GRUB
- Aplikacije virtuelnih mašina: Bochs, VM Ware, XM Virtual Box.
- Priručnik za procesor: Intel priručnik
- SO razvojne lokacije: OSDev, OSDever