Daar is regtig geen ontwikkelingsvelde meer uitdagend as die ontwikkeling van bedryfstelsel (OS) nie. Dit is die "toppunt van programmering."
Min programmeerders probeer ooit om 'n bedryfstelsel te bou, en baie van diegene wat dit wel doen, produseer nooit 'n funksionerende stelsel nie.
As u egter tot by die wenstreep kom en 'n funksionele bedryfstelsel vervaardig, sal u by 'n elite-groep top-vlug-programmeerders aangesluit het.
1 Wat is 'n bedryfstelsel?
1.1 'N Kort geskiedenis van bedryfstelsels
1.2 Die onderdele van 'n bedryfstelsel
2 Wat u moet weet
2.1 Leer rekenaarwetenskap
2.2 Leer rekenaarprogrammering
2.3 Leer programmeertale
2.4 x86 Samestellingstaal
Wat is 'n bedryfstelsel?
Die vroegste rekenaars het nie bedryfstelsels nie.
Elke program wat op hierdie vroeë stelsels geloop het, moes al die nodige kodes bevat om die rekenaar te bestuur, met gekoppelde hardeware te kommunikeer en die berekening te verrig wat die program eintlik bedoel was om uit te voer. Hierdie situasie het beteken dat selfs eenvoudige programme ingewikkeld was.
Namate rekenaarstelsels gediversifiseer en meer ingewikkeld en kragtiger geword het, het dit toenemend onprakties geraak om programme te skryf wat funksioneer as 'n bedryfstelsel en 'n nuttige toepassing.
In reaksie hierop het individuele hoofraamrekenaar-eienaars stelselsagteware begin ontwikkel wat die skryf en bestuur van programme en bedryfstelsels makliker gemaak het.
'N Bestuurstelsel (OS) is sagteware wat rekenaarhardeware en stelselhulpbronne bestuur en die gereedskap bied wat toepassings benodig. Die ontstaan ​​van bedryfstelsels het beteken dat programme nie meer geskryf moes word om die omvang van die rekenaarbedryf te beheer nie.
In plaas daarvan kan daar geskryf word dat rekenaartoepassings deur die bedryfstelsel bestuur word, terwyl die bestuurstelsel bekommerd is oor rekenaarbronne en aangeslote perifere toerusting soos drukkers en gesorte papierkaartlesers.
'N Kort geskiedenis van bedryfstelsels
Die eerste bedryfstelsel is in 1956 deur General Motors geskep om 'n enkele IBM-hoofraamrekenaar te bedryf. Ander IBM-hoofraam-eienaars het dit gevolg en hul eie bedryfstelsels geskep.
Soos u kan dink, het die vroegste bedryfstelsels baie wissel van een rekenaar na die volgende, en hoewel hulle dit makliker gemaak het om programme te skryf, het hulle nie toegelaat dat programme op meer as een hoofraam gebruik word sonder om 'n volledige herskryf te hê nie.
In die 1960's was IBM die eerste rekenaarvervaardiger wat die taak van die ontwikkeling van bedryfstelsels aangepak het en begin om stelsels met hul rekenaars te versprei.
IBM was egter nie die enigste ondernemer wat bedryfstelsels geskep het gedurende hierdie tyd nie. Control Data Corporation, Computer Sciences Corporation, Burroughs Corporation, GE, Digital Equipment Corporation en Xerox het almal in die 1960's ook hoofstelsel-bedryfstelsels uitgereik.
In die laat 1960's is die eerste weergawe van die Unix-bedryfstelsel ontwikkel. Geskryf in C, en vrylik beskikbaar gedurende die vroegste jare, is Unix maklik na nuwe stelsels oorgedra en het vinnig breë aanvaarding verkry.
Baie moderne bedryfstelsels, waaronder Apple OS X en alle Linux-geure, spoor hul wortels terug na Unix.
Microsoft Windows is ontwikkel na aanleiding van 'n versoek van IBM dat 'n bedryfstelsel sy reeks persoonlike rekenaars bestuur.
Die eerste bedryfstelsel wat deur Microsoft gebou is, het Windows nie genoem nie, dit het MS-DOS genoem en is in 1981 gebou deur die 86-DOS-bedryfstelsel van Seattle Computer Products te koop en dit aan te pas om aan IBM se vereistes te voldoen..
Die naam Windows is in 1985 vir die eerste keer gebruik toe 'n grafiese gebruikerskoppelvlak geskep is en met MS-DOS gepaar is.
Apple OS X, Microsoft Windows, en die verskillende vorme van Linux (insluitend Android), beveel nou die oorgrote meerderheid van die moderne bedryfstelselmark aan.
Die onderdele van 'n bedryfstelsel
Bedryfstelsels is saamgestel uit twee hoofonderdele:
Die kern is die hart van die bedryfstelsel. Dit is die eerste program wat gelaai word wanneer die rekenaar begin, dit bestuur rekenaarbronne en hanteer versoeke van stelselprogramme en -toepassings.
Stelselprogramme hardloop bo-op die kern. Dit word nie gebruik om nuttige werk te verrig nie, maar is die programme wat nodig is om die kern aan gebruikers se toepassings en perifere toestelle te koppel. Toesteldrywers, lêerstelsels, netwerkprogramme en stelselprogramme soos skyfdefragmeters is almal voorbeelde van stelselprogramme.
Toepassingsprogramme maak nie deel uit van die bedryfstelsel nie en is die programme wat gebruik word om nuttige werk te verrig. Woordverwerkingstoepassings, blaaiers en mediaspeler is algemene soorte toepassingsprogramme. Toepassingsprogramme word bestuur en geaktiveer deur die kern, en gebruik stelselprogramme om toegang tot rekenaar-periferie-toestelle en hardeware te verkry.
Die lys van dinge wat u moet weet voordat u 'n bedryfstelselontwikkeling onderneem, is baie lank. Die drie belangrikste dinge wat u moet bemeester voordat u met OS-ontwikkeling begin, is:
Basiese rekenaarwetenskaplike kennis;
Rekenaarprogrammeringsteorie en beste praktyke;
Lae vlak en 'n hoë vlak van programmeringstale.
OS-ontwikkeling is nie soos webontwikkeling nie. Dit is nie iets waarop jy kan spring en leer soos jy gaan nie. U moet 'n stewige grondslag in rekenaarwetenskap ontwikkel voordat u verder gaan met ander onderwerpe.
Hier is 'n paar bronne om aan die gang te kom:
Coursera: Rekenaarwetenskap 101 is die kursus wat u eerste moet neem as u nuut is op die gebied van rekenaarprogrammering en rekenaarwetenskap.
As u 'n bietjie kennis en ervaring onder u gordel het, slaan hierdie kursus oor ten gunste van die Udacity van edX-opsies. As u egter splinternuut op die gebied is, neem hierdie kursus 'n benadering wat nie voorheen ondervind is om rekenaarwetenskap en programmeringsonderwerpe bekend te stel nie.
Ondeursigtigheid: inleiding tot rekenaarwetenskap neem 'n web-ontwikkeling benadering tot die onderrig van rekenaarwetenskap. Alhoewel dit nie direk van toepassing is op die vooruitsig om 'n bedryfstelsel te bou nie, is dit 'n goeie kursus wat nuttige inligting lewer en 'n goeie oorsig gee van die basiese beginsels van rekenaarprogrammering.
edX: Inleiding tot Rekenaarwetenskap is die mees volledige en in-diepte kursus in rekenaarwetenskap in hierdie lys. Hierdie gratis, tempo tempo is ontwerp deur die Harvard Universiteit en weerspieël die inhoud wat in die kursus aangebied word met dieselfde naam op die kampus van die Harvard Universiteit.
Met 'n deeglike begrip van rekenaarwetenskap onder u gordel en 'n beperkte ervaring met programmeringstale, is die volgende stap om te leer hoe om 'n grootskaalse programmeringsprojek aan te pak.
Udacity: sagteware-ontwikkelingsproses is 'n uitstekende kursus wat almal moet neem as hulle nog nooit vantevore 'n groot, uitdagende programmeringsprojek aangepak het nie. In hierdie kursus leer u werkvloei- en bestuursinstrumente en tegnieke soos Git en hoe u 'n geïntegreerde ontwikkelingsomgewing opstel.
Om 'n bedryfstelsel te ontwikkel, moet u ten minste twee programmeertale bemeester:
'N Program op die hoë vlak van programmering.
Vergaderingstale word gebruik om direk met 'n SVE te kommunikeer. Elke tipe SVE praat 'n masjientaal en daar is net een ooreenstemmende monteringstaal vir elke tipe SVE. Die algemeenste rekenaarargitektuur is x86, dit is oorspronklik deur Intel ontwikkel en word nou gebruik deur 'n wye verskeidenheid rekenaarskyfvervaardigers, waaronder AMD, VIA en vele ander. In hierdie gids wys ons u in die rigting van die aanleer van x86-samestellingstaal.
Op hoë vlak programmeringstale werk met verskeie rekenaarargitekture. C is die programmeringstaal wat die meeste gebruik en aanbeveel word vir die skryf van bedryfstelsels. Om hierdie rede beveel ons aan dat u leer en C gebruik vir OS-ontwikkeling. Ander tale soos C ++ en Python kan egter ook gebruik word.
Die x86 Vergaderingsgids is 'n wonderlike plek om te begin leer van samestellingstaal. Hierdie kort dokument bied 'n kort oorsig van x86-samestellingstaal en stel die verhoog voor vir die meer gevorderde hulpbronne waarna u volgende sal beweeg.
Programmering vanaf die grond af deur Jonathan Bartlett is een van die belangrikste boeke van die samestellingstaallandskap. Hierdie boek gebruik samestellingstaal as basis vir die aanleer van rekenaarwetenskap en programmering. Hierdie hulpbron is ook beskikbaar vanaf die internetargief.
The Art of Assembly Language deur Randy Hyde is 'n ander ikoniese teks in die wêreld van samestellingstaalonderrig. Die teks is oorspronklik geskryf vir Hyde se programmeringskursusse aan Cal Poly en UC Riverside, en is in die middel van die negentigerjare as 'n HTML-boek vrygestel en word erken as 'n bepalende werk binne die veld. Die teks word ook aangebied as 'n reeks PDF-lêers deur die Yale FLINT Group.
As u 'n tradisionele handboek wil gebruik om die x86-samestellingstaal te leer, is twee van die mees gebruikte en sterk aanbevole tekste:
Vergaderingstaal stap-vir-stap: programmering met Linux deur Jeff Duntemann;
Moderne X86 Vergadering Taalprogrammering deur Daniel Kusswurm.
Daar is baie programmeringstale op hoë vlak wat u kan leer en baie verskillende bronne wat u kan gebruik om dit te leer. Ons aanbeveling, en die aanbeveling wat die OS-ontwikkelingsgemeenskap meestal weerspieël, is om C te leer, en ons het verskeie uitstekende hulpbronne gevind wat u tot 'n bekwame C-programmeerder sal omskep.
Kry 'n vinnige oorsig van die C-programmeringstaal deur dit te voltooi C handleiding. Hierdie hulpbron sal u nie 'n kundige maak nie, maar dit sal u 'n goeie basiese begrip van die taal gee en u voorberei om meer uitdagende onderwerpe en hulpbronne aan te pak.
Leer C op die harde manier is 'n gratis HTML-e-boek wat baie oefenoefeninge insluit. Hierdie teks lei u deur die C-programmeertaal, en as u die werk insit, u tyd neem en al die oefeninge voltooi, is u op pad om 'n bekwame C-programmeerder te wees voltooi hierdie tutoriaal.
As 'n tradisionele handboek iets is wat u waarskynlik deurwerk, is hierdie twee tekste van die gewildste om die C-programmeringstaal te bemeester.
Die C-programmeringstaal deur Kernighan en Ritchie;
C Programmering vir absolute beginnersgids deur Perry en Miller.
As u eers die basiese konsepte van rekenaarwetenskap en programmering goed ken, en die samestellingstaal en C onder die knie het, is die volgende stap om een ​​of twee tutoriale vir die ontwikkeling van OS te voltooi wat deur die hele proses van die ontwikkeling van 'n eenvoudige OS van nuuts af gaan. Ons het drie uitstekende bronne gevind wat presies dit doen.
Linux Van Kras sal u lei deur die proses om 'n volledige Linux-bedryfstelsel te bou. Hierdie handleiding sal nie 'n volwaardige bedryfstelsel lewer nie, maar dit bied u 'n soliede kodebasis waarop u 'n volledige bedryfstelsel kan uitbou. Pak gevorderde tutoriale soos Beyond Linux from Scratch, Automated Linux from Scratch, Cross Linux from Scratch, of Hardened Linux from Scratch om u basiese OS tot 'n bruikbare sagteware te bou..
Die boekie oor OS-ontwikkeling deur Erik Helin en Adam Renberg is ontwikkel as deel van 'n gevorderde kursus in rekenaarwetenskap wat die skrywers voltooi het as studente as die Royal Institute of Technology in Stockholm. Hierdie kursus gaan deur die volledige proses van die ontwikkeling van 'n x86-bedryfstelsel deur te begin met die opstel van 'n programmeringsomgewing, wat kulmineer met programmering vir multitasking en onderwerpe soos die bestuur van stelselgeheue en die ontwikkeling van lêerstelsels onderweg.
Bedryfstelsel-ontwikkelingsreeks van Broken Thorn Entertainment is 'n reeks van 25 tutoriale wat u deur die proses van die skep van 'n bedryfstelsel van die grond af lei. Pasop vir beginners: hierdie reeks veronderstel dat u alreeds 'n IDE-idee ken en 'n bekwame C- en monteertaalprogrammeerder is.
Daar is baie tekste wat u kan gebruik om te leer oor die dissipline van OS-ontwikkeling. Drie van die algemeenste aanbeveel is:
Moderne bedryfstelsels deur Tanenbaum en Bos;
Die ontwerp van die UNIX-bedryfstelsel deur Maurice Bach;
Bestuurstelselkonsepte deur Silberschatz, Galvin en Gagne.
Terwyl u van stapel gaan om 'n OS-ontwikkelaar te word, is daar 'n paar plekke waar u ander OS-ontwikkelaars kan vind om van te leer en te kommunikeer:
OSDev.org is 'n wiki met baie inligting oor OS-ontwikkeling sowel as 'n forum waar u kan ontmoet en terugvoering kry van ander eendersdenkende programmeerders..
OS Development Channel op reddit is 'n wonderlike gemeenskap waar u meer kan leer oor OS-ontwikkeling en 'n oomblik van lewenskrag kan geniet wanneer die taak van OS-ontwikkeling 'n bietjie te lastig raak..
Rekenaarwetenskap, programmeerders en StackOverflow van StackExchange is plekke waar u tegniese vrae aan ander programmeerders kan stel as u 'n probleem opduik wat u nie self kan uitvind nie..
Leer om OS te ontwikkel is een van die uitdagendste programmeer take wat u kan onderneem. As u egter daarin slaag om 'n werkende bedryfstelsel te bou, sal u u as 'n bekwame programmeerder beskou en een wat ten diepste verstaan ​​hoe verwerkers, hardeware en rekenaarprogramme saamwerk om te skep wat die res van die wêreld as vanselfsprekend aanvaar as 'n funksionerende rekenaar..