Operativsystemet lar brukeren samhandle med datamaskinens maskinvare. Systemet består av hundretusenvis av linjer med kode. Vanligvis er operativsystemet laget ved hjelp av programmeringsspråkene C#, C, C ++ og montering. Operativsystemet lar deg bla gjennom datamaskinen mens du lagrer og utfører kommandoer. Tror ikke det er enkelt å lage et operativsystem. Det krever mye kunnskap for å få det til.
Steg
Trinn 1. Lær deg først om programmering
Monteringsspråk er veldig viktig; det anbefales på det sterkeste at du lærer et annet komplementært språk på høyt nivå, for eksempel C-språk.
Trinn 2. Bestem hvilket medium du vil bruke for å laste inn operativsystemet
Dette mediet kan være en CD -stasjon, DVD -stasjon, flash -stasjon, harddisk, diskett eller en annen PC.
Trinn 3. Definer kjernetanken med en SO
For eksempel er kjernen i Windows en brukervennlig GUI og mye sikkerhet.
Trinn 4. Bestem hvilken prosessorplattform operativsystemet ditt vil støtte
IA-32, ARM og x86_64 er de vanligste plattformene for personlige datamaskiner. Så alle er ditt beste valg.
Trinn 5. Bestem deg for om du foretrekker å gjøre alt selv fra bunnen av, eller er det allerede en kjerne du vil bygge på
For eksempel er Linux fra bunnen av et prosjekt for folk som ønsker å bygge sin egen Linux -distro.
Trinn 6. Bestem deg for om du vil bruke din egen oppstartslaster eller en forhåndsbygd, for eksempel Grand Unified Bootloader (GRUB)
Koding av bootloader selv krever omfattende kunnskap om maskinvare og BIOS. Som et resultat kan dette trinnet hindre den faktiske kjerneprogrammeringsplanen.
Trinn 7. Bestem hvilket programmeringsspråk du skal bruke
Det er greit å ha et operativsystem på et språk som Pascal eller BASIC, men du bør bruke C eller Assembly. Montering er svært nødvendig, fordi noen viktige deler av et operativsystem krever det. På den annen side inneholder språket C ++ søkeord som krever annen full SO for å kjøre.
For å kompilere et operativsystem fra C- eller C ++ - kode, vil du selvfølgelig bruke den ene kompilatoren eller den andre. Derfor er det en god idé å konsultere brukerhåndboken/håndboken/dokumentasjonen for C/C ++ - kompilatoren du ønsker, enten den er inkludert i programvaren eller tilgjengelig på distributørens nettsted. Du trenger å vite mange kompliserte ting om kompilatoren, og for C ++ - utvikling må du vite om kompilatorens manglingsopplegg og dets ABI. Det forventes at du forstår de forskjellige kjørbare formatene (ELF, PE, COFF, basic binær, etc.), og forstår at det eksklusive Windows -formatet, PE (.exe), er opphavsrettsbeskyttet
Trinn 8. Definer applikasjonsprogrammeringsgrensesnittet (API)
Et godt API å velge mellom er POSIX ettersom det er godt dokumentert. Alle Unix -systemer har minst delvis støtte for POSIX. Så det bør være enkelt å koble Unix -programmer til operativsystemet.
Trinn 9. Bestem deg for designet ditt
Det er noe som heter en monolitisk kjerne og en mikrokjerne. Monolitiske kjerner implementerer alle tjenester i kjernen, mens mikrokjerner har små kjerner som følger med distribusjonstjenester for brukerdemoner. Generelt er monolitiske kjerner raskere, men mikrokern har bedre feilisolering og pålitelighet.
Trinn 10. Vurder å utvikle og jobbe i et team
På den måten tar det mindre tid å løse flere problemer, noe som sannsynligvis vil øke hastigheten på å bygge et bedre operativsystem.
Trinn 11. Ikke tørk harddisken helt
Husk at sletting av en stasjon vil slette alle dataene på den irreversibelt! Bruk GRUB eller en annen oppstartshåndterer til å starte systemet opp med et annet operativsystem til det er fullt operativt.
Trinn 12. Start i det små
Start med små ting som å vise tekst og pause før du går videre til ting som minnestyring og sammensatt arbeid. Sørg også for at du lager 32 -biters og 64 -biters versjoner.
Trinn 13. Ta en sikkerhetskopi av den siste arbeidskildekoden
Dette trinnet er nyttig som en sikkerhet hvis noe skulle gå galt med den nåværende versjonen av SO eller utvikling. Hvis datamaskinen krasjer og ikke starter, er det en god idé å ha en ny kopi å jobbe med, slik at du kan fikse problemet.
Trinn 14. Vurder å teste det nye operativsystemet med en virtuell maskin
I stedet for å starte datamaskinen på nytt hver gang du gjør endringer eller etter at du har sendt filer fra utviklingsdatamaskinen til testmaskinen, kan du bruke et virtuelt maskinprogram til å kjøre operativsystemet mens det nåværende operativsystemet kjører. Gjeldende VM -applikasjoner inkluderer: VMWare (som også har et serverprodukt gratis), åpen kildekode -alternativer, Bochs, Microsoft Virtual PC (ikke kompatibel med Linux) og Oracle VirtualBox.
Trinn 15. Start "utgivelseskandidaten" eller betaversjonen
Dette trinnet lar brukeren varsle deg om potensielle problemer med operativsystemet.
Trinn 16. Operativsystemet bør også være brukervennlig
Sørg for at du legger til brukervennlige funksjoner, gjør disse til en integrert del av designet ditt.
Tips
- Se etter potensielle dødelåser og andre feil. Bugs, deadlocks og andre problemer vil påvirke byggeprosjektet for operativsystemet ditt.
- Sørg for at du implementerer sikkerhetsfunksjoner som en topp prioritet hvis du vil at systemet skal fungere skikkelig.
- Bruk nettsteder som OSDev og OSDever for å hjelpe deg med å utvikle ditt eget operativsystem. Vær oppmerksom på at for de fleste formål vil OSDev.org -fellesskapet bli mer enn glad hvis du bruker wikien deres, og ikke blir med i forumet. Hvis du bestemmer deg for å bli med i et forum, er det en forutsetning: du må virkelig vite om C eller C ++, og x86 -samlingsspråket. Du bør også forstå generelle og komplekse programmeringskonsepter som koblede lister, køer, etc. OSDev -fellesskapet sier i sine forskrifter eksplisitt at fellesskapet ikke er opprettet for å pleie nye programmerere.
- Ikke bli med med OSDev.org -forumet, og still deretter det åpenbare spørsmålet. Du blir bare bedt om å lese guiden. Les Wikipedia og instruksjonene for utstyret du vil bruke.
- Hvis du prøver å utvikle et operativsystem, regnes du definitivt som "programmeringsguden".
- Du burde også ha lest prosessorhåndboken for prosessorarkitekturen du har valgt; om x86 (Intel), ARM, MIPS, PPC, etc. Manualer for prosessorarkitekturer er enkle å finne ved hjelp av et Google -søk ("Intel manual", "ARM manual", etc.).
- Når alt utviklingsarbeidet er fullført, bestemmer du om du vil frigjøre koden som åpen kode eller opphavsrett.
- Ikke start et operativsystemprosjekt for å begynne å lære programmering. Hvis du ikke vet innvendig og utvendig om C, C ++, Pascal eller et annet passende språk, inkludert pekermanipulering, bitmanipulering på lavt nivå, bitforskyvning, inline monteringsspråk, etc., er du ikke klar for operativsystem utvikling.
- Å lage en helt ny partisjon for å 'utvide' SO kan være et godt alternativ.
- Hvis du vil ha en enkel måte, bør du vurdere Linux -distroer som Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD eller SUSE Studio og SUSE KIWI. Operativsystemet du oppretter tilhører imidlertid selskapet som startet tjenesten først (selv om du har rett til å distribuere det fritt, endre det og kjøre det som du ønsker under GPL).
Advarsel
- Du får ikke et fullt operativsystem innen to uker. Start med en oppstartbar SO, og fortsett til kulere ting.
- Uforsiktig å skrive operativsystemet på en harddisk kan ødelegge det fullstendig. Vær forsiktig.
- Hvis du gjør noe som ikke er anbefalt, for eksempel å skrive tilfeldige byte på tilfeldige I/O -porter, krasjer du operativsystemet, og (i teorien) kan det svi av maskinvaren.
- Ikke forvent at operativsystemet er enkelt å bygge. Det er mange kompliserte gjensidige avhengigheter. For eksempel, for å lage et operativsystem som kan håndtere flere prosessorer, må Memory Manager ha en "låsemekanisme" for å forhindre at flere prosessorer får tilgang til den samme ressursen samtidig. "Låsen" som brukes for dette vil kreve en planlegger for å sikre at bare en prosessor får tilgang til kritiske ressurser til enhver tid, og alle andre må vente. Planleggeren er faktisk avhengig av tilstedeværelsen av Memory Manager. Dette er et eksempel på en blindvei -avhengighet. Det er ingen standard måte å løse denne typen problemer på; Det forventes at hver operativsystemprogrammerer er dyktig nok til å kjenne sin egen måte å håndtere det på.
Tilleggsressurser
- Retningslinjer: Linux From Scratch
- Bootloader: GRUB
- Virtuelle maskinapplikasjoner: Bochs, VM Ware, XM Virtual Box.
- Prosessormanual: Intel -manual
- SO utviklingssteder: OSDev, OSDever