Почему область отображения памяти растет в Linux - PullRequest
0 голосов
/ 30 ноября 2009

Рассмотрим это Поскольку этот регион отображает файлы как динамически загружаемые библиотеки, я считаю, что в идеале он должен расти. это можно реализовать, запустив область mmap между RLIMIT_STACK и началом кучи. какие проблемы возникнут в этом случае.

если он уменьшается, то как создается новая область отображения памяти. предположим, что мы хотим отобразить код для abc.so в виртуальном адресном пространстве, тогда нам нужно создать пространство sizeof (abc.so) в направлении вниз и файл карты, начиная с нижней части этой области. это как это работает?

1 Ответ

1 голос
/ 30 ноября 2009

Вы уверены, что не путаете «вверх» на диаграмме с «вверх» в смысле увеличения адресов? Обратите внимание, что диаграмма имеет низкий адрес в верхней части адрес внизу, мой плохой].

Отображаемая область увеличивается в направлении более низких адресов. Почему ты чувствуете, что это должно расти в другом направлении? Если на карте файлы и куча начинаются в противоположных направлениях адресное пространство и расти навстречу друг другу, вы максимизируете Использование адресного пространства до столкновения областей.

Когда вы отображаете файл, вы просто отображаете подходящий диапазон адресов. быть поддержан файлом (от низкого до высокого адреса, который вы будет ожидать). При доступе к странице возникает сбой страницы и содержимое файла копируется в рамку страницы памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...