verstaendnis frage virtueller adressraum/speicher



  • moin

    also ich hab da mal ne frage dazu: also das konzept des virtuellen adress raums etc habe ich nun soweit alles verstanden, aber eine sache wird mir nicht klar:
    linux teilt ihn ja 3:1 zu eins auf, wobei 3/4 an den userspace gehen fuer prozesse und 1/4 an den kernel ansich geht.
    weiter ist es ja so das der vorhanden phys. speicher in den kernel space gemappt wird, daher auch das 1 gbyte limit (genauer 8xx mbyte)
    aber wieso wird der adressspace so unterteilt, und wieso wird nur 1/4 effektiv genutzt, und was passiert eigentlich mit dem 3/4 fuer den userspace? und wie sieht die verbindung userspace<->kernelspace aus? ich mein ein userspace prozess fordet 8 kbyte an, der MMU mappt die virt. adresse auf die phys. adresse, aber der phys. speicher ist doch im kernelspace gemappt?!

    ich hab mir das evtl so gedacht das das 1/4, also der kernel raum, die verwaltung uebernimmt, so kommt es auch etwas in linux kernelarchitektur rueber. daher wird der phys. speicher auch dort eingeblendet. aber was macht der 3/4 userspace bereich?

    naja ihr seht schon wo meine luecken bzw verstaendisschwierigkeiten sind 🙂 waere cool wenn jemand ein bisserl dazu schreiben koennt

    danke 🙂



  • Der physikalische Speicher wird nach und nach entweder Userprozessen in ihrem user space oder dem Kernel zugeordnet, je nach Anforderung. Das Mapping des kernel space ist in jedem Prozess gleich. Die Unterteilung ist nach meinem Wissen da, damit nicht bei jedem Switch zwischen Kernelmode/Usermode eine neue Pagetable reingeladen werden muss.



  • Der physikalische Speicher wird nach und nach entweder Userprozessen in ihrem user space oder dem Kernel zugeordnet, je nach Anforderung.

    mmh ich dachte der gesamte phys. speicher wird dem kernelspace zugeordnet

    Das Mapping des kernel space ist in jedem Prozess gleich. Die Unterteilung ist nach meinem Wissen da, damit nicht bei jedem Switch zwischen Kernelmode/Usermode eine neue Pagetable reingeladen werden muss.

    yo das macht sinn, aber ich versteh trotzdcem noch net wofuer die 3gbyte userspace da sind. wofuer ist das, was wird da gemacht, wenn der phys. speicher im kernelspace gemappt wird? wofuer ist dann der userspace da?



  • Irgendwo müssen die normalen Prozesse doch ablaufen?



  • SG1 schrieb:

    Irgendwo müssen die normalen Prozesse doch ablaufen?

    ja, aber wozu 3 gbyte userspace speicher? dann wuerde es doch auch 1 gbyte oder weniger tun, welche prozess braucht bitte soviel speicher?! und dafuer koennte man dann doch mehr dem kernelspace geben, damit mehr phys. speicher gemappt werden kann, und highmem erst spaeter noetig wird



  • 3GB? Datenbanken, SAP und Applikation Server brauchen so viel. Linux kann ja sogar bis zu 64GB Speicher verwalten.



  • kingruedi schrieb:

    3GB? Datenbanken, SAP und Applikation Server brauchen so viel. Linux kann ja sogar bis zu 64GB Speicher verwalten.

    ja aber eine einzelne anwendung brauch doch net soviel. es laeuft doch immer nur eine anwendung gleichzeitig, also kann auch nur immer das zeug von einer anwendung im userspace sein.

    und was sich genau im userspace befindet hab ich immer noch net gecheckt. der ram wird doch im kernelspace gemappt und verwaltet, was befindet sich dann im userspace? ja gut der userprocess mit seinem programm code evtl, aber der kommt doch auch in den ram, der wiederrum im kernelspace ist.



  • Hast du schon mal was programmiert? Ohne das wirst du's wahrscheinlich nicht verstehen. Und wieso soll eine einzelne Anwendung nicht so viel Speicher brauchen? Sogar Spiele kommen mittlerweile ziemlich nahe an die 1GB-Marke heran.



  • ja, ich habe schon mehr als einmal was programmiert, und selbst wenn einige games an 1 gbyte rankommen, wieso braucht der userspace ganze 3 gbyte?

    und zudem, der kernel hat seinen space, die user prozesse haben ihren space, ok. aber der ram kann ja nur durch den kernelspace angesprochen werden, da er dort gemappt wird und vom kernel verwaltet wird. also macht der userpace doch nix anderes als uebern kernelspace ram zu benutzen?! wofuer hat der userspace dann selber 3 gib?

    naja wuerd mich mal ueber eine zusammenhaengende erklaerung freuen 🙂



  • daq schrieb:

    ja aber eine einzelne anwendung brauch doch net soviel.

    Wieso nicht? Halte ich durchaus für möglich.



  • Das Mappen ist ja schon ein Schritt weiter. Jeder Prozess kann eine bestimmte Menge an Speicher ansprechen, nach deiner Aussage Standardmäßig 3GB. Das Mappen hat damit noch gar nichts zu tun und geht dann in die Ebene, dass man nicht die 3GB resistent im RAM halten muss, was ja allein von der Menge her schon nicht geht (Wer hat schon 3GB oder gar 4GB?).


Log in to reply