Käyttöjärjestelmän avulla käyttäjä voi olla vuorovaikutuksessa tietokoneen laitteiston kanssa. Järjestelmä koostuu sadoista tuhansista koodiriveistä. Yleensä käyttöjärjestelmä tehdään C#, C, C ++ ja assembly -ohjelmointikielellä. Käyttöjärjestelmän avulla voit selata tietokonettasi samalla kun tallennat ja suoritat komentoja. Älä usko, että käyttöjärjestelmän luominen on helppoa. Sen tekeminen vaatii paljon tietoa.
Vaihe
Vaihe 1. Opi ensin ohjelmoinnista
Kokoonpanokieli on erittäin tärkeä; on erittäin suositeltavaa oppia toinen täydentävä korkean tason kieli, kuten C-kieli.
Vaihe 2. Päätä, mitä mediaa haluat käyttää käyttöjärjestelmän lataamiseen
Tämä tietoväline voi olla CD -asema, DVD -asema, flash -asema, kiintolevy, levyke tai muu tietokone.
Vaihe 3. Määritä väitetiedoksiannon ydinidea
Esimerkiksi Windowsissa ydinidea on helppokäyttöinen käyttöliittymä ja paljon turvallisuutta.
Vaihe 4. Määritä, mitä prosessorialustaa käyttöjärjestelmäsi tukee
IA-32, ARM ja x86_64 ovat yleisimpiä tietokoneiden alustoja. Joten kaikki ne ovat paras valinta.
Vaihe 5. Päätä, haluatko tehdä kaiken itse alusta alkaen vai onko olemassa jo ydin, johon haluat rakentaa
Esimerkiksi Linux tyhjästä on projekti ihmisille, jotka haluavat rakentaa oman Linux -distronsa.
Vaihe 6. Päätä, käytätkö omaa käynnistyslatainta vai valmiita, kuten Grand Unified Bootloaderia (GRUB)
Käynnistyslataimen itse koodaaminen edellyttää laajaa tietoa laitteistosta ja BIOSista. Tämän seurauksena tämä vaihe voi estää varsinaisen ytimen ohjelmointiaikataulun.
Vaihe 7. Päätä, mitä ohjelmointikieltä haluat käyttää
On hienoa, että käyttöjärjestelmä on Pascal- tai BASIC -kielellä, mutta sinun on käytettävä C- tai Assembly -ohjelmaa. Kokoonpano on erittäin välttämätöntä, koska jotkin käyttöjärjestelmän tärkeät osat edellyttävät sitä. Toisaalta C ++ -kieli sisältää avainsanoja, jotka vaativat muita täydellisiä SO -ohjelmia.
Jos haluat kääntää käyttöjärjestelmän C- tai C ++ -koodista, käytät tietysti yhtä tai toista kääntäjää. Siksi on hyvä tutustua valitsemasi C/C ++ -kääntäjän käyttöoppaaseen/käsikirjaan/dokumentaatioon, olipa se mukana ohjelmistossa tai saatavilla jakelijan verkkosivustolla. Sinun on tiedettävä paljon monimutkaisia asioita kääntäjästä ja C ++ -kehityksen kannalta sinun on tiedettävä kääntäjän manipulointijärjestelmä ja sen ABI. Sinun odotetaan ymmärtävän eri suoritettavat tiedostomuodot (ELF, PE, COFF, perusbinääri jne.) Ja ymmärrät, että yksinomainen Windows -muoto, PE (.exe), on tekijänoikeuksin suojattu
Vaihe 8. Määritä sovellusohjelmointirajapinta (API)
Yksi hyvä sovellusliittymä on POSIX, koska se on hyvin dokumentoitu. Kaikilla Unix -järjestelmillä on ainakin osittainen POSIX -tuki. Joten Unix -ohjelmien liittäminen käyttöjärjestelmään pitäisi olla helppoa.
Vaihe 9. Päätä suunnittelu
On olemassa sellainen asia kuin monoliittinen ydin ja mikroydin. Monoliittiset ytimet toteuttavat kaikki ytimen palvelut, kun taas mikroydimissä on pieniä ytimiä, jotka on yhdistetty käyttäjädemonien käyttöönottopalveluihin. Yleensä monoliittiset ytimet ovat nopeampia, mutta mikroydimillä on parempi vianeristys ja luotettavuus.
Vaihe 10. Harkitse tiimin kehittämistä ja työskentelyä
Tällä tavalla useiden ongelmien ratkaiseminen vie vähemmän aikaa, mikä todennäköisesti nopeuttaa paremman käyttöjärjestelmän rakentamista.
Vaihe 11. Älä pyyhi kiintolevyä kokonaan
Muista, että aseman poistaminen poistaa kaikki sen tiedot peruuttamattomasti! Käynnistä järjestelmäsi toisen käyttöjärjestelmän kanssa GRUBin tai muun käynnistyshallinnan avulla, kunnes käyttöjärjestelmäsi on täysin toiminnassa.
Vaihe 12. Aloita pienestä
Aloita pienistä asioista, kuten tekstin näyttämisestä ja tauosta, ennen kuin siirryt muistinhallintaan ja yhdistetyöhön. Varmista myös, että teet 32- ja 64 -bittiset versiot.
Vaihe 13. Pidä varmuuskopio viimeisestä toimivasta lähdekoodista
Tämä vaihe on hyödyllinen suojana siltä varalta, että jotakin menee pieleen SO- tai kehitysversion kanssa. Jos tietokoneesi kaatuu eikä käynnisty, on hyvä saada toinen kopio, jotta voit korjata ongelman.
Vaihe 14. Harkitse uuden käyttöjärjestelmän testaamista virtuaalikoneella
Sen sijaan, että käynnistät tietokoneen uudelleen joka kerta, kun teet muutoksia tai olet lähettänyt tiedostoja kehitystietokoneeltasi testikoneeseesi, voit käyttää virtuaalikoneen sovellusta käyttöjärjestelmän suorittamiseen nykyisen käyttöjärjestelmän ollessa käynnissä. Nykyisiä VM -sovelluksia ovat: VMWare (jossa on myös ilmainen palvelintuote), avoimen lähdekoodin vaihtoehdot, Bochs, Microsoft Virtual PC (ei yhteensopiva Linuxin kanssa) ja Oracle VirtualBox.
Vaihe 15. Käynnistä "julkaisuehdokas" tai beta -versio
Tämän vaiheen avulla käyttäjä voi ilmoittaa sinulle mahdollisista käyttöjärjestelmäsi ongelmista.
Vaihe 16. Käyttöjärjestelmän tulee olla myös käyttäjäystävällinen
Varmista, että lisäät käyttäjäystävällisiä ominaisuuksia, tee niistä kiinteä osa suunnittelua.
Vinkkejä
- Tarkista mahdolliset umpikujat ja muut viat. Virheet, umpikujat ja muut ongelmat vaikuttavat käyttöjärjestelmän rakennusprojektiin.
- Varmista, että otat turvallisuusominaisuudet käyttöön etusijalla, jos haluat järjestelmän toimivan kunnolla.
- Käytä OSDevin ja OSDeverin kaltaisia sivustoja oman käyttöjärjestelmän kehittämiseen. Huomaa, että useimmissa tapauksissa OSDev.org -yhteisö on enemmän kuin iloinen, jos käytät heidän wikiaan etkä liity foorumiin. Jos päätät liittyä foorumille, siihen on edellytys: sinun on todella tiedettävä C- tai C ++ - ja x86 -kokoonpanokieli. Sinun tulisi myös ymmärtää yleiset ja monimutkaiset ohjelmointikonseptit, kuten linkitetyt luettelot, jonot jne. OSDev -yhteisö ilmoittaa säännöissään nimenomaisesti, että sen yhteisöä ei ole luotu uusien ohjelmoijien kasvattamiseksi.
- Älä liity OSDev.org -foorumilla ja kysy sitten ilmeinen kysymys. Sinua pyydetään vain lukemaan opas. Lue Wikipedia ja ohjeet laitteille, joita haluat käyttää.
- Jos yrität kehittää käyttöjärjestelmää, sinua pidetään ehdottomasti ohjelmoinnin "jumalana".
- Sinun olisi myös pitänyt lukea valitsemasi suorittimen arkkitehtuurin prosessorin käsikirja; onko x86 (Intel), ARM, MIPS, PPC jne. Suoritinarkkitehtuurien oppaat on helppo löytää Google -haun avulla ("Intel -käsikirja", "ARM -käsikirja" jne.).
- Kun kaikki kehitystyöt on tehty, päätä, haluatko julkaista koodin avoimena koodina vai tekijänoikeudella.
- Älä aloita käyttöjärjestelmäprojekti ohjelmoinnin oppimisen aloittamiseksi. Jos et tiedä sisältä ja ulkoa C: stä, C ++: sta, Pascalista tai jostain muusta sopivasta kielestä, kuten osoittimen käsittelystä, matalan tason bittikäsittelystä, bitinsiirrosta, sisäisistä kokoonpanokielistä jne., Et ole valmis käyttöjärjestelmään kehitystä.
- Täysin uuden osion luominen SO: n laajentamiseksi saattaa olla hyvä vaihtoehto.
- Jos haluat helpon tavan, harkitse Linux -distroja, kuten Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD tai SUSE Studio ja SUSE KIWI. Luomasi käyttöjärjestelmä kuuluu kuitenkin yritykselle, joka aloitti palvelun ensimmäisenä (vaikka sinulla on oikeus levittää sitä vapaasti, muokata sitä ja käyttää sitä haluamallasi tavalla GPL: n nojalla).
Varoitus
- Et saa täyttä käyttöjärjestelmää kahden viikon kuluessa. Aloita käynnistettävällä SO: lla ja siirry sitten viileämpiin juttuihin.
- Käyttöjärjestelmän huolimaton kirjoittaminen kiintolevylle voi vahingoittaa sitä kokonaan. Ole varovainen.
- Jos teet jotain, jota ei suositella, kuten kirjoitat satunnaisia tavuja satunnaisiin I/O -portteihin, kaatat käyttöjärjestelmän ja (teoriassa) voi polttaa laitteistosi.
- Älä odota, että käyttöjärjestelmä on helppo rakentaa. On olemassa monia monimutkaisia keskinäisiä riippuvuuksia. Jos esimerkiksi haluat luoda käyttöjärjestelmän, joka kykenee käsittelemään useita suorittimia, muistinhallinnassa on oltava lukitusmekanismi, joka estää useita prosessoreita käyttämästä samaa resurssia samanaikaisesti. Tätä varten käytettävä "lukko" edellyttäisi ajoitusohjelmalta, että vain yksi prosessori käyttää kriittisiä resursseja milloin tahansa ja kaikkien muiden on odotettava. Itse asiassa ajastin riippuu muistinhallinnan läsnäolosta. Tämä on esimerkki umpikujariippuvuudesta. Ei ole olemassa tavanomaista tapaa ratkaista tällaista ongelmaa; jokaisen käyttöjärjestelmän ohjelmoijan odotetaan olevan riittävän taitava tietämään oman tavan käsitellä sitä.
Lisäresurssit
- Ohjeet: Linux from Scratch
- Käynnistyslatain: GRUB
- Virtuaalikoneen sovellukset: Bochs, VM Ware, XM Virtual Box.
- Prosessorin käsikirja: Intel -käyttöopas
- SO -kehittämissivustot: OSDev, OSDever