Hvilket er verdens minste operativsystem?

Beste svaret

Det kommer an på hva du mener med operativsystemet. Jeg skrev en gang et enkelt køsystem som ville utføre flere protokolløkter på en rund-robin måte. Men det kjørte under et standard operativsystem. Da mikrokontrollere først kom ut for innebygde systemer, skrev ingeniører vanligvis sitt eget rudimentære operativsystem som angitt i et av de andre svarene.

Det minste nyttige operativsystemet jeg har brukt som hadde de grunnleggende funksjonene til en multitasking som var i drift -hyllesystemet ble kalt QNX. Det var et kuttet Unix-system og kjørte på den første IBM-PCen. Den hadde ingen fancy grafikk, men jeg kunne komfortabelt gjøre programvareutvikling på den. Den eneste virkelige forskjellen til en moderne maskin var faktisk brukergrensesnittet med farge og grafikk. Så i utgangspunktet introduserte IBMs introduksjon av DOS dataindustrien minst 10 år. Det var en rekke overlegne operativsystemer rundt (som kunne blitt tilpasset) eller ble utviklet på den tiden med selvfølgelig Unix å sette standarden.

Svar

Jeg har nettopp avsluttet utviklingen en kjerne for en klasse ( CS-4284 Systems & Networking Capstone ) i løpet av mitt siste semester på skolen. Tidligere tok jeg en OS-klasse som har som mål å jobbe med operativsystemet fra programmererens perspektiv, og ikke fra perspektivet til en OS-designer. Å være involvert i OS og kjerneutvikling det siste halvannet året (det er ikke lenge, men jeg har lært mye), her er det jeg anbefaler:

1. Master C Jeg kan ikke understreke dette lenger. Nei egentlig, mestre det. OS-utvikling er tøff. Den inneholder mange konsepter som du virkelig trenger for å mestre C, så det står ikke i veien for deg. Ta for eksempel Unix-røret (skrevet | i et skall). For å utvikle et rør i operativsystemet ditt, må du forstå OS-filsystemet og filstrukturen veldig bra. Det er et typisk problem med begrenset buffer (forbruker / produsent) og vil måtte håndtere all synkronisering. Du må være oppmerksom på det virtuelle minnet mens du skriver det. Videre er Unix vanligvis BYOB (ta med din egen buffer). må administrere bufferen som brukeren har levert riktig osv. Det siste du vil gjøre her er å håndtere grunnleggende C-problemer som pekere og minnestyring (merk: minnestyring i operativsystemet er 10 ganger vanskeligere enn C-minnestyring: du må være oppmerksom på bruker kontra kjerneadresserom)

2. Kernel vs. OS Du må forstå forskjellen mellom en kjerne og et OS. En kjerne er egentlig operativsystemets hjerne. OS er et sett med applikasjoner samlet. For eksempel inkluderer Mac OS X: en kjerne, grensesnittet (GUI), standard applikasjoner innebygd (Finder – som bare er en abstraksjon til visualiser filsystemet, TextEdit, et skall etc …)

3. Ikke dykk rett inn Det er umulig å starte gjør kjerneutvikling i løpet av noen dager eller uker. Jeg foreslår at du starter med følgende:

  1. Gjør deg kjent med GCC-kompileringstrinn (hva skjer når du kjører gcc, hvordan en kjørbar fil produseres og hva skjer når du kjører programmet. Du kan også skrive en enkel samler i C (ta samlingskoden som inndata og utdatamaskinkode. Dette krever at du forstår hva .data, .text og. bss seksjoner er i montering (veldig nyttig nedover veien for å forstå operativsystemets virtuelle minne). Du vil også forstå adressering på maskinnivå og hvordan grener løses.
  2. Gjør deg kjent med mach verktøy og programmer på nivånivå. Jeg foreslår at du gjør bombelaboratoriet, fordi det er mye læremateriell der ute for det. Bare google bomb lab.
  3. Gjør deg kjent med grunnleggende OS-angrep. Jeg foreslår at du ser på bufferoverløpet av samme grunn som punkt 1 (google buffer overflow lab).
  4. Lær om systemanrop, tråder og prosesser i C. Derfra utvikler du ditt eget skall i C.
  5. Lær om minnetildeling, og implementer malloc og gratis i C. Lær om designkompromisser, tildelingsstrategier, frigjøringsstrategier osv …
  6. Lær om multi-threading og multi-prosessering derfra, dykk ned i synkroniseringsmekanismer (låser, mutexes, semaforer) og utvikle en trådgruppe i C, som andre programmer kan bruke.

4. Nå kan du starte virkelig, men forenklet OS-kjerneutvikling På dette tidspunktet kan du begynne å utvikle på et ekte operativsystem som OS-designer. Google Stanford Pintos og du vil få tilgang til en liten pedagogisk kjerne utviklet i Stanford. Den leveres med dokumentasjon og et sett med 4 prosjekter. Du kan google for noen skoler som har forelesningsbilder for Pintos. Jeg foreslår at du kjøper operativsystemkonsepter ( Amazon.com: Operativsystemkonsepter (9781118063330): Abraham Silberschatz, Peter B.Galvin, Greg Gagne: Books ). Dokumentasjonen er ganske bra, og prosjektene blir forklart godt. OS leveres også med tester som du kan kjøre ved å kjøre `make check`, slik at du kan se om du har gjort ting riktig eller ikke.

5. Du kan begynne å bidra til Linux Det vil ta mye arbeid å undersøke kildekoden og Linux-designbeslutninger (som er mye mer kompliserte enn Pintos), men jeg tror på dette punktet vil du være i stand til i det minste å starte. Med mer øvelse og lesing vil du kunne plukke den opp.

Jeg fullførte nettopp trinn 4. Jeg elsket trinn 1 til 3, men helt ærlig, halvveis i 4, innså jeg at jeg ikke er interessert i OS-utvikling. Jeg likte å jobbe mye med operativsystemet som programmerer (fra et programmeringsperspektiv), men likte ikke å grave dypere like mye. Jeg lærte imidlertid mye av kjerneutvikling, og det utsetter deg for mange ting. Videre, hvis du kan skrive en kjerne, skriver du hvilken som helst programvare der ute. Jeg anbefaler på det sterkeste å gjøre minst de tre første trinnene, da det gir deg god innsikt i operativsystemet. Du vil bokstavelig talt bli en bedre programvareingeniør totalt sett. Du vil lære å sette pris på språk på høyt nivå mer, og lære å bruke riktig verktøy / språk / teknologi for riktig jobb også.

Jeg har mye materiale om OS-utvikling, prosjekter, tester osv … Hvis folk er interesserte, gi meg beskjed ved å kommentere, og jeg kan kanskje sette sammen en online e-bok / veiledning / guide med et testmiljø som vil veilede nybegynnere til OS-utvikling og gi prosjekter og tilbakemeldinger å jobbe med.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *