Avatar billede baxos Nybegynder
18. september 2007 - 19:53 Der er 5 kommentarer og
1 løsning

Lave et OS

Hej eksperter :)
Hvis jeg nu skrev et meget simpelt C program så som bare Hello world
kan jeg så putte det på en diskette med en bootloader og så bare kører det som en .exe fil?
Synes alle steder jeg har læst om det har det været en .bin eller .com fil synes bare ikke jeg kan få sådan en fil lavet hvad gør jeg galt?
Avatar billede baxos Nybegynder
18. september 2007 - 21:08 #1
Læste også noget om at jeg kunne kompilere til en .exe fil og så bare rename den til .com og så putte den ind på diskette drev osv er dette rigtigt?
Avatar billede intel4004 Novice
19. september 2007 - 09:22 #2
Den .exe fil du producerer med en compiler på windows, er fuldstændig afhængig af windows som OS. Den er platforms-afhængig.

Jeg kunne da forestille mig at du sagtens kunne lave en et "hello-world"-program, som kun involverer en boot-loader og et lille bitte OS lag, som et BIOS abstraktions lag. Dette vil selvfølgelig være muligt.

Programmeringen af dit hello-world program kunne herefter gøres uden brug af assembly, men uden bare et lille bitte OS library at linke til, var du nødsaget til at bruge rå BIOS I/O, for overhovedet at kunne skrive til skærmen og kontakte PC'ens enheder.

En mulighed var muligvis at bruge en linux kernel som OS. Måske findes der andre, mindre kernels derude?

Mvh Intel4004
Avatar billede baxos Nybegynder
19. september 2007 - 16:13 #3
Okay synes det begynder at lyde lidt sværere end jeg havde forestillet mig.. Men hørte om nogle der har haft brugt knoppix source koden da den ikke skulle være helt så stor..?
Det jeg godt kunne tænke mig er bare at finde en side hvor jeg kan downlaode HELE source koden til en distro til linux?
Avatar billede intel4004 Novice
19. september 2007 - 17:27 #4
Det er som egentlig meget interessant det du vil lave, men ja det er så vidt jeg forstår faktisk så omfattende. En PC er jo i det hele taget meget komplekst at benytte i rå form (programmering af BIOS I/O med assembly). Derfor fungerer et OS også som et "abstraktions-lag" så denne kompleksitet ikke længere eksisterer.

Jeg har tit overvejet om mon der var noget at hente i computer-hastighed, hvis man kørte sit program som den eneste process overhovedet. Ingen kernel, ingen context-switching, kun ens eget smarte program. Men det vil alligevel kræve et minimalt BIOS-abstraktions-lag blot for at gøre de mest basale ting mulige.

Jeg ved ikke om du kan hente hele koden til en hel distribution. Mon ikke der findes andre metoder end at benytte en hel distribution. Det eneste du vel egentlig behøver er vel en bootloader, en afpillet linux-kerne og så 170 års erfaring i computer engineering :)

Bare tænk på en exe-fil i windows - som umiddelbar ser simpel ud. Dette er jo et specielt fil-format kaldes PE (Portable Executable), som er modificeret form for COFF-fil. Se evt. mere her:
http://en.wikipedia.org/wiki/Portable_Executable.

At læse sådan en fil vil jo kræve at din linux-kerne har sådanne faciliteter. Jeg ved at COFF formattet bruges på linux til executables. Så en god viden om hvordan executables er bygget er også nødvendig :) De er bygget op i forskellige områder kaldet "segments". En exe-fil har mindst en code-segment og måske flere data-segments. Så hvis du ikke vil læse executables så skal du hente dit data og code segment ud på en eller anden måde :) Det lyder svært.

...drak for meget kaffe...

Mvh Intel4004
Avatar billede baxos Nybegynder
19. september 2007 - 19:36 #5
Ehm okay men sidder med lidt af et problem at jeg ikke har noget diskette drev *cry cry*.. så hvis jeg nu banker en emulator op på min computer kan jeg teste på den på den ene eller anden måde? :)
Avatar billede baxos Nybegynder
19. september 2007 - 20:52 #6
Lukker og opretter nyt spørgsmål
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester