안녕 하십니까? 다름이 아니라 page allocation과 vma allocation에 관해 궁금증이 있어 글을 씁니다.
제가알기로는 anonymous의 경우 page fault후 buddy로 부터 free page를 받아와서 page를 할당하는걸로 알고 있는데
vma allocation 하는 부분에도 page를 할당하는 부분이 있더라고요..
이때 부터 궁금증이 생긴게 vma가 먼저 생성이되고, 나중에 page fault후에 page가 alloc 되는건가요??
뭔가 정리가 잘안되는데... 예시로 어떤 프로그램이 실행이되면 binary를 읽고 text,data같은 영역이 vma로 할당이되고 그 후에 해당 page가 실제 메모리에 allocation이 되는건가요?? 간단하게 vma allocation과 page allocation의 관계에 대해 설명좀 부탁 드립니다.
.
cat /proc/3343/maps를 실행해보면 vma의 리스트가 출력됩니다. 어떤 주소에 어떤 크기로 어떤 파일에 대한 메모리 영역인지에 대한 정보가 vma이구요, vma영역이 생겼다고해도 정보만있고 실제로 메모리가 할당된 상태가 아닙니다.
그래서 프로세스가 직접 이 영역에 접근하면 page fault가 발생하고 메모리를 할당하고 등등을 하게됩니다.