Operativsystemet tillader brugeren at interagere med computerens hardware. Systemet består af hundredtusinder af kodelinjer. Normalt er operativsystemet lavet ved hjælp af C#, C, C ++ og samlingsprogrammeringssprog. Operativsystemet giver dig mulighed for at gennemse din computer, mens du gemmer og udfører kommandoer. Tror ikke det er let at oprette et operativsystem. Det kræver meget viden at lave det.
Trin
Trin 1. Først og fremmest lære om programmering
Samlingssprog er meget vigtigt; Det anbefales stærkt, at du lærer et andet komplementært sprog på højt niveau, f.eks. C-sprog.
Trin 2. Beslut, hvilket medie du vil bruge til at indlæse operativsystemet
Dette medie kan være et cd -drev, dvd -drev, flashdrev, harddisk, diskette eller en anden pc.
Trin 3. Definer kerneidéen med en SO
For eksempel på Windows er kerneidéen en brugervenlig GUI og masser af sikkerhed.
Trin 4. Bestem, hvilken processorplatform dit operativsystem understøtter
IA-32, ARM og x86_64 er de mest almindelige platforme til personlige computere. Så dem alle er dit bedste valg.
Trin 5. Beslut, om du foretrækker at gøre alt selv fra bunden, eller er der allerede en kerne, som du gerne vil bygge på
For eksempel er Linux fra bunden et projekt for folk, der ønsker at bygge deres egen Linux -distro.
Trin 6. Beslut, om du vil bruge din egen boot-loader eller en forudbygget en, f.eks. Grand Unified Bootloader (GRUB)
Kodning af bootloaderen selv kræver omfattende viden om hardware og BIOS. Som følge heraf kan dette trin forhindre den egentlige kernelprogrammeringsplan.
Trin 7. Beslut, hvilket programmeringssprog der skal bruges
Det er fint at have et operativsystem på et sprog som Pascal eller BASIC, men du skal bruge C eller Assembly. Montering er meget nødvendig, fordi nogle vigtige dele af et operativsystem kræver det. På den anden side indeholder C ++ - sproget søgeord, der kræver anden fuld SO for at køre.
For at kompilere et operativsystem ud fra C- eller C ++ - kode bruger du naturligvis den ene kompiler eller den anden. Derfor er det en god idé at konsultere brugervejledningen/manualen/dokumentationen til C/C ++ - kompilatoren efter eget valg, uanset om den er inkluderet i softwaren eller tilgængelig på distributørens websted. Du skal vide en masse komplicerede ting om kompilatoren, og for C ++ - udvikling skal du vide om kompilatorens manglingsplan og dens ABI. Du forventes at forstå de forskellige eksekverbare formater (ELF, PE, COFF, basic binær osv.) Og forstå, at det eksklusive Windows -format, PE (.exe), er ophavsretligt beskyttet
Trin 8. Definer din applikationsprogrammeringsgrænseflade (API)
En god API at vælge imellem er POSIX, da den er veldokumenteret. Alle Unix -systemer har i det mindste delvis understøttelse af POSIX. Så det skulle være let at forbinde Unix -programmer til dit operativsystem.
Trin 9. Beslut dig om dit design
Der er sådan noget som en monolitisk kerne og en mikrokerne. Monolitiske kerner implementerer alle tjenester i kernen, mens mikrokerner har små kerner sammen med implementeringstjenester for brugerdæmon. Generelt er monolitiske kerner hurtigere, men mikrokerne har bedre fejlisolering og pålidelighed.
Trin 10. Overvej at udvikle og arbejde i et team
På den måde tager det mindre tid at løse flere problemer, hvilket sandsynligvis vil fremskynde opbygningen af et bedre operativsystem.
Trin 11. Tør ikke din harddisk helt
Husk, at sletning af et drev sletter alle data om det irreversibelt! Brug GRUB eller en anden bootmanager til at starte systemet op med et andet operativsystem, indtil dit operativsystem er fuldt funktionsdygtigt.
Trin 12. Start i det små
Start med små ting som at vise tekst og pause, inden du går videre til ting som hukommelsesstyring og sammensat arbejde. Sørg også for, at du laver 32 bit og 64 bit versionerne.
Trin 13. Gem en sikkerhedskopi af den sidste arbejdskildekode
Dette trin er nyttigt som en sikkerhedsforanstaltning, hvis noget går galt med den nuværende version af SO eller udvikling. Hvis din computer går ned og ikke starter, er det en god idé at have en anden kopi at arbejde med, så du kan løse problemet.
Trin 14. Overvej at teste dit nye operativsystem med en virtuel maskine
I stedet for at genstarte din computer, hver gang du foretager ændringer eller efter at have sendt filer fra din udviklingscomputer til din testmaskine, kan du bruge en virtuel maskine -applikation til at køre dit operativsystem, mens dit nuværende operativsystem kører. Aktuelle VM -applikationer inkluderer: VMWare (som også har et serverprodukt gratis), open source -alternativer, Bochs, Microsoft Virtual PC (ikke kompatibel med Linux) og Oracle VirtualBox.
Trin 15. Start "frigivelseskandidaten" eller betaversionen
Dette trin giver brugeren mulighed for at underrette dig om potentielle problemer med dit operativsystem.
Trin 16. Operativsystemet skal også være brugervenligt
Sørg for at tilføje brugervenlige funktioner, gør disse til en integreret del af dit design.
Tips
- Kontroller, om der er potentielle dødelåse og andre fejl. Bugs, deadlocks og andre problemer vil påvirke dit operativsystems byggeprojekt.
- Sørg for at implementere sikkerhedsfunktioner som en topprioritet, hvis du vil have systemet til at køre korrekt.
- Brug websteder som OSDev og OSDever til at hjælpe dig med at udvikle dit eget operativsystem. Bemærk venligst, at OSDev.org -samfundet til de fleste formål vil være mere end glad, hvis du bruger deres wiki og ikke tilmelder dig forummet. Hvis du beslutter dig for at deltage i et forum, er der en forudsætning: du skal virkelig kende til C eller C ++ og x86 -samlingsproget. Du bør også forstå generelle og komplekse programmeringskoncepter som sammenkædede lister, køer osv. OSDev -samfundet siger i sine regler eksplicit, at dets fællesskab ikke er skabt til at pleje nye programmører.
- Deltag ikke med OSDev.org forum og derefter stille det indlysende spørgsmål. Du bliver kun bedt om at læse vejledningen. Læs Wikipedia og instruktionerne for det udstyr, du vil bruge.
- Hvis du forsøger at udvikle et operativsystem, betragtes du bestemt som programmeringens "gud".
- Du skulle også have læst processormanualen til den processorarkitektur, du har valgt; om x86 (Intel), ARM, MIPS, PPC osv. Manualer til processorarkitekturer er lette at finde ved hjælp af en Google -søgning ("Intel -manual", "ARM -manual" osv.).
- Når alt udviklingsarbejde er afsluttet, skal du beslutte, om du vil frigive koden som åben kode eller ophavsretligt.
- Start ikke et operativsystemprojekt for at begynde at lære programmering. Hvis du ikke ved inde og ude om C, C ++, Pascal eller et andet passende sprog, herunder markørmanipulation, bit-manipulation på lavt niveau, bitskift, inline-montagesprog osv., Er du ikke klar til operativsystem udvikling.
- Oprettelse af en helt ny partition for at 'udvide' SO kan være en god mulighed.
- Hvis du vil have en let måde, kan du overveje Linux -distroer som Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS Mk LiveCD eller SUSE Studio og SUSE KIWI. Men det operativsystem, du opretter, tilhører det firma, der først startede tjenesten (selvom du har ret til frit at distribuere det, ændre det og køre det som du ønsker under GPL).
Advarsel
- Du får ikke et fuldt operativsystem inden for to uger. Start med en bootbar SO, og gå derefter videre til køligere ting.
- Uforsigtigt at skrive dit operativsystem på en harddisk kan skade det fuldstændigt. Vær forsigtig.
- Hvis du gør noget, der ikke anbefales, som f.eks. At skrive tilfældige bytes på tilfældige I/O -porte, vil du gå ned på dit operativsystem, og (i teorien) kunne svide din hardware.
- Forvent ikke, at operativsystemet er let at bygge. Der er mange komplicerede indbyrdes afhængigheder. For eksempel for at oprette et operativsystem, der er i stand til at håndtere flere processorer, skal din Memory Manager have en "låsemekanisme" for at forhindre flere processorer i at få adgang til den samme ressource på samme tid. Den "lås", der bruges til dette, ville kræve en planlægger at sikre, at kun en processor til enhver tid får adgang til kritiske ressourcer, og alle andre skal vente. Faktisk afhænger planlæggeren af tilstedeværelsen af Memory Manager. Dette er et eksempel på en blindgydeafhængighed. Der er ingen standard måde at løse denne form for problem på; hver operativsystemprogrammerer forventes at være dygtig nok til at kende sin egen måde at håndtere det på.
Yderligere ressourcer
- Retningslinjer: Linux From Scratch
- Bootloader: GRUB
- Virtuelle maskinapplikationer: Bochs, VM Ware, XM Virtual Box.
- Processor manual: Intel manual
- SO udviklingssteder: OSDev, OSDever