Понимание Linux / proc / id / maps

140
задан Bhargav Rao 2 April 2019 в 00:08
поделиться

2 ответа

Каждая строка в / proc / $ PID / maps описывает область непрерывной виртуальной памяти в процессе или потоке. Каждая строка имеет следующие поля:

address           perms offset  dev   inode   pathname
08048000-08056000 r-xp 00000000 03:0c 64593   /usr/sbin/gpm
  • адрес - это начальный и конечный адрес региона в адресном пространстве процесса.
  • права доступа - это описывает, как можно получить доступ к страницам в регионе. Есть четыре разных разрешения: чтение, запись, выполнение и совместное использование. Если чтение / запись / выполнение отключены, вместо r / w / x будет отображаться - . Если регион не является общим , он является частным , поэтому вместо s будет отображаться p . Если процесс пытается получить доступ к памяти недопустимым способом, генерируется ошибка сегментации. Разрешения можно изменить с помощью системного вызова mprotect .
  • смещение - Если регион был отображен из файла (с использованием mmap ), это смещение в файле где начинается отображение. Если память не была отображена из файла, это просто 0.
  • устройство - Если область была отображена из файла, это старший и младший номер устройства (в шестнадцатеричном формате), на котором находится файл.
  • ] inode - Если регион был отображен из файла, это номер файла.
  • pathname - Если регион был отображен из файла, это имя файла. Это поле пусто для анонимных сопоставленных регионов. Существуют также специальные области с такими именами, как [куча] , [стек] или [vdso] . [vdso] обозначает виртуальный динамический общий объект. Это' s используется системными вызовами для переключения в режим ядра. Вот хорошая статья об этом: «Что такое linux-gate.so.1?»

Вы могли заметить много анонимных регионов. Обычно они создаются mmap , но не прикрепляются ни к какому файлу. Они используются для множества разных вещей, таких как разделяемая память или буферы, не выделенные в куче. Например, я думаю, что библиотека pthread использует анонимные отображаемые области как стеки для новых потоков.

245
ответ дан 23 November 2019 в 22:59
поделиться

Отображение памяти не только используется для отображения файлов в память, но также является инструментом для запроса оперативной памяти у ядра. Это те записи inode 0 - ваш стек, куча, сегменты bss и многое другое

9
ответ дан 23 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: