한 task는 mm_struct를 가지고 있다. (struct mm_struct* mm;)

mm은 Memory Management의 약자이다.

즉, task에 대한 Memory를 관리 해준다.

그림에서 보듯이 mm_struct는 vmarea 라는 구조체를 연결되어 가지고 있다.

이때 각각의 vmarea는 Text , Data , Heap , Stack 영역에 대한 Virtual한 Address 정보를 가지고 있다.



위에 그림은 한 task가 가지는 mm_struct가 관리하는 Virtual Memory를 표현하고 있다. (제가 그려서 좀 허접하죠 @^-^@)

이때 text, data, heap , stack을 관리하는 vmarea는

말그대로 Virtual Memory Area를 관리한다.

때문에 mm_struct는 Logical(virtual이라고 볼수도...)과 Physical

Memory간에 Mapping이 필요하게 된다.

쪼~~~기 위에 그림을 다시 보면 mm_struct는 또 pgd(Page Directory Table)를 가지고 있다.

이것이 바로 Logical과 Physical을 Mapping해주는 역할을 한다.

pgd 는 각각에 대해 pmd(Page Middle Directory Table)을 가지며

pmd는 pte(Page Table Entry)를 가진다.

pte는 dirty나 ref copy등을 처리하지만, 여기선 논외로 한다.

이런 방식을 통해 Logical과 physical을 Mapping한다는 것만 알고 있자

+ Recent posts