Gå til innhold

Hvordan lage et operativsystem?


Anbefalte innlegg

Tipper denne passer greit her...

 

Hei, jeg har et spørsmål jeg har grublet på i det siste; hva skal til for å lage et operativsystem?

 

Dette er noe jeg har lurt på en lang stund nå, men ikke helt forstått. Hva må lages først? Jeg tenker at det må jo være en grunn til at det for det meste ikke finnes fler enn tre ledende operativsystemer (Windows, Mac og Linux) Det må jo også være en grunn til at alle de Open Source karene bygger alt på Unix, og ikke lager noe nytt.

 

Jeg lurer rett og slett på hva som skal til. Må man lage en kjerne av operativsystemet først (jeg kjenner jo til Unix)? Må man lage sitt eget programmeringsspråk, eller kan man skrive et helt nytt operativsystem i et gammelt programmeringsspråk (f.eks. C++) Hvordan går man fram? Jeg vet at mange tenker at man bare kan fikse litt på en gammel distro av Linux, men nå mener jeg å begynne helt fra scratch

 

Og for alle som lurer på det: Nei, jeg har ikke planer om å lage mitt eget operativsystem!

Lenke til kommentar
Videoannonse
Annonse

Å skrive et operativsystem fra bunnen av er utrolig spennende og antagelig noe av det mest lærerike man kan gjøre som programmerer. Men det er mye arbeid og til tider mye hodebry som skal til.

 

Kurset INF3151 ved UiO går ut på nettopp dette: man skriver et operativsystem fra bunnen av. Da jeg tok kurset var første innlevering bootloaderen i assembler, og deretter gikk vi over til C og jobbet oss gjennom en hel haug av spennende ting. Resultatet var et ekte OS, men ikke et brukandes OS.

 

Så ja, det går definitivt an å lage noe selv helt fra scratch. Men det krever mye tid.

 

Hvis man i tillegg ønsker at resultatet skal bli bra, kreves det en hel del mer. Samtlige valg man tar er avgjørende for et eller annet og vil påvirke resultatet, man bør derfor vite godt hva man driver med.

 

PS: Om du ikke tenker å lage et operativsystem, så kan du jo hvertfall lage deg en kompilator. Det er minst like gøy og lærerikt :)

Endret av steingrim
Lenke til kommentar

Takk for svar, det var gøy å høre fra noen interesserte.

 

Da jeg skrev at jeg ikke hadde tenkt til å lage mitt eget OS, mente jeg det ikke 100%. Jeg ville først og fremst unngå useriøse kommentarer som "Skal du konkurrere med Bill Gates og Steve Jobs eller?". Jeg har jo lyst til å lage mitt eget OS, det hadde vært utrolig gøy å kjøre mitt eget OS på en maskin og se at det funker bra, og hele prosessen med all læring hadde vært fantastisk, men jeg er fremdeles i tidlig startfase når det gjelder programmering (er ikke så gammel da, så har litt tid på meg). Men jeg lurer mest på hvordan man punktvis går fram, og hvilket programmeringsspråk jeg bør starte med å sette meg inn i. Har hørt C++ skal være ganske enkelt, bedre en assembler der det er mye kode for lite. Jeg har vel ellers stilt en del spørsmål i første innlegg som jeg ikke trenger å repetere.

Lenke til kommentar

På de laveste nivåene må du trå til med litt assembly, du har ikke noe valg når det gjelder bootloaderen feks. Og rett over der vil du nok helst bruke C med litt inline assembly der det er nødvendig (feks i de nederste delene av locking-mekanismene dine).

 

Du bør kjenne kompilatoren din godt og vite hvordan den organiserer datastrukturene dine i minnet, så C++ er kanskje ikke det lureste IMNSHO. Husk at standard-bibliotekene i C og C++ ikke vil være tilgjengelig på ditt OS i de laveste nivåene, det er altså du selv som må implementere det du trenger.

 

Når det er sagt; om du klarer å komme så langt så klarer du sikkert å komme til et stadium der du kan porte eksisterende libstdc++ eller andre runtimes, og da kan du jo skrive de høyere nivåene i C++ eller andre mer spennende språk.

 

Jeg tipper du finner plenty med tutorials og artikler på nett hvis du googler litt :)

 

Lykke til

Lenke til kommentar

Det er mange prosjekter som forsøker å dytte inn objektorientering eller en VM i kernelen, men svært få har kommet særlig langt.

 

Men operativsystemer er absolutt et interessant emne, det er latterlig mye jobb, og svært krevende. Det kreves dyptgående forståelse for hvordan datamaskinen fungerer, og side på side med dokumentasjon om hvordan komponenter skal behandles. Bare å skrive en bootloader er jo et prosjekt alene, heldigvis har vi grub.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...