오늘 제가 말씀드린 메모리 모델을 정리합니다.

 

32비트 2단계 메모리 모델에서

10비트 페이지 디렉토리 1개와 10비트 페이지 테이블 1개를 사용한다면

1개의 프로세스에서 사용하는 전체 크기는 최소 4K + 4K에서 최대 4K + 4M 입니다.

 

10비트 페이지 디렉토리 1개가 관리할 수 있는 메모리 크기는

10비트 페이지 디렉토리 x 10비트 페이지 테이블 x 페이지 크기,

1024 x 1024 x 4K = 4G 입니다.

 

즉, 1개의 프로세스마다 1개의 페이지 디렉토리를 사용해야 하고

task_struct 구조체 내에 있는 struct mm_struct *mm구조체 내의 pgd_t *pgd; 멤버 변수가

그 프로세스의 메모리를 관리하는 페이지 디렉토리의 주소를 가리킵니다.

 

따라서 프로세스마다 다른 값을 갖고 있으며

컨텍스트 스위칭이 일어날 때 pgd 변수값을 (x86 기준) CR3 레지스터에 세팅해주는 코드가 있습니다.

 

1개의 프로세스마다 10비트 페이지 디렉토리 1개를 사용하기 때문에

프로세스 개수 만큼 페이지 디렉토리가 필요하고

필요한 전체 크기는 프로세스 개수 x (최소 4K + 4K) 입니다.

 

위의 설명은 32비트 2단계 메모리 모델에서의 설명입니다.

이에 조금 변칙적으로 응용한 리눅스 32비트에서의 3단계 메모리 모델이나

64비트 3단계 모델과 4단계 모델도 방식은 다 비슷비슷합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2201
1065 이번주 스터디(5월 7일) [5] 최병욱 2011.05.06 2501
1064 5월 7일 스터디 장소 [6] file 이종인 2011.05.03 2564
1063 매핑(mapping)의 의미 [4] 홍문화 2011.05.03 8502
1062 물리 메모리 1MB 이하의 사용 [4] file 홍문화 2011.05.02 3839
1061 메모리 관련 검색링크입니다. [1] 김상식 2011.05.02 1875
1060 메모리 관리 관련 자료 입니다. [1] file 홍문화 2011.05.01 2804
1059 리눅스 커널 동영상 강의 [9] 이혁 2011.05.01 11198
» 메모리 모델에서 페이지 디렉토리와 페이지 테이블 [3] 무명 2011.05.01 7432
1057 장소 - 중앙대 공대(207동) 334호 강의실 (건물이 바뀌었습니다) [5] 이승한 2011.04.29 2781
1056 드뎌 낼 스터디네요 ^^ [1] 김윤기 2011.04.29 2129
1055 이번주 스터디?? [19] 최병욱 2011.04.28 2420
1054 오래된 자료이지만 상당한 도움이 되네요. [4] 홍문화 2011.04.28 2428
1053 스핀락 종결 [5] 홍문화 2011.04.27 4493
1052 이번주 스터디에 관하여 [1] 홍문화 2011.04.27 2302
1051 프로세스 context와 인터럽트 context에 대한 생각.. [5] 이종인 2011.04.25 9491
1050 스핀락에 대한 나름대로의 정리와 3가지 질문.. [19] 이종인 2011.04.25 8335
1049 local_irq_disable() [6] 홍문화 2011.04.24 5393
1048 Local IRQ [2] 유경환 2011.04.24 4427
1047 좀... 늦은감이 있는데... 권홍재 2011.04.23 2120
1046 커널 Review 참석하실분 의사 표명해주세요 [12] 김은혜 2011.04.21 3558
XE Login