Kuidas luua arvuti operatsioonisüsteemi

See Selgitatud õpetab operatsioonisüsteemi planeerima ja arendama, kui sa ei oska C- või C++-s kodeerida. Operatsioonisüsteemid haldavad arvuti riistvara ja pakuvad ressursse, mida rakendused vajavad. Operatsioonisüsteemi nullist kirjutamine nõuab tugevat arvutiteaduse valdamist, programmeerimiskeelt (nt C või C++), kooste- ja koodihaldustavasid.

1
Võtke mõned arvutiteaduse põhikursused. Erinevalt veebiarendamisest nõuab operatsioonisüsteemi loomine algoritmide, andmestruktuuride, arvuti riistvara ja ressursside haldamise põhjalikku mõistmist. Inimesed saavad selles valdkonnas kraadi, nii et ärge lootke, et kirjutate pärast veebiõpetuse lugemist terve operatsioonisüsteemi! Harvardi arvutiteaduse sissejuhatav kursus on veebis EDX-i kaudu tasuta saadaval.

2
Õppige mõnda kõrgetasemelist programmeerimiskeelt, näiteks Python. Kui teil on arvutiteadusest kindlad põhiteadmised, on järgmiseks sammuks C ja/või C++ valdamine. Nagu arvutiteaduse õppimine, pole ka keele valdamine vabatahtlik, kui te ei saa kirjutada kindlaid rakendusi, ei saa te operatsioonisüsteemi kodeerida. Kui olete C-ga täiesti uus, vaadake Dartmouthi kursust C Programmeerimine: Alustamine, mis on EDX-i kaudu tasuta. Kui olete selle kursuse lõpetanud, saate osaleda järgmisel kursusel: C Programmeerimine: keele alused. Seejärel liikuge edasi järgmistele kursustele nagu moodulprogrammeerimine ja mäluhaldus ning osutid ja mäluhaldus.

3
Õppige montaažikeelt. Assamblee keeled on madala tasemega keeled, mis on loodud suhtlema erinevate protsessoritega. Kuna montaaž on erinevate protsessoritüüpide puhul erinev (nt x86 montaažikeel Inteli, AMD, VIA ja muude protsessorite jaoks), peate õppima kodeeritava protsessori tüübi versiooni. See avatud lähtekoodiga raamat, kui seda tervikuna lugeda, võib anda teile piisavalt põhjaliku arusaama operatsioonisüsteemi loomisest.The Art of Assembly Language on väga soovitatav raamat koostamise kohta, mis on saadaval nii võrgus kui ka väljaspool seda. Samuti peaksite palju ära tegema. uuringute kohta, millist tüüpi protsessor(id), millel teie operatsioonisüsteem peaks töötama. Protsessori arhitektuuri juhendid on hõlpsasti leitavad Google’i otsingu abil (“Intel Manuals”, “ARM manuals” jne).

4
Täitke operatsioonisüsteemi õpetus. OS-i õpetused juhendavad teid põhioperatsioonisüsteemi loomise protsessis. See harjub teid protsessiga ja aitab teil aru saada, kas teil on mõni osa puudu. Kui olete ühe või kaks õpetust läbinud, olete juba õigel teel oma operatsioonisüsteemi loomisel. Bare Bones on õpetus, mis aitab teil kirjutada oma esimese lihtsa 32-bitise kerneli. Pärast õpetuse läbimist on järgmiseks sammuks Meaty Skeletoni kasutamine oma operatsioonisüsteemi struktureerimiseks.Linux from Scratch on veebiraamat, mis juhendab teid oma Linuxi operatsioonisüsteemi loomisel.Operatsioonisüsteemid 0–1 on tasuta raamat loomise kohta. erinevaid operatsioonisüsteeme algusest lõpuni.

5
Määrake oma operatsioonisüsteemi eesmärgid. Mida soovite, et teie operatsioonisüsteem teeks? Kuidas see peaks välja nägema? Kas teil on tõesti vaja kirjutada terve operatsioonisüsteem või soovite lihtsalt luua oma töölauale teatud välimuse? Neid asju tuleb enne kodeerimise alustamist kaaluda. Kaaluge arendamist koos teiste programmeerijate meeskonnaga. Kui projekti kallal töötab arendajate meeskond, väheneb arendusaega märkimisväärselt. Lisage oma projekti eesmärgid, plaanid ja küsimused oma avalikku hoidlasse, et teistel oleks teid lihtne aidata.

