Wkuno

Hvordan lage et operativsystem

Operativsystemer tillate folk å samhandle med maskinvare, er de laget av 10 000 er av 100 er av linjer med kode. De er vanligvis laget med følgende programmeringsspråk: C, C + + og Assembly.

Trinn

Hvordan lage et operativsystem. Lær programmering før du begynner.
Hvordan lage et operativsystem. Lær programmering før du begynner.
  1. 1
    Lær programmering før du begynner. Montering Språk er viktig, er en annen supplerende lavt nivå språk som C anbefales sterkt.
  2. 2
    Bestem hvilke medier du ønsker å laste OS på. Det kan være en diskett, CD-stasjon, DVD-stasjon, flash-stasjon, en harddisk, eller en annen PC.
  3. 3
    Bestem deg hva du vil at OS å gjøre. Enten det er en fullt i stand OS med et grafisk brukergrensesnitt (GUI) eller noe litt mer minimalistisk, må du vite hvilken retning du tar det før du begynner.
  4. 4
    Målrette hva prosessor plattform operativsystemet vil støtte. Hvis du er usikker, er det beste alternativet for å målrette X86 (32 bit) prosessor plattform, som de fleste datamaskiner bruker X86 plattform prosessorer.
  5. 5
    Bestem om du heller vil gjøre alt selv fra grunnen av, eller om det er en eksisterende kjerne du ønsker å bygge på toppen av. Linux from Scratch er et prosjekt for de som ønsker å bygge sin egen Linux-distro, for eksempel. Se tips for en ekstern link.
  6. 6
    Bestem om du skal bruke din egen bootloader eller en pre-laget en slik som grand enhetlig bootloader (GRUB). Mens koding din egen bootloader vil gi mye kunnskap om hardware og BIOS, kan det sette deg tilbake på programmering av selve kjernen. Se tips.
  7. 7
    Bestem hva programmeringsspråk å bruke. Selv om det er mulig å lage et operativsystem i et språk som Pascal eller BASIC, vil du være bedre å bruke C eller forsamling. Assembly er helt nødvendig, ettersom noen vitale deler av et operativsystem krever det. C + +, på den annen side, inneholder søkeord som trenger en annen fullt bygget OS å løpe.
    • For å kompilere et operativsystem fra C eller C + +-kode, vil du selvsagt bruke en kompilator eller en annen. Du bør derfor lese brukerveiledningen / manuals / dokumentasjon for valgt C / C + + kompilator, enten det kommer pakket med programvaren eller finnes på distributørens hjemmeside. Du må vite mange intrikate ting om kompilatoren din og, for C + + utvikling, bør du vite om kompilator mangling ordningen og dens ABI. Du forventes å forstå de ulike kjørbare formater (ELF, PE, COFF, vanlig binær, etc.), og forstå at Windows proprietært format, PE (. Exe), er opphavsrettslig beskyttet.
  8. 8
    Bestem på programmeringsgrensesnitt (API). En god API til å velge er POSIX, som er godt dokumentert. Alle Unix-systemer har minst delvis støtte for POSIX, så det ville være trivielt å porte Unix programmer til OS.
  9. 9
    Bestem på design. Det er monolittiske kjerner og microkernels. Monolittiske kjerner gjennomføre alle tjenester i kjernen, mens microkernels har en liten kjerne kombinert med brukernes demoner implementere tjenester. Generelt, monolittiske kjerner er raskere, men microkernels har bedre feilisolering og pålitelighet.
  10. 10
    Vurdere å utvikle jobbe i et team. På den måten blir mindre tid som kreves for å løse flere problemer, produsere et bedre OS.
  11. 11
    Ikke tømme harddisken fullstendig. Husk, vil tørke stasjonen tømme ut alle dine data, og er irreversible! Bruk GRUB eller annen boot manager til dual-boot system med et annet OS til din er fullt funksjonell.
  12. 12
    Begynne i det små. Begynn med små ting som visning av tekst og avbryter før du går videre til ting som minnehåndtering og multitasking.
  13. 13
    Beholde en sikkerhetskopi av den siste arbeidsdag kilde. I tilfelle noe går fryktelig galt med den nåværende versjonen eller din utvikling PC krasjer og ikke klarer å starte opp, er det en utmerket idé å ha en ekstra kopi for å arbeide med / feilsøke.
  14. 14
    Vurdere å teste det nye operativsystemet med en virtuell maskin. Snarere enn å restarte maskinen hver gang du gjør endringer eller å måtte overføre filene fra din utvikling datamaskinen til test-maskin, bruker du en virtuell maskin program for å kjøre OS mens din nåværende OS er fremdeles i gang. VM bruksområder er VMWare (som også har en fritt tilgjengelig server produkt), open-source alternative Bochs, Microsoft Virtual PC (ikke kompatibelt med Linux), og xVM VirtualBox. Se tips for mer informasjon.
  15. 15
    Slipp en "release candidate". Dette vil tillate brukere å fortelle deg om potensielle problemer med operativsystemet.
  16. 16
    Et operativsystem kan være brukervennlig også.

