Operativsystem tillåta människor att interagera med hårdvara, de är gjorda av 10000-tals 100-tals rader kod. De är oftast gjorda med följande programmeringsspråk: C, C + + och Assembly.
Steg
- 1Lär programmering innan du börjar. Assembler är viktigt, är en annan extra låg nivå språk såsom C rekommenderas starkt.
- 2Bestäm vad media du vill ladda ditt OS på. Det kan vara en diskett, CD-enhet, DVD-enhet, flash-enhet, en hårddisk eller en annan dator.
- 3Bestäm vad du vill att ditt OS att göra. Oavsett om det är en fullt kapabel OS med ett grafiskt användargränssnitt (GUI) eller något lite mer minimalistisk, måste du veta vilken riktning du tar det innan du börjar.
- 4Rikta vilken processor plattform operativsystemet kommer att stödja. Om du är osäker, är din bästa insats för att rikta X86 (32 bitar) processor plattform, som de flesta datorer använder x86-processorer.
- 5Bestäm om du hellre vill göra allt själv från grunden, eller om det finns en befintlig kärna du vill bygga ovanpå. Linux från grunden är ett projekt för dem som vill bygga sin egen Linux-distributioner, till exempel. Se Tips för en extern länk.
- 6Bestäm om du ska använda din egen bootloader eller en pre-created ett exempel Grand Unified Bootloader (GRUB). Medan kodning din egen bootloader kommer att ge en hel del kunskap om hårdvara och BIOS, kan det ställa dig tillbaka på planeringen av själva kärnan. Se tips.
- 7Bestäm vad programmeringsspråk att använda. Även om det är möjligt att skapa ett operativsystem på ett språk som Pascal eller BASIC, kommer du vara bättre med C eller församling. Församlingen är absolut nödvändigt, eftersom vissa vitala delar av ett operativsystem kräver det. C + +, däremot, innehåller nyckelord som behöver annan helbyggda OS att köra.
- För att kompilera ett operativsystem från C eller C + +-kod, du kommer naturligtvis att använda en kompilator eller annat. Du bör därför läsa manualen / manualer / dokumentation för din valda C / C + + kompilator, oavsett om den kommer paketerad med programvaran eller finns på leverantörens webbplats. Du kommer att behöva veta många intrikata saker om din kompilator och, för C + + utveckling, bör du veta om kompilatorns mangling systemet och dess ABI. Du förväntas förstå de olika körbara format (ELF, PE, COFF, vanligt binärt, etc.), och förstå att Windows eget format, PE (. Exe), har tagits copyrightt på.
- 8Bestäm din application programming interface (API). En bra API för att välja är POSIX, som är väl dokumenterad. Alla Unix-system har åtminstone delvis stöd för POSIX, så det vore trivialt att port Unixprogram till ditt OS.
- 9Bestäm din design. Det finns monolitiska kärnor och microkernels. Monolitiska kärnor genomföra alla tjänster i kärnan, medan microkernels har en liten kärna i kombination med användarnas demoner genomföra tjänster. I allmänhet, monolitiska kärnor är snabbare, men microkernels har bättre felisolering och tillförlitlighet.
- 10Överväga att utveckla arbeta i team. På så sätt krävs mindre tid krävs för att lösa fler problem, som producerar ett bättre OS.
- 11Torka inte din hårddisk helt. Kom ihåg, kommer torka enheten rensa ut alla dina uppgifter och är oåterkalleligt! Använd GRUB eller annan starthanterare att dual-boota ditt system med ett annat OS tills din är fullt fungerande.
- 12Börja i liten skala. Börja med små saker som att visa text och avbryter innan vi går vidare till saker såsom minneshantering och multitasking.
- 13Behåll en säkerhetskopia av den sista arbetsdagen källan. Om något går fruktansvärt fel med den aktuella versionen eller din utveckling kraschar PC och kan inte starta, är det en utmärkt idé att ha en andra kopia att arbeta med / felsöka.
- 14Överväga att testa din nya operativsystemet med en virtuell maskin. Hellre än att starta om datorn varje gång du gör ändringar eller behöva överföra filer från din utveckling dator till din test maskin, använder du en virtuell maskin program att köra OS medan din nuvarande OS är fortfarande igång. VM applikationer inkluderar VMWare (som också har en fritt tillgänglig server produkt), öppen källkod Bochs alternativa, Microsoft Virtual PC (ej kompatibel med Linux), och xVM VirtualBox. Se Tips för mer information.
- 15Släpp en "release kandidat." Detta kommer att tillåta användare att berätta om eventuella problem med ditt operativsystem.
- 16Ett operativsystem kan vara användarvänlig också.
Tips
- Om du vill ha ett enkelt sätt, överväga Linux distributioner som Fedora Revisor, Custom Nimble X, Puppy Remaster, PCLinuxOS mklivecd, eller SUSE Studio och SUSE KIWI. Dock hör det operativsystem du skapar till företaget som startade tjänsten först (om du har rättigheter att distribuera den fritt, ändra den och köra den hur du vill under GPL).
- Starta inte ett projekt operativsystemet för att börja lära programmering. Nej Uh-uh. Gör inte. Om du inte redan vet C, C + +, Pascal, eller något annat lämpligt språk inifrån och ut, inklusive pekare manipulation, låg-nivå bit manipulation, lite skiftande, inline assembler, etc., är du inte redo för operativsystemet utveckling.
- Efter all utveckling sker, bestämma om du vill släppa koden som open source, eller egenutvecklade.
- Det kan vara ett bra val att göra en helt ny partition för att utveckla operativsystemet.
- Kontrollera om eventuella låsningar och andra småkryp. Buggar, låsningar och andra problem kommer att påverka ditt projekt operativsystem.
- Använd webbplatser som OSDev och OSDever att hjälpa dig att utveckla ditt eget operativsystem. Observera även att för de flesta ändamål, skulle OSDev.org samfundet föredrar att du håller dig till att använda deras wiki, och inte gå med i forumet. Om du bestämmer dig för att gå med i forumet, det finns förutsättningar: Du är skyldig att noggrant känna C eller C + +, och x86 assembler. Du måste också förstå generella och komplex programmering begrepp som länkade listor, köer, etc. OSDev samfundet, i sina regler, uttryckligen att gemenskapen inte runt att vara barnvakt nya programmerare. Om du försöker att utveckla ett operativsystem, är det självklart att du förväntas vara en programmering "gud." Du är också skyldig att ha läst processorn manualer för processorarkitektur du har valt, om x86 (Intel), ARM, MIPS, PPC, etc. manualer för en processorarkitektur kan vara lätt att hitta med hjälp av en Google-sökning ("Intel Manualer "," Häng ARM manuals "etc). inte OSDev.org forum och börja ställa uppenbara frågor. Det kommer helt enkelt att resultera i "Läs f *** ing Manual" svar. Du bör försöka läsa Wikipedia, och handböcker för de olika verktyg som du vill använda.
- För mer information se dessa källor.
- Manual: Linux från grunden
- Bootloader: GRUB
- Virtuell maskin-tillämpningar: Bochs, VM ware, XM Virtual Box.
- Processor handböcker: Intel manualer
- OS Development webbplats:,
Varningar
- Du kommer inte att ha ett fullständigt system i två veckor. Börja med ett operativsystem som stövlar, sedan gå vidare till den coola grejer.
- Om du gör något riktigt dumt, vilja skriva slumpmässiga byte till Random I / O-portar, kommer du krascha din OS, och kan (i teorin) steka din hårdvara.
- Var noga med att implementera säkerhetsfunktioner som din högsta prioritet om du någonsin vill använda den till något.
- Med operativsystemet slarvigt skriven till hårddisken kan fördärva den helt. Var försiktig.
- Förvänta dig inte att en riktig operativsystem kommer att vara lätt att bygga. Det finns, massor av gånger, intrikata beroenden. Till exempel, för att göra ett operativsystem kan hantera flera processorer måste din Minneshanterare ha "låsa" mekanismer för att förhindra att flera processorer från att komma åt samma resurs samtidigt. De "lås" som används för detta kommer att kräva närvaro av en schemaläggare för att säkerställa att endast en processor får åtkomst till en kritisk resurs vid varje given tidpunkt och alla de andra är gjorda för att vänta. Ändå schemaläggaren beror på närvaron av en Memory manager. Detta är ett fall av en deadlocked beroende. Det finns inget standardiserat sätt att lösa problem som detta, varje operativsystem programmerare förväntas vara skicklig nog att räkna ut sitt eget sätt att hantera det.
Saker du behöver
- En bra dator
- En processor för arkitekturen kommer du att utveckla
- Tillräckligt med minne (RAM) för en virtuell maskin
- A 'host' OS (används för att utveckla Assembler (och andra) källkod samt bygga och paketera det medan det är i sin linda, så småningom ditt eget OS kan vara sin värd)
- Syntax-färg kod redaktör (använda om du har någon Integrated Development Environment)
- En kompilator
- En CD / DVD-enhet