Gå til innhold

Tanker rundt operativsystem (2. edition)


Anbefalte innlegg

Eg har i det siste begynt å tenkje mykje på korleis eit operativsystem er oppbygd. Kor mykje som må programmerast. Kva som er innebygd i BIOS. Kva som må programmerast fullstendig sjølv osv.

 

Kor mykje av operativsystemet må programmerast i assembly før ein kan ta i bruk programmeringsspråk som C++? C++ er jo eit delvis plattformavhennig språk, men kan du programmere C++ totalt uavhennig av ein plattform i bakgrunnen? Kan du då bruke innebygde bibliotek til f.eks. I/O til skjerm, eller må alt slikt programmerast i asm først?

 

Altså. Her har me eit enkelt C++-program:

#include <iostream>

int main() {
   cout << "Hey! Dette kjem ut på skjermen";
   return 0;
}//end int main

Men denne koden blir jo kompilert forskjelleg mellom linux og windows. C++ blir jo kompilert til eit spåk CPU'en forstår seg på, men er det tilfelle? Her har jo operativsystemet ein jobb... Kan ein programmere plattformuavhennig C++. Altså C++ som ikkje treng nokon platform meir enn seg sjølv? Må ein i så fall assemble alt ein treng av f.eks. I/O-bibliotek internt noko slikt:

#include <iostream>

void printOnScreen(char[] text) {
   asm {
     ; ASM-kode her for skriving til skjerm (eg kan ikkje asm :))
   }//end asm
}//end void printOnScreen

int main() {
   printOnScreen("Hello world!");
   return 0;
}//end int main

Er det dette (pluss ein spesiell kompilator) som må til for å programmere C++ uten nokon platform? Kan ein med andre ord programmere eit operativsystem utan direkte asm, berre asm internt i C++?

 

Og så: Kor mykje må programmerast i asm? Må ein lage funksjonar for lesing frå harddisk, eller er det innebygd i BIOS? Eller nettverk? Eller skjerm? Kva må til for å lage GUI?

 

Og litt linux-spesifikt. Alle linuxdistroar brukar jo linuxkjernen, men kva ligg inni den? Er heile kjernen programmert i asm? Kva er det eigentleg som f.eks. ubuntu står bak, anna enn å putte GNU/Linux og Gnome inn på ein CD?

 

Men nå må de ikkje tru at eg har ein fjortisdraum om å lage eit operativsystem (som evt. skal revolusjonere verden). Slike mål er berre tidsfordriv :)

Endret av knuto
Lenke til kommentar
Videoannonse
Annonse
Støtte for C++ behøver man ikke å programmere i asm, siden man ikke har C++-kode men binærkode som tolkes av maskinen.

Hmm. Ettersom det er forskjell på å programmere C++ for windows og linux, så reknar eg med at noko må til får å bruka det, eller er det rett og slett slik at viss ein ikkje brukar eit einaste bibliotek, men f.eks. assembler (inni C++-koden) IO-funksjoner ol, så vil det heile bli plattformuavhennig? :hmm:

Platformuavhengig skal det vanskelig gjøres å lage et operativsystem, ut fra min begrensede kunnskap om emnet.

Skreiv då aldri noko om å lage operativsystemet plattformuavhennig, men den forrige posten var elendig :) *redigere når eg får tid*

Endret av knuto
Lenke til kommentar

Det virker som om du mangler den mest fundamentale kunnskapen, nemlig evnen til å kunne lete frem informasjon på egenhånd. Det finnes dusinvis av FAQ-er og mindre guider om emnet som du enkelt kunne funnet via google.. her er ett knippe:

http://www.nondot.org/sabre/os/articles

http://www.osdever.net/

http://www.osdev.org/

 

Du bør også vurdere å lese USENET-gruppene alt.os.development og comp.lang.asm.x86 fast hvis du er interessert i OS-utvikling. Det er flere interessante diskusjoner der du sikkert vil kunne dra nytte av å følge. Gruppen alt.os.development har samlet sammen litt informasjon om operativsystemutvikling, dette ble lenket til av pingvinen lenger oppe i tråden.

 

Hvis du har hakket litt med x86-assembly fra før av (antar at du kjører en x86..), bør du først ta en kikk på Intel sin dokumentasjon. Les dokumentasjonen til Pentium 1, ikke P4. Sistnevnte er både lenger og - etter min mening - noe tyngre å lese.

 

Det finnes utallige små hobbykjerner rundt omkring på nettet som du kan leke med. Mange er versjon 0,000001 og knapt bootbare dog :p .. google er din venn.

 

De første versjonene av Linux-kjernen er relativt små, og man kan raskt få et overblikk over hele systemet. Igjen, google er din venn.

 

--Axel.

Endret av Axel``
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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...