Hierdie wikiHow leer u hoe u 'n bedryfstelsel kan beplan en ontwikkel as u nie weet hoe om in C of C ++ te kodeer nie. Bedryfstelsels bestuur rekenaarhardeware en voorsien die hulpbronne wat programme benodig om te werk. Om 'n bedryfstelsel van nuuts af te skryf, vereis 'n sterk kennis van rekenaarwetenskap, 'n programmeertaal soos C of C ++, samestelling en kodebestuurspraktyke.
Stappe
Deel 1 van 2: Leer die basiese beginsels
Stap 1. Neem 'n paar basiese rekenaarwetenskapkursusse
Anders as om op die internet te ontwikkel, vereis die skep van 'n bedryfstelsel 'n sterk begrip van algoritmes, datastrukture, rekenaarhardeware en hulpbronbestuur. Mense kry grade in hierdie dinge, dus moenie verwag om 'n hele bedryfstelsel te skryf nadat hulle 'n aanlyn -tutoriaal gelees het nie! Harvard se kursus Intro to Computer Science is gratis beskikbaar via EDX.
Stap 2. Leer 'n hoë vlak programmeertaal soos Python
As u eers 'n grondige begrip van rekenaarwetenskap het, is die volgende stap om C en/of C ++ te bemeester. Net soos om rekenaarwetenskap te leer, is die bemeestering van 'n taal nie opsioneel nie; u kan nie 'n bedryfstelsel kodeer as u nie soliede toepassings kan skryf nie.
As u splinternuut by C is, kyk dan na die C Programming: Getting Started -kursus van Dartmouth, wat gratis is via EDX. Sodra u die kursus voltooi het, kan u die volgende kursus in die reeks volg: C Programming: Language Foundations. Gaan dan verder na die volgende kursusse soos modulêre programmering en geheuebestuur en aanwysers en geheue -bestuur
Stap 3. Leer 'n monteringstaal
Vergaderingstale is tale op lae vlakke wat ontwerp is om met verskillende verwerkers te kommunikeer. Aangesien die samestelling vir verskillende verwerktipes verskil (byvoorbeeld x86 -monteringstaal vir Intel, AMD, VIA en ander verwerkers), moet u die weergawe leer vir die tipe verwerker waarvoor u kodeer.
- Hierdie open-source boek, as dit in sy geheel gelees word, kan u genoegsame begrip gee vir die bou van 'n bedryfstelsel.
- The Art of Assembly Language is 'n sterk aanbevole boek oor die samestelling wat aanlyn en vanlyn beskikbaar is.
- U moet ook baie navorsing doen oor die tipe verwerker (s) waarop u bedryfstelsel moet werk. Die handleidings vir verwerkerargitektuur kan maklik gevind word met behulp van 'n Google -soektog ("Intel -handleidings", "ARM -handleidings", ens.).
Stap 4. Voltooi 'n handleiding vir die bedryfstelsel
OS -tutoriale lei u deur die proses om 'n basiese bedryfstelsel te skep. Dit maak jou gewoond aan die proses en help jou om uit te vind of daar stukke is wat jy mis. As u 'n paar of twee tutoriale voltooi het, is u op pad om u eie bedryfstelsel te skep.
- Bare Bones is 'n handleiding wat u help om u eerste eenvoudige 32-bis-kern te skryf. Nadat u die tutoriaal voltooi het, is die volgende stap om Meaty Skeleton te gebruik om u eie bedryfstelsel te struktureer.
- Linux from Scratch is 'n aanlynboek waarmee u u eie Linux -bedryfstelsel kan skep.
- Bedryfstelsels van 0 tot 1 is 'n gratis boek oor die skep van verskillende bedryfstelsels van begin tot einde.
Stap 5. Bepaal die doelwitte van u bedryfstelsel
Wat wil u hê moet u bedryfstelsel doen? Hoe moet dit lyk? Moet u regtig 'n hele bedryfstelsel skryf, of wil u net 'n sekere voorkoms vir u lessenaar skep? Dit is alles wat u moet oorweeg voordat u begin kodeer.
- Oorweeg om saam met 'n span ander programmeerders te ontwikkel. As 'n span ontwikkelaars aan die projek werk, sal die ontwikkelingstyd aansienlik verminder word.
- Voeg u projekdoelwitte, planne en vrae by u publieke bewaarplek, sodat dit maklik is vir ander om u te help.
Deel 2 van 2: Bou u bedryfstelsel
Stap 1. Kies 'n ontwikkelingsomgewing
Dit is die platform wat u sal gebruik om u nuwe bedryfstelsel te kodeer. Dit is 'n kwessie van persoonlike voorkeur, maar die meeste mense gebruik óf Windows óf 'n geur van UNIX. As u Windows gebruik, is dit 'n goeie idee om 'n UNIX -omgewing soos Cygwin of MinGW te installeer. U wil gewoonlik seker maak dat die omgewing wat u gebruik die volgende insluit:
- GCC (die Gnu -samesteller). As u Windows gebruik, kan u dit installeer in Cygwin of MinGW.
- Binutils is 'n versameling gereedskap wat gebruik word om objeklêers te manipuleer. Weereens, as u Windows gebruik, kan u dit in Cygwin installeer.
- 'N Goeie teksredakteur. Vim en emacs word algemeen gebruik in UNIX -omgewings. Windows-gebruikers kan Notepad gebruik of Notepad ++ besoek vir 'n multi-oortjie-opgradering.
- Perl en/of Python. Een of albei word aanbeveel vir snaarmanipulasie.
Stap 2. Stel u weergawe beheer stelsel op
Deur 'n bedryfstelsel te skryf, beteken dit dat u waarskynlik honderde (of duisende!) Reëls kode sal skep. As u aan hersienings werk, kan dit verwarrend raak. Enkele opsies om na te gaan is CVS, Mercurial en Subversion.
Stap 3. Besluit oor 'n selflaaiprogram
As u nie u eie wil skep nie, kan u 'n bestaande een soos Grand Unified Bootloader (GRUB) gebruik. As u voel dat u genoeg durf om 'n selflaaiprogram te kodeer, kyk dan na Rolling Your Own Bootloader op OSDev.org.
Stap 4. Kies 'n kernontwerp
Die kern is die kern van u bedryfstelsel en bied 'n koppelvlak tussen die gebruiker en die hardeware van die rekenaar. Daar is monolitiese pitte en mikropitte. Monolitiese pitte implementeer al die dienste in die pit, terwyl mikrokernels 'n klein pit het, gekombineer met gebruikers -demone wat dienste implementeer. Oor die algemeen is monolitiese pitte vinniger, maar mikrokernels het beter isolasie en betroubaarheid van foute.
Stap 5. Begin klein
Begin met klein dinge, soos om teks en onderbrekings te vertoon, voordat u na dinge soos geheue bestuur en multitasking gaan. U kan ook probeer om 'n eenvoudige 16-bis-bedryfstelsel te maak, in plaas van 'n groot sprong te maak.
U sal binne twee weke nie 'n volledige stelsel hê nie. Begin met 'n bedryfstelsel wat begin, en gaan dan oor na die cool dinge
Stap 6. Toets u nuwe bedryfstelsel met 'n virtuele masjien
Gebruik 'n virtuele masjienprogram eerder as om u rekenaar te herlaai elke keer as u veranderings aanbring of die lêers van u ontwikkelingsrekenaar na u toetsmasjien moet oordra. VMWare is 'n algemene opsie wat werk met beide Windows en Linux, en so ook Bochs. Kontroleer of daar moontlike blokke en ander goggas is en herstel dit indien nodig.
Stap 7. Stel 'n "vrylatingskandidaat vry
U kan dit doen deur u getoetste kode na u publieke bewaarplek op te laai. Dit sal mense in staat stel om u bedryfstelsel te toets en terug te gee oor enige probleme wat hulle ondervind.
Stap 8. Netwerk met ander bedryfstelsel ontwikkelaars
Daar is 'n hele gemeenskap van ontwikkelaars van bedryfstelsels wat op verskillende forums vergader, insluitend /r /osdev op Reddit en die Software Engineering Stack Exchange. As u 'n idee gehad het oor die ontwikkeling van 'n basiese bedryfstelsel, lees u bestaande plasings om te sien watter dinge tydens die ontwikkelingsproses opduik.
Video - Deur hierdie diens te gebruik, kan sommige inligting met YouTube gedeel word
Wenke
- Maak seker dat u sekuriteitsfunksies as u belangrikste prioriteit implementeer as u ooit wil hê dat u stelsel lewensvatbaar is.
- Nadat al die ontwikkeling voltooi is, besluit of u die kode as open source of eie wil vrystel.
- Om 'n bedryfstelsel in staat te stel om verskeie verwerkers te hanteer, moet u geheuebestuurder 'sluitmeganismes' hê om te voorkom dat veelvuldige verwerkers gelyktydig toegang tot dieselfde hulpbron kry. Die 'slotte' wat hiervoor gebruik word, benodig die teenwoordigheid van 'n skeduleerder om seker te maak dat slegs een verwerker op 'n gegewe tydstip toegang tot 'n kritieke hulpbron het en dat al die ander wag. Tog is die skeduleerder afhanklik van die teenwoordigheid van 'n geheuebestuurder. Dit is 'n geval van 'n vasberade afhanklikheid. Daar is geen standaard manier om probleme soos hierdie op te los nie; As programmeerder word van u verwag om vaardig genoeg te wees om sy eie manier om dit te hanteer, uit te vind.
- 'N Bedryfstelsel kan ook gebruikersvriendelik wees. Maak seker dat u gebruikersvriendelike funksies byvoeg, wat dit 'n integrale deel van u ontwerp maak.
- Moenie aansluit nie die OSDev.org -forums en begin voor die hand liggende vrae stel. Dit sal eenvoudig tot gevolg hê "Lees die handleiding" antwoorde. U moet Wikipedia en die handleidings vir die verskillende gereedskap wat u wil gebruik, lees.
- Moenie begin nie 'n bedryfstelselprojek om programmering te begin leer. As u nie reeds C, C ++, Pascal of 'n ander geskikte taal van binne na buite ken nie, insluitend wyser-manipulasie, lae-vlak-bit-manipulasie, bit-verskuiwing, inline-monteringstaal, ens., Is u nie gereed vir die ontwikkeling van die bedryfstelsel nie.
- As u iets verkeerd doen, soos om ewekansige grepe na ewekansige I/O-poorte te skryf, sal u u bedryfstelsel neerstort en u hardeware (in teorie) kan braai.