Hur man skapar ett datoroperativsystem?

1. Ta några datavetenskapskurser.
2. Lär dig ett programmeringsspråk på hög nivå på avancerad nivå.
3. Lär dig ett monteringsspråk på låg nivå.
4. Slutför en handledning för operativsystem.
5. Planera ditt operativsystem.
6. Skapa din programmeringsmiljö.
7. Bygg och testa.
8. Släpp en släppkandidat.

Att skriva ett operativsystem från grunden kräver ett starkt kunnande inom datavetenskap
Att skriva ett operativsystem från grunden kräver ett starkt kunnande inom datavetenskap, ett programmeringsspråk som C eller C ++, montering och kodhantering.

Den här guiden lär dig hur du planerar och utvecklar ett operativsystem om du inte vet hur du kodar. Operativsystem hanterar datorhårdvara och tillhandahåller de resurser som applikationer behöver köras. Att skriva ett operativsystem från grunden kräver ett starkt kunnande inom datavetenskap, ett programmeringsspråk som C eller C ++, montering och kodhantering.

Del 1 av 2: lära dig grunderna

  1. 1
    Ta några grundläggande datavetenskapskurser. Till skillnad från att utvecklas för webben kräver att man skapar ett operativsystem en stark förståelse för algoritmer, datastrukturer, datorhårdvara och resurshantering. Människor får examen i det här, så förvänta dig inte att skriva ett helt operativsystem efter att ha läst en onlinehandledning! Harvards Intro to computer science- kurs är tillgänglig online via EDX utan kostnad.
  2. 2
    Lär dig ett programmeringsspråk på hög nivå som C. När du väl har en grundläggande förståelse för datavetenskap är nästa steg att behärska C och / eller C ++. Som att lära sig om datavetenskap är det inte valfritt att behärska ett språk - du kommer inte att kunna koda ett operativsystem om du inte kan skriva solida applikationer.
  3. 3
    Lär dig ett monteringsspråk. Monteringsspråk är språk på låg nivå som är utformade för att kommunicera med olika processorer. Eftersom montering är olika för olika processortyper (t.ex. x86-monteringsspråk för Intel, AMD, VIA och andra processorer) måste du lära dig versionen för den typ av processor du kodar för.
    • Denna öppen källkodsbok, om den läses i sin helhet, kan ge dig tillräckligt god förståelse för att bygga ett operativsystem.
    • Konsten att montera språk är en starkt rekommenderad bok om montering tillgänglig både på och offline.
    • Du bör också göra en hel del forskning om vilken typ av processorer som ditt operativsystem ska köras på. Handböckerna för processorarkitektur kan enkelt hittas med hjälp av en Google-sökning ("Intel Manuals", "ARM manuals", etc.).
  4. 4
    Slutför en handledning för operativsystem. OS-självstudier guidar dig genom processen att skapa ett grundläggande operativsystem. Detta vänjer dig vid processen och hjälper dig att räkna ut om det finns några bitar du saknar. När du har slutfört en självstudie eller två kommer du på god väg att skapa ditt eget operativsystem.
    • Bare bones är en handledning som hjälper dig att skriva din första enkla 32-bitars kärna. Efter att ha slutfört handledningen är nästa steg att använda Meaty skeleton för att strukturera ditt eget operativsystem.
    • Linux från grunden är en onlinebok som guidar dig genom att skapa ditt eget Linux-operativsystem.
    • Operativsystem från 0 till 1 är en gratisbok om att skapa olika operativsystem från början till slut.
    Kärnan är kärnan i ditt operativsystem
    Kärnan är kärnan i ditt operativsystem och ger ett gränssnitt mellan användaren och datorns maskinvara.
  5. 5
    Ta reda på dina operativsystemsmål. Vad vill du att ditt operativsystem ska göra? Hur ska det se ut? Behöver du verkligen skriva ett helt operativsystem eller vill du bara skapa ett visst utseende för ditt skrivbord? Det här är allt du bör tänka på innan du börjar koda.
    • Överväg att utveckla med ett team av andra programmerare. Att ha ett team av utvecklare som arbetar med projektet kommer att minska utvecklingstiden avsevärt.
    • Lägg till dina projektmål, planer och frågor i ditt offentliga arkiv så att det är lätt för andra att hjälpa dig.

