Forum: Mikrocontroller und Digitale Elektronik Maschinencode in den Hauptspeicher und Daten in den Datenspeicher HEH?


von Samikukus (Gast)


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??

: Verschoben durch Moderator
von Dr. Sommer (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.