본문 바로가기

Programming

Linux vmarea structure

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