Linux 프로세스에 대한 상위 가상 주소의 커널 매핑에 대해 몇 가지 질문이 있습니다.
RAM에 저장된 커널 텍스트 세그먼트에 매핑됩니까(
vmlinuz
RAM으로 가져올 것이라고 읽었습니다)?그것은 무엇을 위해 사용됩니까?
프로세스 표현은
pmap
exe의 세그먼트, 공유 메모리, 스택 및 힙에 매핑됩니다. 매핑된 상위 주소 코어를 계속 볼 수 있습니까?
답변1
커널 바이너리 매핑을 포함하여 다양한 용도로 사용됩니다. x86-64 매핑은커널에 기록됨, 0xffffffff80000000( 에 해당)에 커널 텍스트 맵을 표시합니다 vmlinuz
. 다른 용도로는 커널에 의한 메모리 할당과 물리적 메모리의 완전한 매핑이 있습니다.
레거시 vsyscall 매핑을 제외하고 커널에 할당된 주소 공간은 프로세스 매핑에 나타나지 않습니다. 실제로 KPTI의 경우 사용자 모드에서는 대부분의 커널이 메모리에 전혀 매핑되지 않습니다.
당신은 또한 볼 수 있습니다주소 공간의 커널 공간은 어떻게 우리를 위해 예약되어 있습니까?그리고 거기에 연결된 다른 질문도 있습니다.