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

 

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 2202
1565 cell simulator에 관해 궁금함이.. [5] 성진모 2007.06.19 10124
1564 6월 23일 스터디 참석못할꺼 같습니다. 남용우 2007.06.22 4239
1563 추억의 HelpPC 유틸리티를 웹으로 구현한 사이트 지현구 2007.06.24 4217
1562 오랜만에 인사~ ^^ [4] 정필섭 2007.06.25 9697
1561 크윽 [3] 김종화 2007.06.25 9735
1560 오늘 스터디참여 못할것같습니다... [3] 선준규 2007.06.30 4092
1559 0630 [6] 김강년 2007.07.01 10378
1558 이번주 토요일에 늦을 것 같습니다. [1] 박경태 2007.07.05 3890
1557 오늘 스터디 못감 김재호 2007.07.07 9574
1556 memory map in powerpc kernel [1] file 김강년 2007.07.08 11267
1555 한동안 못가는 이유 [5] 김종화 2007.07.11 9683
1554 늦게 갈것 같습니다. 7/14 [1] 유상민 2007.07.14 3971
1553 PPC64 의 경우 궁금한 점 ??? [1] 장석원 2007.07.14 10170
1552 죄송합니다. 오늘 참석 못할 것 같습니다 --; 지현구 2007.07.14 3455
1551 이번주 스터디는 불참입니다. [1] 이종우 2007.07.21 3263
1550 오늘 조금 늦을것 같습니다. [1] 선준규 2007.07.21 3571
1549 end_pfn의 값을 올립니다. 남용우 2007.07.25 3118
1548 모니터 케이블 [1] 백창우 2007.08.08 3702
1547 리눅스 메모리 Management 관련글입니다. [3] file 박경태 2007.08.08 5311
1546 BIOS 를 통하여 PCI configuration space를 액세스하는 방법 지현구 2007.08.12 22873
XE Login