Del 2 av 2: bygga ditt operativsystem

  1. 1
    Välj en utvecklingsmiljö. Det här är plattformen du kommer att använda för att koda ditt nya operativsystem. Det är en fråga om personlig preferens, men de flesta använder antingen Windows eller en smak av UNIX. Om du använder Windows är det en bra idé att installera en UNIX-miljö som Cygwin eller MinGW. I allmänhet vill du se till att vilken miljö du använder innehåller följande:
    • GCC (GNU-kompilatorn). Om du använder Windows kan du installera det i Cygwin eller MinGW.
    • Binutils är en samling verktyg som används för att manipulera objektfiler. Återigen, om du använder Windows kan du installera det i Cygwin.
    • En bra textredigerare. Vim och emacs används ofta i UNIX-miljöer. Windows-användare kan använda Notepad eller kolla in Notepad ++ för en uppgradering med flera flikar.
    • Perl och / eller Python. En eller båda rekommenderas för strängmanipulation.
  2. 2
    Ställ in ditt versionskontrollsystem. Att skriva ett operativsystem betyder att du troligen kommer att skapa hundratals (eller tusentals!) Kodrader. När du arbetar med revisioner kan det bli förvirrande. Några alternativ att kolla in är CVS, Mercurial och Subversion.
  3. 3
    Bestäm en startladdare. Om du inte vill skapa din egen kan du använda en befintlig som Grand unified bootloader (GRUB). Om du känner dig vågad för att koda en bootloader, kolla in Rolling your own bootloader på OSDev.org.
  4. 4
    Välj en kärndesign. Kärnan är kärnan i ditt operativsystem och ger ett gränssnitt mellan användaren och datorns maskinvara. Det finns monolitiska kärnor och mikrokärnor. Monolitiska kärnor implementerar alla tjänster i kärnan, medan mikrokerneler har en liten kärna i kombination med användardemoner som implementerar tjänster. I allmänhet är monolitiska kärnor snabbare, men mikrokerner har bättre felisolering och tillförlitlighet.
  5. 5
    Börja smått. Börja med små saker som att visa text och avbryta innan du går vidare till saker som minneshantering och multitasking. Du kan också försöka skapa ett enkelt 16-bitars operativsystem istället för att ta ett stort steg.
    • Du kommer inte att ha ett fullständigt system på två veckor. Börja med ett operativsystem som startar och fortsätt sedan till de coola grejerna.
    Som att lära sig om datavetenskap är det inte valfritt att behärska ett språk - du kommer inte att kunna
    Som att lära sig om datavetenskap är det inte valfritt att behärska ett språk - du kommer inte att kunna koda ett operativsystem om du inte kan skriva solida applikationer.
  6. 6
    Testa ditt nya operativsystem med en virtuell maskin. Snarare än att starta om datorn varje gång du gör ändringar eller måste överföra filerna från din utvecklingsdator till din testmaskin, använd en applikation för virtuell maskin. Vmware är ett vanligt alternativ som fungerar med både Windows och Linux, och det är Bochs också. Kontrollera om det finns potentiella blockeringar och andra buggar och reparera dem efter behov.
  7. 7
    Släpp en "release-kandidat. " Du kan göra detta genom att ladda upp din testade kod till ditt offentliga arkiv. Detta gör det möjligt för människor att testa ditt operativsystem och rapportera tillbaka om alla problem de stöter på.
  8. 8
    Nätverk med andra operativsystemutvecklare. Det finns en hel grupp av operativsystemutvecklare som samlas på olika forum, inklusive / r / osdev på Reddit och Software Engineering Stack Exchange. En du har fått grepp om att utveckla ett grundläggande operativsystem, läs befintliga inlägg för att se vilken typ av saker som dyker upp under utvecklingsprocessen.

Tips

  • Var noga med att implementera säkerhetsfunktioner som din högsta prioritet om du någonsin vill att ditt system ska vara livskraftigt.
  • När all utveckling är klar bestämmer du om du vill släppa koden som öppen källkod eller som proprietär.
  • Gå inte med i OSDev.org-forumen och börja ställa uppenbara frågor. Det resulterar helt enkelt i "Läs manualen". Du bör försöka läsa Wikipedia och manualerna för de olika verktygen du vill använda.
  • Starta inte ett operativsystemsprojekt för att börja lära in programmering. Om du inte redan känner till C, C ++, Pascal eller något annat lämpligt språk inifrån och ut, inklusive pekmanipulation, lågnivåbitmanipulering, bitförskjutning, inbyggt monteringsspråk etc. är du inte redo för operativsystemsutveckling.
    Till skillnad från att utvecklas för webben kräver att man skapar ett operativsystem en stark förståelse
    Till skillnad från att utvecklas för webben kräver att man skapar ett operativsystem en stark förståelse för algoritmer, datastrukturer, datorhårdvara och resurshantering.
  • Ett operativsystem kan också vara användarvänligt. Se till att lägga till användarvänliga funktioner, vilket gör dessa till en integrerad del av din design.
  • För att ett operativsystem ska kunna hantera flera processorer måste din Memory Manager ha "låsmekanismer" på plats för att förhindra att flera processorer får åtkomst till samma resurs samtidigt. De "lås" som används för detta kommer att kräva närvaron av en schemaläggare för att se till att endast en processor får åtkomst till en kritisk resurs vid varje given tidpunkt och alla andra får vänta. Ändå beror schemaläggaren på närvaron av en Memory Manager. Detta är ett fall av dödlåst beroende. Det finns inget vanligt sätt att lösa sådana problem; som programmerare förväntas du vara tillräckligt skicklig för att räkna ut hans eget sätt att hantera det.
  • Om du gör något dåligt, som att skriva slumpmässiga byte till slumpmässiga I / O-portar, kommer du att krascha ditt operativsystem och kan (i teorin) steka din hårdvara.

