pmap -x
명령을 사용하여 Linux x86-64에서 프로세스의 메모리 맵을 보려고했습니다. 나는 pmap의 결과물을 보면서 혼란스러워했다. 특히 동적 라이브러리를 매핑하기위한 항목입니다. 그들에 대한 항목이 여러 개 있습니다 (실제로 모든 항목이 4 개이며, 일부 항목은 3 개 항목이 있습니다). 다음은 예를 들어이 더 페이지 권한이없는 동안 라이브러리 각각에 대한 두 번째 행은 항상 2메가바이트의 크기가pmap 출력을 이해하십시오
Address Kbytes RSS Dirty Mode Mapping
00000036ca200000 88 64 0 r-x-- libpthread-2.5.so
00000036ca216000 2044 0 0 ----- libpthread-2.5.so
00000036ca415000 4 4 4 r---- libpthread-2.5.so
00000036ca416000 4 4 4 rw--- libpthread-2.5.so
입니다. 모든 도서관에서 RSS는 항상 0 인 것처럼 보입니다. 마지막 두 행 또한 동일한 크기 (기본 페이지 크기)와 동일한 사용 권한 (소수 라이브러리에는 rw 매핑이 없음)이 있습니다.
아무도 이것에 대한 설명이 있습니까? 실제로 읽기 전용 보호가있는 매핑이 라이브러리의 메타 데이터를 읽는 로더에 의해 수행되는 반면 실행 권한이있는 부분은 실제로 라이브러리의 코드 인 것처럼 느껴질 수 있습니다. 나는 틀릴지도 모른다.
하지만 그 중간 행에 대해서는 단서가 없습니다. 허가가없고 사용법이 없습니까? 누구나 여기에 지혜가 있습니다.
또한 익명의 메모리에 있다고보고 된 페이지 몇 개가 보이며 모드 비트가 설정되어 있지 않습니다. 이것들은 무엇을 나타내는가?
[/ proc/$ pid/maps의 가능한 복제본은 x86 \ _64 linux에서 rwx 권한이없는 페이지를 보여줍니다] (http://stackoverflow.com/questions/16524895/proc-pid-maps-shows-pages-with) -no-rwx-permissions-on-x86-64-linux) –
은 오타를 수정하려고했습니다 : 라이브러리에 대한 코드를 실행 가능한 권한과 함께 사용합니다 * ... "is"가 누락되었지만있을 수없는 것 같습니다 100 % 확실; 너 도울 수있어? –