한 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한다는 것만 알고 있자
'도서관 I > 리눅스' 카테고리의 다른 글
[바람이] gdb의 간단한 사용법 (2) | 2006.09.19 |
---|---|
[바람이] 간단한 Shell 명령어 정리 (0) | 2006.09.02 |
[바람이] task의 순환 (Running , Ready , Blocked) (0) | 2005.09.28 |
[바람이] linux-2.6.12.3 중에 sched.h안에 task_struct 분석 (0) | 2005.09.28 |
[펌] 특정 유저의 shell 접속 차단 (0) | 2005.08.22 |