본문 바로가기

PINTOS 3주차 가상 메모리 관리 시스템


이번 주차의 주제는 프로세스에게 실제보다 많은 용량의 메모리 공간이 있다는 환상을 제공하고, 메모리 접근에 대한 protection을 보장하는 가상 메모리 관리 시스템이었다.

이번 주에 정리한 내용을 기록한다.

1. 다단계 페이지 테이블


하나의 프로세스가 사용할 수 있는 가상 메모리 주소 공간은 256TB이다. 실제 물리 메모리 공간이 4GB ~ 수 TB 정도라는 것을 생각한다면 엄청나게 큰 크기이다.

2. 가상 주소의 필드

가상 주소는 여러 필드로 이루어져있고 미리 정의된 매크로로 각각의 필드의 정보를 추출할 수 있다.

3. 페이지 테이블 엔트리

이번 주차에서는 보조 페이지 테이블을 구현하는 것이 과제였고 페이지 테이블 구현은 이미 완성되어 있었다. 그래도 페이지 테이블의 엔트리가 어떻게 이루어졌는지 확인하고 가면 좋을 것 같다.

4. 페이지 폴트 핸들링

이전 프로젝트에서는 잘못된 주소로 접근했을 때만 페이지 폴트가 발생했는데, 이번 주차에서는 보조 페이지 테이블에 있는 페이지에 물리 플레임이 매핑되지 않았을 때도 페이지 폴트가 발생하게 만들고 이를 핸들링해준다.

부록

1. 컨트롤 레지스터

모드 비트는 CR0에서 관리된다. 페이지 폴트가 발생한 주소는 CR2에서 관리된다. (핀토스에서 rcr2()를 통해 여기 저장된 주소를 구할 수 있다.) 페이지 디렉토리의 물리 주소는 CR3에서 관리된다.

2. 부팅 과정

loader.S를 살짝 살펴보니 컴퓨터를 부팅할 때 컴퓨터를 준비시키고 운영체제 커널을 준비시키기 위해 하드 디스크의 첫 번째 섹터를 물리 메모리의 정해진 주소에 로드시킨다고 한다.

'정글' 카테고리의 다른 글

Nginx  (1) 2024.12.18
PINTOS 4주차 Stack Growth  (0) 2024.10.22
PINTOS 2주차 Argument Parsing  (0) 2024.10.08
PINTOS 1주차 Blocked List, Scheduling  (0) 2024.10.01
[WEEK01] 첫 주를 시작하며  (0) 2024.08.10