Tips

  • Hvis du ønsker en enkel måte, bør du vurdere Linux distroer som Fedora Revisor, Custom kvikk X, Puppy Remaster, PCLinuxOS mklivecd, eller SUSE Studio og SUSE KIWI. Men tilhører operativsystemet du oppretter til selskapet som startet tjenesten først (selv om du har rett til å distribuere det fritt, endre det og kjøre det slik du vil under GPL).
  • Ikke start et operativsystem prosjekt for å begynne å lære programmering. Nei Uh-uh. Ikke. Hvis du ikke allerede vet C, C + +, Pascal, eller et annet egnet språk innsiden ut, inkludert pekeren manipulasjon, lavt nivå bit manipulasjon, litt skiftende, inline assembly, etc., er du ikke klar for operativsystemet utvikling.
  • Etter all utvikling er gjort, bestemme om du vil frigi koden som åpen kildekode, eller proprietære.
  • Det kan være et godt valg for å lage en helt ny partisjon for å utvikle OS.
  • Se etter potensielle vranglåser og andre bugs. Bugs, deadlocks og andre problemer vil påvirke din Operating System prosjektet.
  • Bruk nettsteder som OSDev og OSDever å hjelpe deg med å utvikle ditt eget operativsystem. Vær oppmerksom godt at for de fleste formål, ville OSDev.org samfunnet foretrekker at du holder deg til å bruke deres wiki, og ikke delta i forumet. Hvis du bestemmer deg for å delta i forumet, det er en forutsetning: Du er pålagt å grundig vet C eller C + +, og x86 Assembly språk. Du må også forstå generelle, og kompleks programmering konsepter som lenkede lister, køer, osv. OSDev samfunnet, i sine regler, eksplisitt uttrykk for at samfunnet er ikke rundt å være barnevakt nye programmerere. Hvis du prøver å utvikle et operativsystem, sier det seg selv at du er forventet å være et programmeringsspråk "gud". Du er også pålagt å ha lest prosessoren håndbøkene for prosessor arkitektur du har valgt, enten x86 (Intel), ARM, MIPS, PPC osv. manualer for en prosessor arkitektur kan lett bli funnet ved hjelp av et Google-søk ("Intel Bruksanvisninger "," Har ARM manualer "etc). ikke delta i OSDev.org fora og begynne å spørre åpenbare spørsmål. Det vil bare resultere i "Les f *** ing Manual" svar. Du bør prøve å lese Wikipedia, og håndbøker for de ulike verktøyene du ønsker å bruke.
  • For mer informasjon, se disse kildene.

Advarsler

  • Du vil ikke ha en full system i to uker. Begynn med et OS som støvler, deretter gå videre til kule ting.
  • Hvis du gjør noe virkelig dumt, liker skrive tilfeldige bytes til tilfeldige I / O-porter, vil du krasje operativsystemet ditt, og kan (i teorien) yngel maskinvaren.
  • Pass på å implementere sikkerhetsfunksjoner som topp prioritet hvis du noen gang ønsker å bruke det til noe.
  • Å ha operativsystemet uforsiktig skrevet til harddisken kan ødelegge det helt. Vær forsiktig.
  • Ikke forvent at en skikkelig operativsystem vil være lett å bygge. Det er massevis av ganger, intrikate avhengighetsforhold. For eksempel, for å gjøre et operativsystem i stand til å håndtere flere prosessorer, må minnestyreren har "låse" mekanismer på plass for å hindre flere prosessorer får tilgang til samme ressurs samtidig. Den "låser" som brukes til dette vil kreve tilstedeværelse av en planlegger å sørge for at bare én prosessor tilgang til en kritisk ressurs til enhver tid og alle de andre er laget for å vente. Likevel planleggeren avhenger av tilstedeværelsen av en Memory Manager. Dette er et tilfelle av en fastlåst avhengighet. Det er ingen standard måte å løse problemer som dette; hvert operativsystem programmerer er forventet å være dyktig nok til å finne ut sin egen måte å håndtere det.

Ting du trenger

  • En god maskin
  • En CPU for arkitekturen vil være å utvikle
  • Nok hukommelse (RAM) på en virtuell maskin
  • En "vert" OS (brukes til å utvikle assembler (og andre) kildekode samt bygge og pakke den mens den er i en tidlig fase, til slutt ditt eget OS kan være sin host)
  • Syntaks-farging kode editor (bruke hvis du ikke har noen Integrated Development Environment)
  • En kompilator
  • En CD / DVD-stasjon