2 Stimmen

Virtueller Speicher, der einem Prozess zugewiesen wird

Ich habe über virtuellen Speicher, Paging usw. gelesen. Ich habe einige Zweifel dazu.

  1. Wenn ein Prozess erstellt wird, wie groß ist seine virtuelle Adressraumgröße?

  2. Ist die Größe für verschiedene Prozesse unterschiedlich? Wenn ja, wie wird dies entschieden?

  3. Wenn der Prozess während seiner Ausführung mehr virtuellen Adressraum benötigt, wie wird ihm die zusätzliche Speichermenge zugewiesen?

2voto

Jason Punkte 3757

Ich werde versuchen, in der Reihenfolge zu antworten, in der Sie gefragt haben.

  • Es gibt keine feste Anfangsgröße eines Prozesses
  • Ja, die Menge an Speicher, die einem Prozess zugeordnet ist, hängt von der Größe der ausführbaren Text-/Datenabschnitte, verknüpften Objekten, der anfänglichen Stapelgröße und der anfänglichen Heapgröße ab. Der Stapel wächst automatisch, da Adressen auf dem Stapel Seitenfehler verursachen.
  • Zusätzlicher nicht-stapelspeicher wird einem Prozess durch einen Aufruf an das Betriebssystem über einen Systemaufruf zugeordnet (sbrk(), mmap(), etc...)

2voto

qre0ct Punkte 5232

Es war eine brillante kurze Erklärung von Jason. Nur um darauf hinzuweisen und um mehr Klarheit zu schaffen, würde ich vorschlagen, auch das Format eines ausführbaren Bildes zu verstehen, zum Beispiel das ELF an sich. Ausführbares ELF erklärt wäre ein guter Ort, um ein grundlegendes Verständnis zu erlangen. Sie können auch die Verbindung zwischen ELF (Segmenten - ladbarer Abschnitte eines ELF ausführbaren) und VM nützlich finden.

Ein Verständnis des grundlegenden ausführbaren Bildes und welche verschiedenen Komponenten es gibt, wird Jasons Antwort ergänzen und auch Ihr Verständnis darüber, wie genau die Entscheidung getroffen wird, wie viel virtuellen Speicher einem Prozess zugewiesen wird.

Ich weiß, meine Antwort ist sehr spät mit Bezug darauf, wann Sie die Frage gestellt haben, aber hoffentlich hilft sie. Und falls Sie etwas Interessanteres und Einblicksreicheres finden, teilen Sie es bitte hier, damit auch andere davon profitieren können.

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