ändert sich vm_area_struct beim Aufruf von malloc?

ändert sich vm_area_struct beim Aufruf von malloc?

Ich habe ein Lehrbuch gelesen, in dem es um virtuelle Speicherbereiche in Linux geht Bildbeschreibung hier eingeben

Wir können sehen, dass sich a vm_area_structauf einen Bereich im virtuellen Speicher bezieht vm_startund vm_endauf den Anfang und das Ende des Bereichs zeigt.

Wir wissen, dass der Kernel einen brkZeiger verwaltet, der auf die Spitze des Heaps zeigt. Meine Frage ist also: Angenommen, es sind keine freien Blöcke verfügbar, wenn wir mallocden angeforderten Speicher zuweisen. Rufen Sie in diesem Fall also mallocintern auf mmapoder sbrkholen Sie sich den angeforderten Speicher, sodass brkder Zeiger inkrementiert/anwächst. vm_area_structÄndert sich dann auch der Heap, vm_endwird er beispielsweise inkrementiert, um auf das Neueste zu zeigen brk?

Antwort1

Ja, brkändert die VMAs, um sie der geänderten Zuordnung anzupassen. Dies geschieht indo_brk_flags: Nachdem überprüft wurde, ob die Zuordnung möglich ist, und vorhandene VMAs bereinigt wurden, brkführt die Aktualisierung entweder dazu, dass ein vorhandenes VMA aktualisiert wird (sofern ein entsprechendes VMA vorhanden ist) oder ein neues VMA erstellt wird.

verwandte Informationen