PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux - Kernel/Stacks



El Goog
22.11.12, 00:00
Hallo,

ich lese gerade das Buch "Linux das umfassende Handbuch". Da dort auf dieses Forum verwiesen wird, hoffe ich mal, dass ich hier mit meiner Frage richtig bin.

Es geht um das Kapitel 5: "Prozesse, Tasks und Threads" und speziell um das Thema Stacks. http://openbook.galileocomputing.de/linux/linux_kap05_003.html#dodtp0276bdb0-9576-4677-a72e-2fafe62817f5

Ich versuche nun das Beispiel ("Hello World!"-Programm) nachzuvollziehen. Dazu habe ich mal eine kleine Paintgrafik angefügt (siehe Anhang). Meine Frage ist nun, ob der Stack etwa so aussieht wie in meiner Skizze?
Zuerst werden also die Daten aus der Funktion printf abgearbeitet und dann nach und nach zur main-Funktion bzw. dem Programmende zurückgesprungen.

Außerdem noch eine Frage zum gleichen Beispiel:
Dort steht bei "Aufruf von funktion1()", dass das Befehlsregister auf den Stack geschrieben wird. Das Befehlsregister kommt aber doch vom Prozessor. Das heißt der Prozessor hat bereits vom Programm einen Befehl erhalten und diesen in sein Befehlsregister aufgenommen. Wieso wird dieser Befehl jetzt wieder in einen (virtuellen) Speicherplatz abgelegt, statt ihn direkt zu verarbeiten?

Alles in allem ist das Kapitel über den Kernel ziemlich "harter Tobak" für mich. Ich frage mich, ob es zu diesem Thema nich eine einsteigerfreundlichere Lektüre gibt? Kann jemand ein gutes Buch/Internetlektüre empfehlen?

marce
22.11.12, 05:51
Außerdem noch eine Frage zum gleichen Beispiel:
Dort steht bei "Aufruf von funktion1()", dass das Befehlsregister auf den Stack geschrieben wird. Das Befehlsregister kommt aber doch vom Prozessor. Das heißt der Prozessor hat bereits vom Programm einen Befehl erhalten und diesen in sein Befehlsregister aufgenommen. Wieso wird dieser Befehl jetzt wieder in einen (virtuellen) Speicherplatz abgelegt, statt ihn direkt zu verarbeiten
Nein. In den Stack wird die Speicheradresse des nächstes Befehls geschrieben, der nach der Abarbeitung der funktion1 auszuführen ist - irgendwie muss das Programm ja wissen, wo es weitermachen muss...

derguteweka
22.11.12, 07:29
Moin,


Alles in allem ist das Kapitel über den Kernel ziemlich "harter Tobak" für mich. Ich frage mich, ob es zu diesem Thema nich eine einsteigerfreundlichere Lektüre gibt? Kann jemand ein gutes Buch/Internetlektüre empfehlen?

Ich frag' mal zur Sicherheit nach: Da gehts um ziemlich maschinennahe Innereien, die nichtmal linuxtypisch sind, sondern auf fast allen Mikroprozessoren und Betriebssystemen so ablaufen - willst du dich da reinwursteln oder gehts dir eher um einen Einstieg in Linux allgemein?
Dann koennte dir sowas naemlich wurscht sein - das ist so, wie wenn du einen Fuehrerschein machen willst und der Fahrlehrer faengt an, dir die chemischen Vorgaenge im Katalysator zu erklaeren...

Gruss
WK

El Goog
22.11.12, 09:29
Ich frag' mal zur Sicherheit nach: Da gehts um ziemlich maschinennahe Innereien, die nichtmal linuxtypisch sind, sondern auf fast allen Mikroprozessoren und Betriebssystemen so ablaufen - willst du dich da reinwursteln oder gehts dir eher um einen Einstieg in Linux allgemein?
Dann koennte dir sowas naemlich wurscht sein - das ist so, wie wenn du einen Fuehrerschein machen willst und der Fahrlehrer faengt an, dir die chemischen Vorgaenge im Katalysator zu erklaeren...

Gruss
WK

Ich wollte mal einen Einblick "hinter die Kulissen" bekommen (dabei war es mir eigtl egal ob Linux oder Windows. Da das Buch OpenSource ist, viel die Wahl eben auf Linux).

Ich hatte gehofft, dass das Buch einen groben Überblick verschafft und ich nicht die dicken Wälzer lesen muss. Aber es scheint, dass ich da wohl nicht drumherum komme. Kann jemand gute Bücher empfehlen?


Nein. In den Stack wird die Speicheradresse des nächstes Befehls geschrieben, der nach der Abarbeitung der funktion1 auszuführen ist - irgendwie muss das Programm ja wissen, wo es weitermachen muss...

Ok, das macht Sinn. Danke!