Hoe werkt een kernel?

Pagina: 1
Acties:
  • 231 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 20:52
Voor de nerds: Hoe wordt een kernel geprogrammeerd? IK bedoel: Als je de kernel compileerdt in C, hoe gaat dat dan? Naar welke taal wordt het gecompileerdt? Leg dat maar eens even uit! ;)

Acties:
  • 0 Henk 'm!

Verwijderd

neem aan dat je het over linux hebt,
wat denk je dat het nut van compilen is ?
het word omgezet naar de machine instructies van de desbetreffende machine, of het nu een
i386, z80, risk proc, alpha etc is doet er natuurlijk niet toe, als er maar een op c georiënteerde compiler is.

Acties:
  • 0 Henk 'm!

  • KlaasB
  • Registratie: Juli 2000
  • Laatst online: 01-07-2024
http://www.li.org/li/linuxhistory.shtml

Ome Linus leest voor uit eigen werk :)

It's not a bug, it's a feature


Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 20:52
Ja, maar ergens moet er een start zijn, ik bedoel, een Windows compiler compileert (meestal) voor Windows, en een Linux voor Linux. Tsja, ik kan het niet goed uit leggen, probeer het dan maar eigenlijk een betje te raden.

Acties:
  • 0 Henk 'm!

  • Nazgul
  • Registratie: Februari 2000
  • Laatst online: 11-10-2022

Nazgul

Digital Pizza Crew

Voor welk OS je ook compileert, je compileert uiteindelijk toch naar microcode en die is processor architectuur afhankelijk.
Het verschil tussen Linux en Windows gecompileerde applicaties zit hem in de componenten van de applicatie die gebruik maken van door het OS geleverde functionaliteiten, zoals het werken met bestanden, geheugen, etc. Een applicatie onder windows spreekt op een andere manier met het OS dan een Linux applicatie onder Linux, maar beiden spreken ze wel op microcode niveau met elkaar.

Zo wat duidelijker?

No trees were killed in the sending of this message. However a large number of electrons were terribly inconvenienced.


Acties:
  • 0 Henk 'm!

  • KlaasB
  • Registratie: Juli 2000
  • Laatst online: 01-07-2024
vinnie, als je die url nou even gelezen had.
Linus is dus begonnen op een ander OS (minix) daar schreef hij code, en die probeerde hij te laten booten. Als jouw code dan op een gegeven moment helemaal zelf kan booten en wat minimale hardware aan kan spreken, dan kun je dus daarmee verder.

De manier waarop de kernel met je hdd communiceert is voor elk os 'hetzelfde', de informatie die de kernel terug geeft aan de applicaties verschilt per os. Het is dus die kant van de kernel die het os bepaald.

It's not a bug, it's a feature


Acties:
  • 0 Henk 'm!

  • tweakerbee
  • Registratie: Maart 2000
  • Laatst online: 07-10 19:09

tweakerbee

dus..?

Volgens mij bepaalt het OS die kant van de kernel ;)

Schoonheidsfoutje...

You can't have everything. Where would you put it?


Acties:
  • 0 Henk 'm!

  • Aaargh!
  • Registratie: Januari 2000
  • Laatst online: 04-10 10:28

Aaargh!

Bow for me for I am prutser

[melig mode]
Q: Hoe werkt het linux kernel
A: Goed.
[/melig mode]

Those who do not understand Unix are condemned to reinvent it, poorly.


Acties:
  • 0 Henk 'm!

  • Vinnienerd
  • Registratie: Juli 2000
  • Laatst online: 20:52
Okee, maar dan heb ik NOG een vraagje:
Onder welk "ÖS" draait de kernel dan? Of draaide Linus z'n eerste kernel onder Minix en heeft Linus toen langzaam maar zeker Minix regel voor programaregel weggewerkt?
En werkt een programma dan zo?:
PROCESSOR
|
KERNEL
|
PROGRAMMA
of:
PROCESSOR-----+
| |
KERNEL |
|
PROGRAMMA-----

Acties:
  • 0 Henk 'm!

Verwijderd

