Martin Speiser: Wie ist das noch gleich mit den Computern? *g*

Beitrag lesen

Hi Frank,

na dann will ich mal für noch mehr Verwirrung sorgen <g>

Um eine EXE-Datei auszuführen (bzw. eigentlich jedes Programm unter irgendeinem OS) lädt das
Betriebssystem, also der Kernel,

dieser Teil vom kernel wird als Loader bezeichnet.

das Programm in den Speicher und übergibt dem Prozessor die
Speicheradresse der ersten Maschinencode-Anweisung.

Bei modernen Betriebssystemen nicht ganz. Zuerst werden die externen Referenzen (Sprungziele in DLLs) aufgelöst, das Code-Segment auf execute-only gesetzt, und ein paar Sachen mehr, mit denen ich mich nie beschäftigen musste. Ältere Betriebssysteme hatten einfach einen Jump oder Call auf die Einsprungadresse.

Der Prozessor beginnt dann an dieser Stelle
und arbeitet die Maschinencodes nach und nach ab, bis er auf eine Anweisung trifft, die diese Abarbeitung
beendet (hm, ein einfacher Interrupt schätze ich, kann mich aber auch irren).

Das müsste ich mal debuggen um genau zu sein, aber ich denke, dem Betriebssystem wird einfach mitgeteilt dass das Programm jetzt fertig ist, durch einen Betriebssystemaufruf.

Das Betriebssystem tut also überhaupt nichts weiteres, um dem Prozessor irgendwie den Maschinencode
zur Verfügung zu stellen oder nochmal zu interpretieren und dann entsprechende Prozessor-Befehle
auszuführen.

ps. Das ist alles schon relativ lange her. Schlagt mich nicht, wenn ich jetzt teilweise Müll erzählt habe ;)

Nicht nur bei dir. Fehlt zur ursprünglichen Frage nur noch dass ein C/C++-Compiler heutzutage auch in C geschrieben ist.

Gruß,
Martin