가상 메모리의 개념을 이해해야 합니다.
Linux 환경에서 한 프로세스가 4GB의 가상 메모리에 매핑된 2GB를 요청하면(1GB 커널: 3GB 사용자 공간) 다른 프로세스가 이미 2GB 맵을 보유하고 있습니다.
스택, 힙 및 데이터 세그먼트의 매핑은 어떻게 발생합니까? 내 이해를 설명하는 예를 찾을 수 없습니다. 교과서에서는 각 매핑을 개별적으로 언급할 뿐 실제 방법은 언급하지 않습니다.
답변1
3GiB의 사용 가능한 가상 주소 공간이 있고 프로세스의 텍스트, 스택, 힙 및 이전 메모리 맵이 함께 작은 양의 주소 공간(1GiB보다 훨씬 적음)만 차지한다고 가정합니다. 그런 다음 이 프로세스가 2GB 크기의 지도를 요청하면 문제가 없으며 지도를 수용할 수 있는 충분한 공간이 있습니다.
(실제로 이것이 사실이 아닌 작은 경우가 있습니다: 프로세스의 기존 매핑이 조각화되어 주소 공간 주위에 흩어져 있고 그렇지 않은 경우계속해서사용 가능한 주소 범위는 2GB입니다. 그러나 그럴 가능성은 낮습니다.)
다른 프로세스의 주소 공간에 어떤 매핑이 존재하거나 존재하지 않는 것은 중요하지 않습니다.