Linus bouwde een kernel, compileerde die, en verzon een programma om die kernel te booten, vergeet ook niet een minimale shell.
Je bouwt dus een programma dat je systeem kan booten, je hdd aan kan spreken, wat letters op beeld kan toveren en ook nog je toetsenbord begrijpt.

Acties:
  • 0 Henk 'm!

Verwijderd

Vinnienerd, ik geloof dat je gewoon eens wat goeie boeken over operating systems moet lezen.

Zoals jij het nu voorlegt is het hele verhaal van het ontstaan van een OS een 'kip & ei' probleem, dus zonder OS kan je geen kernel maken, maar zonder kernel kan je geen OS maken. Dat is niet waar.

Ik kan een heel OS op een type machine schrijven, die vervolgens omzetten in een machine leesbaar formaat (magnetische banden, bar code of pons kaarten for all I care) en een stuk hardware maken die dat OS uitleest en een doet wat ik wil. De stap is alleen erg groot. Toch is men een beetje op deze manier begonnen met het maken van computers. Het OS beperkte zich tot het uitlezen van ponskaarten, de ingegeven berekening uitvoeren en dan vervolgens dat op een line printer of iets dergelijks uitvoeren.

De huidige OSen zijn vrijwel allemaal gebouwd met tools die al bestonden en dus op voorgaande OSen werkten. Ook is het theoretisch heel goed mogelijk om op Windows een Linux programma te compileren als iemand de moeite zou nemen om een compiler te maken die dat kon, en ook andersom. Sterker nog, wie weet bestaan dergelijke compilers nu al.

Acties:
  • 0 Henk 'm!

Verwijderd

Meest duidelijke voorbeeld dat een OS geen kernel nodig heeft is MS-DOS! Een 'compleet' OS dat kan booten, besturen hardware etc. En dat allemaal zonder kernel.

De kernel is in principe toch de grote bouwsteen waar andere onderdelen van het OS en applicaties op draaien? Bv. IE bouwt scherm met daarop knoppen, events etc. De events en het renderen van HTML pagina's doet IE. De knoppen, of een beter voorbeeld: de bovenste titel balk (hier: Gathering of Tweakers - Reply to Topc - Microsoft Internet Explorer) met de bijbehorende knoppen voor verkleinen en sluiten schermen worden allemaal door de kernel, OF door een andere bouwsteen vh OS verwerkt. Deze andere bouwsteen werkt weer samen met de kernel. Stel ik sluit het scherm: muisklik event naar kernel -> kernel geeft bericht naar IE -> IE verwerkt evt. nog wat gegevens en weet dat het scherm gesloten wordt -> IE sluit af -> bericht IE naar kernel dat IE afgesloten is -> kernel verwerkt de verdere display op scherm (bv. focus naar andere actieve applicatie of het tonen van het bureaublad).

Mogelijk zit ik er hier en daar naast en schrijf ik wat ik bedoel een beetje krom op, maar ik hoop dat de gedachte erachter een beetje doorkomt. Zo niet, verbeteringen en verhelderende berichten laat ik over aan een andere GoT-er, kan ik gaan eten :)

Drinkus

Acties:
  • 0 Henk 'm!

Verwijderd

<quote>
Voor de nerds:
</quote>

Slechte opening! Je kunt met een beetje verstand van computers en programmeren via logisch nadenken al redelijk ver komen!

Drinkus

Acties:
  • 0 Henk 'm!

  • Onno
  • Registratie: Juni 1999
  • Niet online
Meest duidelijke voorbeeld dat een OS geen kernel nodig heeft is MS-DOS! Een 'compleet' OS dat kan booten, besturen hardware etc. En dat allemaal zonder kernel.
Welnee. Microsoft heeft er misschien geen plakkertje KERNEL op geplakt zoals bij Windows (KERNEL32.DLL, KRNL386.EXE) maar natuurlijk heeft DOS wel een kernel. Kernel betekent niets meer dan central or essential part; core. En zoiets heeft DOS ook. DOS is in feite alleen maar een kernel.
Pagina: 1