3 Stimmen

Wenn ein Programm vom Betriebssystem aus dem Dateisystem in den Speicher geladen wird, woher weiß das Betriebssystem dann, wie groß das Programm ist?

Wenn ein Programm vom Betriebssystem aus dem Dateisystem in den Speicher geladen wird, woher weiß das Betriebssystem dann, wie groß das Programm ist?

Wird jeweils nur eine Seite aus dem Dateisystem eingelesen? Oder gibt es eine Art Hardware- oder Software-Indikator, damit das Betriebssystem weiß, wie groß das Programm ist?

2voto

P.T. Punkte 23925

Am Anfang der ausführbaren Datei befindet sich ein Header, in dem die Abschnitte der ausführbaren Datei für das Betriebssystem festgelegt sind. Unter Linux ist dies im Allgemeinen der "ELF"-Format Unter Windows hat es ein anderes Format, aber die Idee ist dieselbe.

Die Abschnitte der ausführbaren Datei können direkt in den Speicher kopiert oder bei Bedarf geladen/ausgelagert werden. Einige Abschnitte können virtuell sein (z. B. sagt das Layout "Ich brauche 8 MB Speicher mit Nullen", aber die Datei enthält tatsächlich keine 8 MB Nullen). Abschnitte können im Speicher verschoben werden oder an einer festen Stelle im Speicher geladen werden.

Nur die erste ausführbare Datei wird auf diese Weise vom Betriebssystem geladen. Alle anderen Dateien (oder dynamisch verknüpfte Bibliotheken usw.) werden indirekt vom Betriebssystem geladen (die Anwendung fordert lediglich Speicher an, bittet darum, dass Bits von Dateien in diesen Speicher kopiert werden, und springt dann in diesen Code).

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X