도와주세요!!
글 수 15,339
2017.02.02 03:12:39 (*.62.16.238)
18453
안녕 하십니까? 다름이 아니라 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의 관계에 대해 설명좀 부탁 드립니다.
vma allocation 은 가상 주소 공간상에 사용할 주소영역을 예약하게 되는 것입니다
그 후에 바로 해당 영역에 메모리를 할당해야 한다면 page allocation 을 하게 되는 것이고
이후에 실제 해당 주소 공간이 사용될때 할당을 해도 된다면
page falut 에 의해서 해당 주소 공간에 page allocation 이 이루어지게 됩니다
vma allocation 은 가상 주소 공간에 대한 예약이고 page allocation 은 물리적인 메모리를
가상 주소 공간에 매핑하는 작업이라 보시면 됩니다
기본적으로는 vma 할당이후에 page 할당이 이루어진다고 보아야 겠지만
특정한 상황을 생각한다면, 즉 이미 할당된 메모리를 가상 주소 공간에 추가로 매핑을 하는 경우를 생각한다면
반대의 경우도 발생할 수 있다고 말 할 수 있을 것입니다