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

 

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 강남쪽에서 하는 스터디 그룹있나요? [4] woos 2016.04.29 311
1564 스터디 내용중 mutex관련 질문 은두 2013.07.08 312
1563 [커널16차 A조]2주차 공지 및 참석인원 조사 [23] bigdu 2019.05.30 313
1562 커널 스터디 모임에 참여하고 싶습니다 [1] 꼬마툴 2016.05.05 323
1561 커널 B조 실시간 의견 공유를 위해 오픈채팅 개설합니다. [6] psionic 2016.04.25 338
1560 Kernel E팀 - 3주차 정리 노트 빈즈파덜 2016.06.22 344
1559 [커널 14차 D] 3주차 장소 및 진도 [9] 감기귤 2017.05.25 347
1558 [커널 15차 D팀] 7주차 스터디 장소 공지 [4] 라이더 2018.06.05 348
1557 ARMv7 아키텍쳐 메뉴얼 file 백창우 2011.08.03 353
1556 VFS inode에 대해서 돌고래너구리 2016.05.08 365
1555 [커널 15차 B팀] 스터디 장소 관련 [10] dudu 2018.04.26 371
1554 [커널 15차 A팀] 15주차(2018-08-04) 스터디 노트 코딩의노예 2018.08.06 372
1553 [커널 15차 B팀] 1주차 결과 [11] TUN 2018.04.29 377
1552 [커널 15차 B팀]4주차(2018-05-19) 스터디 결과 및 5주차(2018-05-26) 장소 공지 [8] HeyJin 2018.05.20 381
1551 [커널 15차 A팀] 3주차(2018-05-12) 스터디 노트 및 차주 장소 공유 [10] n5de 2018.05.12 382
1550 [커널 14차C] 9주차(20170708) 스터디 장소 공지 CLOCK 2017.07.06 383
1549 형상관리용으로 github에 저희팀이 사용할 리파지토리를 개설했습니다. [1] 미림 2016.06.06 393
1548 [커널16차 A조] 20주차(2019/10/26) 참석인원 조사 [10] bigdu 2019.10.21 407
1547 [커널 15차 A팀] 1주차(2018-04-28) 스터디 노트 및 결과 [3] n5de 2018.04.28 409
1546 13차 조건에 따라 cache_on 을 유보하는 코드 아루스 2016.06.25 415
XE Login