OS - Hvordan laver man det?

Tags:    diverse

Er der nogen der ved hvordan man laver et OS, eller kender et link til en hjemmeside hvor man kan lære det?



8 svar postet i denne tråd vises herunder
5 indlæg har modtaget i alt 5 karma
Sorter efter stemmer Sorter efter dato
Er der nogen der ved hvordan man laver et OS, eller kender et link til en hjemmeside hvor man kan lære det?


http://www.osdev.org/
http://www.osdever.net/
er gode steder.

Indeholder artikler, tutorial og forum, som kan hjælpe på vej.

-Thomas



Først og fremmest skal du have lært et programmeringssprog som giver mulighed for at man kan lave et OS. Det mest kendteste og nok også det bedste er C++.
Det kræver bare at du kender virkelig godt til sproget og så bør du lære noget om hvordan computeren er bygget op. Det er som Thomas siger en kanon idet at bruge sådan nogle hjemmesider og portaler om emnet til at få lært hvordan.



Du skal også ud i at skrive noget assembler til eksempelvis bootloader.



Først og fremmest skal du have lært et programmeringssprog som giver mulighed for at man kan lave et OS. Det mest kendteste og nok også det bedste er C++.


C er nu det mest benyttede - delvist af historiske årsager, delvist fordi det som regel er uhyre let at se hvilken assemblykode en compiler genererer ud fra et stykke C, delvist fordi C stort set ikke kræver nogen runtime-support og delvist fordi C++'s features ikke altid er hensigtsmæssige i kernel-mode. De fleste (alle?) større kerner er i ren C, selvom NT dog også har nogle større dele (grafiklaget så vidt jeg husker) i C++.

Man kan dog skrive kerner i alle sprog, det er før set gjort i Pascal, Oberon, Lisp, Smalltalk, Forth, osv. Det suverænt letteste er dog at bruge C, delvist pga. de grunde jeg nævnte tidligere, delvist fordi alle andre gør det i C.



Jeg vil foreslå Rasmus at benytte enten Forth eller Assembly.
Specialt da meget tyder på at han ikke kan assembly, den viden det giver at kode i assembly får de færeste i C
(indenfor de første 5 år), pointen er at han bør lære assembly før han starter, såfremt han er seriøs omkring projektet.

Jeg vil foreslå dig (Rasmus) at installere (bochs.sourceforge.net) som vil gøre det hele meget nemmere (borchs er en emulator for x86 pc`er).




Indlæg senest redigeret d. 09.06.2006 17:50 af Bruger #6254
Angående C eller C++, jeg ville lave det i C++, men undlade for mange avancerede C++ features til de mest kritiske kerne dele.



For lige at tilføje lidt til Troels':

Man kan kun på en standard PC skrive sin kerne i et sprog som kan kompileres til maskinkode. Hvis man vil lave et Forth, Smalltalk eller Java kerne til en almindelig PC så skal man enten udarbejde en måde at kompilere disse til maskinkode, eller man skal skrive et stykke lowlevel software som "kører" ens kode(Dvs. Whatever-kernen kan betragtes som et "program" som en low-level kerne kører).

Mange kerner som er skrevet i sprog der ikke almindeligvis kompileres til maskinkode, har været kørt på specielt hardware.

Her er lidt mere om det: http://www.mega-tokyo.com/osfaq2/index.php/Can%20I%20use%20some%20language%20other%20than%20C%3F



Tak for henvendelserne, jeg har først læst dem nu da jeg har haft meget andet at se til.

Jeg kender ikke ret meget til værken Assembly, C eller C++ men har dog benyttet turbo pascal 0.4, turbo pascal 0.7 og en nyere xp modaniseret version kaldet devpascal. Jeg er dog ikke videre genial til at programere i det endnu og har ikke lavet særligt store og krævene ting da jeg ikke har haft noget relevandt at lave.
Ud over det har jeg også brugt comal80 da jeg startede min programerings "kariere", men det er nok ikke meget bevendt i forhold til at lave et computer OS.

Jeg vil i første omgang gerne lære en del om hvordan computeren er bygget op i hardwaren og så kaste mig over softwaren. Det jeg drømmer om at lave er et OS der tager meget lidt prossesor tid, men som stadig kan køre programmer og åbne dem i en grafisk overflade som med windows.

Jeg tjekker lige linket ud og tak igen!



Indlæg senest redigeret d. 04.09.2006 22:37 af Bruger #9981
t