Maschinencode in den Hauptspeicher und Daten in den Datenspeicher HEH?

Gast #3238770
Lesenswert?

Irgendwie haut mich dieses von einem Freund empfohlene Buch voll aus dem 
Konzept.

Hier steht
http://openbook.galileocomputing.de/c_von_a_bis_z/014_c_dyn_speicherverwaltung_001.htm#mj8d062301d2449b13710f1484d499cd9b

dass die Variablen in einen Datenspeicher kommen und der Programmcode in 
den Hauptspeicher.

Stimmt dat aber soo??

Ich dachte immer die Daten (Variablen) kommen in den Hauptspeicher und 
die Maschinenbefehle kommen in den Prozessor, nur vorher stehen sie in 
der HDD und nicht im Hauptspeicher.

Kann mich da wer aufklären??
Gast #3238817
Lesenswert?

Samikukus schrieb:
> Ich dachte immer die Daten (Variablen) kommen in den Hauptspeicher und
> die Maschinenbefehle kommen in den Prozessor,
Der Prozessor kann aber typischerweise nur sehr wenige Befehle 
speichern. Jeden Befehl einzeln von der HDD laden wäre extrem langsam, 
und daher... werden sie im Hauptspeicher zwischengespeichert (und evtl. 
diverse Caches dazwischen), typischerweise in Form des gesamten 
Programms. Genau wie die Variablen - der "Datenspeicher" von dem du 
sprichst ist ebenfalls der Hauptspeicher... Tatsächlich könntest du 
einfach in eine Variable ein paar Instruktionen speichern und den 
Prozessor anweisen diese auszuführen. Da das aber genau das ist was 
Viren machen sorgen diverse Mechanismen im OS und im Prozessor dafür 
dass das nicht (so einfach) geht.
Wenn du das Betriebssystem anweist ein Programm zu starten, kopiert das 
OS den Code des Programms in den RAM, kopiert die Initialwerte der 
Variablen ebenfalls dahin, und weist den Prozessor an den Code im RAM 
auszuführen. Im Endeffekt kommt alles von der HDD oder CD oder Floppy 
oder... aber während der Ausführung wird es (normalerweise) im RAM 
gehalten.

Bei Mikrocontrollern sieht es oft etwas anders aus, da viele einen 
eigenen Speicher für das Programm haben (in Form von Flash), und jede 
Instruktion einzeln direkt von da geladen wird (was aufgrund der hohen 
Geschwindigkeit vom Flash und der relativ geringen des Prozessorkerns 
möglich wird). Bei einigen (zB ARM) gehört der Flash aber zum 
Hauptspeicher dazu, und man kann auch Code in den RAM speichern und wie 
oben beschrieben direkt von dort ausführen, es existiert somit aus Sicht 
des Prozessors kein Unterschied zwischen den beiden Speichern.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren