Tämä wikiHow opettaa sinulle käyttöjärjestelmän suunnittelun ja kehittämisen, jos et osaa koodata C- tai C ++ - kielellä. Käyttöjärjestelmät hallitsevat tietokonelaitteistoa ja tarjoavat resursseja, joita sovellukset tarvitsevat suorittaa. Käyttöjärjestelmän kirjoittaminen tyhjästä edellyttää vahvaa tietotekniikan hallintaa, ohjelmointikieltä, kuten C tai C ++, kokoonpanoa ja koodinhallintakäytäntöjä.
Askeleet
Osa 1/2: Perusteiden oppiminen
Vaihe 1. Suorita tietotekniikan peruskurssit
Toisin kuin verkkokehitys, käyttöjärjestelmän luominen edellyttää vahvaa ymmärrystä algoritmeista, tietorakenteista, tietokonelaitteistosta ja resurssienhallinnasta. Ihmiset saavat tutkintoja tästä asiasta, joten älä odota koko käyttöjärjestelmän kirjoittamista online -opetusohjelman lukemisen jälkeen! Harvardin tietojenkäsittelytieteen kurssi on saatavilla verkossa ilmaiseksi EDX: n kautta.
Vaihe 2. Opi korkean tason ohjelmointikieli, kuten Python
Kun olet saanut vankan perustiedon tietotekniikasta, seuraava askel on hallita C ja/tai C ++. Kuten tietojenkäsittelytieteen oppiminen, kielen hallitseminen ei ole valinnaista-et voi koodata käyttöjärjestelmää, jos et voi kirjoittaa kiinteitä sovelluksia.
Jos olet uusi C: ssä, tutustu Dartmouthin C Programming: Getting Started - kurssiin, joka on ilmainen EDX: n kautta. Kun olet suorittanut kurssin, voit suorittaa sarjan seuraavan kurssin: C Ohjelmointi: Kielen perusteet. Siirry sitten seuraaville kursseille, kuten modulaarinen ohjelmointi ja muistinhallinta sekä osoittimet ja muistinhallinta
Vaihe 3. Opi kokoonpanokieli
Kokoonpanokielet ovat matalan tason kieliä, jotka on suunniteltu kommunikoimaan eri prosessorien kanssa. Koska kokoonpano on erilainen eri prosessorityypeille (esim. X86 -kokoonpanokieli Intelille, AMD: lle, VIA: lle ja muille suorittimille), sinun on opittava koodaamasi suorittimen versio.
- Tämä avoimen lähdekoodin kirja, jos se luetaan kokonaan, voi antaa sinulle riittävän vankan ymmärryksen käyttöjärjestelmän rakentamisesta.
- Art of Assembly Language on erittäin suositeltava kokoonpanokirja, joka on saatavana sekä verkossa että offline-tilassa.
- Sinun pitäisi myös tehdä paljon tutkimusta siitä, minkä tyyppisiä suorittimia käyttöjärjestelmäsi pitäisi käyttää. Suoritinarkkitehtuurin käsikirjat löytyvät helposti Google -haun avulla ("Intel Manuals", "ARM manuals" jne.).
Vaihe 4. Suorita käyttöjärjestelmän opetusohjelma
Käyttöoppaat opastavat sinut peruskäyttöjärjestelmän luomisen prosessissa. Tämä saa sinut tottumaan prosessiin ja auttaa sinua selvittämään, puuttuuko sinulta osia. Kun olet suorittanut opetusohjelman tai kaksi, olet hyvin matkalla oman käyttöjärjestelmän luomiseen.
- Bare Bones on opetusohjelma, jonka avulla voit kirjoittaa ensimmäisen yksinkertaisen 32-bittisen ytimen. Opetusohjelman suorittamisen jälkeen seuraava askel on rakentaa oma käyttöjärjestelmäsi Meaty Skeletonin avulla.
- Scratchin Linux on online -kirja, joka opastaa sinua luomaan oman Linux -käyttöjärjestelmän.
- Käyttöjärjestelmät 0-1 on ilmainen kirja eri käyttöjärjestelmien luomisesta alusta loppuun.
Vaihe 5. Selvitä käyttöjärjestelmän tavoitteet
Mitä haluat käyttöjärjestelmäsi tekevän? Miltä sen pitäisi näyttää? Tarvitsetko todella kirjoittaa koko käyttöjärjestelmän tai haluatko vain luoda tietyn ulkoasun työpöydällesi? Kaikki nämä asiat on otettava huomioon ennen koodauksen aloittamista.
- Harkitse kehittämistä muiden ohjelmoijaryhmän kanssa. Jos kehittäjäryhmä työskentelee projektin parissa, se vähentää kehitysaikaa merkittävästi.
- Lisää projektisi tavoitteet, suunnitelmat ja kysymykset julkiseen arkistoosi, jotta muiden on helppo auttaa sinua.
Osa 2/2: Käyttöjärjestelmän rakentaminen
Vaihe 1. Valitse kehitysympäristö
Tämä on alusta, jota käytät uuden käyttöjärjestelmän koodaamiseen. Se on henkilökohtaisten mieltymysten asia, mutta useimmat ihmiset käyttävät joko Windowsia tai UNIX -makua. Jos käytät Windowsia, kannattaa asentaa UNIX -ympäristö, kuten Cygwin tai MinGW. Yleensä haluat varmistaa, että käyttämäsi ympäristö sisältää seuraavat:
- GCC (Gnu -kääntäjä). Jos käytät Windowsia, voit asentaa sen Cygwiniin tai MinGW: hen.
- Binutils on kokoelma työkaluja, joita käytetään objektitiedostojen käsittelyyn. Jälleen, jos käytät Windowsia, voit asentaa sen Cygwiniin.
- Hyvä tekstieditori. Vim- ja emacs -tiedostoja käytetään yleisesti UNIX -ympäristöissä. Windows-käyttäjät voivat käyttää Notepadia tai tarkistaa Notepad ++: n usean välilehden päivityksestä.
- Perl ja/tai Python. Yksi tai molemmat suositellaan merkkijonon käsittelyyn.
Vaihe 2. Määritä versionhallintajärjestelmäsi
Käyttöjärjestelmän kirjoittaminen tarkoittaa, että luot todennäköisesti satoja (tai tuhansia!) Koodirivejä. Kun työskentelet korjausten parissa, tämä voi olla hämmentävää. Joitakin tarkistettavia vaihtoehtoja ovat CVS, Mercurial ja Subversion.
Vaihe 3. Päätä bootloader
Jos et halua luoda omaa, voit käyttää olemassa olevaa, kuten Grand Unified Bootloader (GRUB). Jos sinusta tuntuu tarpeeksi rohkealta koodata käynnistyslatain, tutustu Rolling Your Own Bootloader -sivustolle osoitteessa OSDev.org.
Vaihe 4. Valitse ytimen rakenne
Ydin on käyttöjärjestelmäsi ydin, joka tarjoaa käyttöliittymän käyttäjän ja tietokoneen laitteiston välille. On olemassa monoliittisia ja ytimiä. Monoliittiset ytimet toteuttavat kaikki ytimen palvelut, kun taas mikroydimissä on pieni ydin yhdistettynä käyttäjädemonien toteuttamispalveluihin. Yleensä monoliittiset ytimet ovat nopeampia, mutta mikroydimillä on parempi vianeristys ja luotettavuus.
Vaihe 5. Aloita pienestä
Aloita pienistä asioista, kuten tekstin näyttämisestä ja keskeytyksistä, ennen kuin siirryt muistinhallintaan ja moniajoon. Voit myös yrittää tehdä yksinkertaisen 16-bittisen käyttöjärjestelmän suuren harppauksen sijasta.
Sinulla ei ole täydellistä järjestelmää kahden viikon kuluessa. Aloita käynnistyvällä käyttöjärjestelmällä ja siirry sitten viileisiin asioihin
Vaihe 6. Testaa uusi käyttöjärjestelmä virtuaalikoneella
Käytä virtuaalikoneen sovellusta sen sijaan, että käynnistät tietokoneen uudelleen joka kerta, kun teet muutoksia tai joudut siirtämään tiedostot kehitystietokoneestasi testikoneeseesi. VMWare on yleinen vaihtoehto, joka toimii sekä Windowsin että Linuxin kanssa, samoin Bochs. Tarkista mahdolliset umpikujat ja muut viat ja korjaa ne tarvittaessa.
Vaihe 7. Vapauta "julkaisukandidaatti
Voit tehdä tämän lataamalla testatun koodisi julkiseen arkistoosi. Näin käyttäjät voivat testata käyttöjärjestelmääsi ja raportoida kaikista ongelmista, joihin he törmäävät.
Vaihe 8. Verkko muiden käyttöjärjestelmien kehittäjien kanssa
Koko käyttöjärjestelmäkehittäjien yhteisö kokoontuu eri foorumeille, mukaan lukien /r /osdev Redditissä ja Software Engineering Stack Exchange. Kun olet saanut käsityksen peruskäyttöjärjestelmän kehittämisestä, lue olemassa olevat viestit nähdäksesi, millaisia asioita tulee esiin kehitysprosessin aikana.
Video - Käyttämällä tätä palvelua joitakin tietoja voidaan jakaa YouTuben kanssa
Vinkkejä
- Varmista, että otat turvallisuusominaisuudet ensisijaiseksi tavoitteeksi, jos haluat järjestelmän olevan elinkelpoinen.
- Kun kaikki kehitys on tehty, päätä, haluatko julkaista koodin avoimena lähdekoodina vai omistettuna.
- Jotta käyttöjärjestelmä pystyy käsittelemään useita suorittimia, muistinhallinnassa on oltava käytössä lukitusmekanismit, jotka estävät useita prosessoreita käyttämästä samaa resurssia samanaikaisesti. Tätä varten käytetyt "lukot" edellyttävät aikatauluttajan läsnäoloa sen varmistamiseksi, että vain yksi prosessori käyttää kriittistä resurssia milloin tahansa ja kaikki muut odottavat. Ajastin riippuu kuitenkin muistinhallinnan läsnäolosta. Tässä on kyse umpikujasta riippuvuudesta. Ei ole olemassa tavanomaista tapaa ratkaista tällaisia ongelmia; ohjelmoijana sinulta odotetaan riittävän taitoa selvittää oma tapa käsitellä sitä.
- Käyttöjärjestelmä voi olla myös käyttäjäystävällinen. Muista lisätä käyttäjäystävällisiä ominaisuuksia, jolloin ne ovat olennainen osa suunnittelua.
- Älä liity OSDev.org -foorumeilla ja ala kysyä ilmeisiä kysymyksiä. Se yksinkertaisesti johtaa "Lue käyttöohje" vastauksia. Sinun pitäisi yrittää lukea Wikipedia ja eri työkalujen käyttöoppaat, joita haluat käyttää.
- Älä aloita käyttöjärjestelmäprojekti ohjelmoinnin oppimisen aloittamiseksi. Jos et vielä osaa C-, C ++-, Pascal- tai jotakin muuta sopivaa kieltä, mukaan lukien osoittimen käsittely, matalan tason bittikäsittely, bittisiirto, sisäinen kokoonpanokieli jne., Et ole valmis käyttöjärjestelmän kehittämiseen.
- Jos teet jotain harkitsematonta, kuten kirjoitat satunnaisia tavuja satunnaisiin I/O-portteihin, kaatat käyttöjärjestelmäsi ja voit (teoriassa) paistaa laitteistosi.