VM area 는 리눅스상에서 여러개의 페이지를 하나로 묶어서 관리하기 위해 사용된다.
리눅스에서 특정 프로세스의 /proc/pid/maps 를 확인해보면 아래와같이 RWX 권한이 부여된 메모리 영역의 리스트가 나타난다.
이 리스트의 엔트리 하나하나가 커널상의 struct vmarea 에 연결된다.
하나의 vmarea 속에는 여러개의 페이지가 들어갈 수 있으며 이들은 struct vmarea 구조체에서부터 struct page 에 대한 포인터를 통해 따라갈 수 있다. 또한 하나의 프로세스는 여러개의 vmarea 를 가지게 되는데, 이러한 vmarea 들은 서로 연결리스트형태로 이어져있고 출발점은 struct mm 구조체로부터 따라갈 수 있다. struct mm 구조체의 경우 프로세스당 1개가 존재하며 struct task_struct 자료구조의 멤버로 존재한다.
이를 그림으로 정리하면 아래와 같다.
'Programming' 카테고리의 다른 글
QEMU NAT configuration (0) | 2013.09.17 |
---|---|
Windows PE Structure (0) | 2013.09.12 |
IDA FLIRT Symbol Recovery (0) | 2013.09.10 |
ARM Soft-MMU implementation (0) | 2013.08.29 |
Linux Kernel 3.8.x Structure Definitions (0) | 2013.08.28 |