Gå til innhold

Anbefalte innlegg

Videoannonse
Annonse

Du må et par hakk lavere - den klassiske starten er å skrive en bootloader. Da må du håndskrive litt 16-bits assembly for å laste en blokk data inn i minnet med BIOS-funksjoner, og så hoppe til starten av den blokken, som typisk vil begynne med litt mer håndskrevet kode for å bytte til 32-bits eller 64-bits mode og deretter hoppe til noe mer komplisert kode som kanskje er kompilert.

 

Deretter kan du forsåvidt skrive C og kompilere det til kjørbare blokker kode [1] - men husk at du ikke har noe standard library, ikke noe library-loading; ingen filsystemfunksjoner, ingen printf... og ingen drivere. Det finnes noen standarder (f.eks. SVGA, som alt moderne fortsatt støtter) som lar deg skrive tekst på skjermen og slikt, men ikke regn med USB eller nettverk. Harddisker med AHCI er noenlunde standardisert, men jeg aner ikke hvor komplisert det er. Du må i praksis lage alt selv; det eneste du får er selve C pluss de funksjonene kompilatoren kan redusere til ren C uten systemkall for deg. Åja, og du må selv skrive koden for å separere kernel/userland, for å starte separate programmer, og for å bytte mellom dem. (Og jeg vil ikke tenke på hvordan man spinner opp flere kjerner, eller styrer dem).

 

Det letteste er å teste ting i en VM (qemu har bedre debugging, virtualbox er enklere og mye raskere), så slipper du å bekymre deg for å dedikere en fysisk harddisk (eller en floppy!) til det. Det finnes ellers en del informasjon på nettet om dette (f.eks. osdev.org som Tåkelur lenket) , og det er et fascinerende fag på IFI (UiO) som går ut på å lage et OS. Du kan se på semestersiden for et av de gamle årene for en grei liste med litteratur.

 

Åja, og det er C og assembly som er de realistiske språkene her. Det finnes noen få andre språk som teoretisk kan fungere, men det er en grunn til at alle moderne OS har en kjerne av C.

 

[1] På et annet OS - det vil ta mye kode før du har et OS som kan kjøre en C-kompilator.

Endret av Djn
  • Liker 5
Lenke til kommentar
Gjest Slettet+9871234

Begynn med å studer åpen kildekode. Ha minimaisme som mål. Jeg tror det kan være noe å vinne på det. Skriv det gjerne i C.

Lenke til kommentar

 

Tannenbaum har forfattet læreboka til kurset, som jaggu var å finne her:

 

http://www.zuhairqadir.info/UOL/OS/OS1.pdf

 

Minix var Andrew Tannenbaums operativsystem spesielt utviklet for å være basis i undervisning om operativsystemer, og det som ga Linus inspirasjon til å lage Linux. I dag er visst Minix 3 rettet inn mot å være brukbart i produksjon, fortrinnsvis embedded. Antar det OS'et man er med på å bygge i dette kurset er ganske Minix-aktig.

  • Liker 1
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...