Frågor och svar

  • Hur lång tid skulle det ta att bygga ett nytt operativsystem?
    Det skulle ta månader om inte år att skapa ett operativsystem som fungerar ordentligt med mycket funktionalitet. Det finns inget möjligt sätt att laga ett operativsystem på några veckor eller dagar.
  • Kan jag slå samman operativsystemen Windows och Android?
    Du kan, men de är båda två olika operativsystem och det skulle kräva mycket programmeringserfarenhet och arbete. Således, såvida du inte kan göra programmeringen, försök inte det.
  • Hur kan jag slå samman Windows- och Android-operativsystem?
    Windows är ett ostrukturerat operativsystem, för att inte tala om att det inte är öppen källkod, att lägga till funktionalitet i Windows är en ganska tuff uppgift. Medan Android kan sägas vara en variant av Linux, ett strukturerat operativsystem med öppen källkod, är det enkelt att lägga till funktionslager, men för många lager resulterar i dålig användarupplevelse. Tillbaka till frågan, det skulle säkert kräva att du har omfattande kunskaper om Android (du kan prova att laga en Android-rom) och insider-kunskap om hur vissa kärnkomponenter i Windows fungerar, så vad får du efter att ha slagit samman dessa två operativsystem, kommer det vara strukturerad eller ostrukturerad, till att börja med? Det är för mycket tvetydighet!
  • Vilka är några viktiga färdigheter för att utveckla ett operativsystem?
    Du behöver MYCKET kunskap om montering och ett språk på låg nivå, till exempel C. Du behöver också omfattande kunskaper om minneshantering och måste kunna hantera anslutningar till enheter och kringutrustning.
  • Vilka applikationer kan jag använda för att programmera mitt operativsystem?
    Det beror på det programmeringsspråk du använder. Det rekommenderas dock att använda en IDE eller integrerad utvecklingsmiljö för att programmera ditt operativsystem, eftersom IDE har inbyggda verktyg och funktioner för att underlätta utvecklingen. Inte alla IDE stöder dock alla språk, så du vill söka specifikt efter IDE som stöder språket (eller språken) du använder.
  • Vad ska vara mitt första steg?
    Lär dig programmeringsspråk och begrepp, och öva på att bli en mycket stark programmerare.
  • Kan jag skapa ett operativsystem med bara Java?
    Ja, någon har gjort det tidigare. Men om du vill att folk ska använda ditt operativsystem, använd inte java. Det tar inte bara mycket, mycket längre tid, men det kommer inte heller att vara lika bra som ett operativsystem gjort från ett annat kodningsspråk. Så du kan, ja, men borde du? Antagligen inte.
  • Kan jag göra detta om jag inte har någon programmeringserfarenhet?
    Bara om du är villig att lära dig mycket. Du kommer att kräva en fullständig förståelse av åtminstone församlingskod och motivation att lära dig mer. Att bygga ditt eget operativsystem är inte en liten uppgift.
  • Kan du ge mig mer information om grafik och var jag ska börja?
    Du kan skapa grafiken själv och du kan börja när som helst och var du vill. Allt du behöver är lite programmeringskunskap och lite programvara att programmera den med. Om du inte är säker på vad du ska göra kan det vara bra att göra en onlinehandledning med platser som Code Academy eller Khan Academy.
  • Är kodning av min egen kärna bättre än att använda en befintlig kärna?
    Att få en källa med öppen källkod är bättre än att koda en om du är i uni eller något för att du inte behöver börja från grunden eller betala för den eftersom den är öppen källkod. Kodning bevisar dock en högre kunskap inom programmering, vilket du kanske föredrar.

Kommentarer (6)

  • leannewatson
    Jag lärde mig hur ett operativsystem skapas. Tack.
  • uchapman
    Jag gillar stegen, tipsen och varningarna. Dessa tre saker hjälper dig med. Tack, guide, för att ge oss denna kunskap.
  • ijohnson
    Jag vill skapa ett operativsystem. Jag kan vissa programmeringsspråk, men det är allt.
  • ulindberg
    Jag trodde inte att en guideartikel någonsin skulle vara seriös!
  • solbritt23
    Det specificerade för mig vad jag skulle göra för det.
  • elina80
    Mycket detaljerad och gjorde ett bra jobb, med steg för steg-handledning.
FacebookTwitterInstagramPinterestLinkedInGoogle+YoutubeRedditDribbbleBehanceGithubCodePenWhatsappEmail