6
Valige arenduskeskkond. See on platvorm, mida kasutate oma uue operatsioonisüsteemi kodeerimiseks. See on isiklike eelistuste küsimus, kuid enamik inimesi kasutab Windowsi või UNIX-i maitset. Kui kasutate Windowsi, on hea mõte installida UNIX-i keskkond, nagu Cygwin või MinGW. Üldiselt soovite veenduda, et mis tahes kasutatav keskkond sisaldab järgmist: GCC (Gnu kompilaator). Kui kasutate Windowsi, saate selle installida Cygwini või MinGW-sse. Binutils on objektifailide manipuleerimiseks kasutatavate tööriistade kogu. Jällegi, kui kasutate Windowsi, saate selle installida Cygwini. Hea tekstiredaktor. UNIX-i keskkondades kasutatakse tavaliselt Vim ja emacs. Windowsi kasutajad saavad kasutada Notepadi või mitme vahelehe versiooniuuenduse jaoks Notepad++. Perl ja/või Python. Stringidega manipuleerimiseks on soovitatav kasutada ühte või mõlemat.

7
Seadistage oma versioonikontrollisüsteem. Operatsioonisüsteemi kirjutamine tähendab, et tõenäoliselt loote sadu (või tuhandeid!) koodiridu. Kui töötate paranduste kallal, võib see segadusse ajada. Mõned kontrollitavad võimalused on CVS, Mercurial ja Subversion.

8
Otsustage alglaaduri kasuks. Kui te ei soovi ise luua, võite kasutada olemasolevat, näiteks Grand Unified Bootloader (GRUB). Kui tunnete end alglaaduri kodeerimiseks piisavalt julgelt, vaadake veebisaidil OSDev.org artiklit Rolling Your Own Bootloader.

9
Valige kerneli kujundus. Kernel on teie operatsioonisüsteemi tuum, mis tagab kasutaja ja arvuti riistvara vahelise liidese. Seal on monoliitsed tuumad ja mikrotuumad. Monoliitsed tuumad rakendavad kõiki tuumas olevaid teenuseid, samas kui mikrotuumadel on väike kernel, mis on kombineeritud teenuseid rakendavate kasutajadeemonidega. Üldiselt on monoliitsed tuumad kiiremad, kuid mikrotuumadel on parem veaisolatsioon ja töökindlus.

10
Alusta väikselt. Alustage väikestest asjadest, nagu teksti kuvamine ja katkestused, enne kui asute sellistele asjadele nagu mäluhaldus ja multitegumtöö. Suure hüppe tegemise asemel võite proovida luua ka lihtsat 16-bitist operatsioonisüsteemi. Kahe nädala pärast pole teil täielikku süsteemi. Alustage OS-iga, mis käivitub, seejärel liikuge lahedate asjade juurde.

11
Testige oma uut operatsioonisüsteemi virtuaalmasinaga. Selle asemel, et arvuti taaskäivitada iga kord, kui teete muudatusi või peate failid arendusarvutist testmasinasse üle kandma, kasutage virtuaalmasina rakendust. VMWare on levinud valik, mis töötab nii Windowsi kui ka Linuxiga, samuti Bochs. Kontrollige võimalikke ummikseisu ja muid vigu ning parandage need vastavalt vajadusele.

12
Vabastage “vabastamise kandidaat”. Saate seda teha, laadides testitud koodi oma avalikku hoidlasse. See võimaldab inimestel teie operatsioonisüsteemi testida ja anda teada kõigist tekkinud probleemidest.

13
Võrgustik teiste operatsioonisüsteemide arendajatega. Erinevatel foorumitel, sealhulgas Redditi / r/osdev ja Software Engineering Stack Exchange’is, koguneb terve kogukond operatsioonisüsteemide arendajaid. Kui olete põhioperatsioonisüsteemi arendamisest aru saanud, lugege olemasolevaid postitusi, et näha, millised asjad arendusprotsessi käigus esile kerkivad.