Background

- 'DO NOT CHANGE' 적힌 부분은 수정 ㄴㄴ

- include/vm/vm.h + vm/vm.c
	가상 메모리 기본적 인터페이스 제공

- vm.h에서 VM_PAGE_CACHE는 Project 4에서 쓰는거

- include/vm/uninit.h + vm/uninit.c ## vm_type = VM_UNINIT
	초기화되지 않은 페이지들을 위한 기능 제공
	
- 현재 pintOS는 '모든 페이지가 초기화되지 않은 페이지로 설정'
	이후 anonymous page / file-backed page로 변환
	
- include/vm/anon.h + vm/anon.c ## vm_type = VM_ANON
	anonymous page를 위한 기능 제공
	
- include/vm/file.h + vm/file.c ## vm_type = VM_FILE

- include/vm/inspect.h + vm/inspect.c
	채점을 위한 메모리 검사 기능을 포함한 파일
	
- include/devices/disk.h + devices/disk.c
	블록 디바이스로의 섹터 기반 읽기/쓰기 제공
	블록 디바이스로 스왑 파티션에 접근할 때 사용

<aside> ✅

Untitled

</aside>

Pages

Untitled

[Pages]

63          48 47            39 38            30 29            21 20         12 11         0
+-------------+----------------+----------------+----------------+-------------+------------+
| Sign Extend |    Page-Map    | Page-Directory | Page-directory |  Page-Table |    Page    |
|             | Level-4 Offset |    Pointer     |     Offset     |   Offset    |   Offset   |
+-------------+----------------+----------------+----------------+-------------+------------+
              |                |                |                |             |            |
              +------- 9 ------+------- 9 ------+------- 9 ------+----- 9 -----+---- 12 ----+
                                          Virtual Address
                                          

[Frame]

                          12 11         0
    +-----------------------+-----------+
    |      Frame Number     |   Offset  |
    +-----------------------+-----------+
              Physical Address                                          
- x86-64 시스템에서는 물리주소에 있는 메모리에 직접적 접근이 불가
- pintOS에서는 커널 가상 메모리를 물리 메모리에 직접 매핑하는 방식으로 문제를 해결할거임

Page Tables

- Page Table은 CPU가 가상주소를 물리주소로 (Page -> Frame) 변환하기 위해 사용하는 자료구조
- threads/mmu.c 안에 페이지 테이블 관리하는 코드 제공

                           +----------+
          .--------------->|Page Table|-----------.
         /                 +----------+           |
        |   12 11 0                               V  12 11 0
    +---------+----+                         +---------+----+
    | Page Nr | Ofs|                         |Frame Nr | Ofs|
    +---------+----+                         +---------+----+
     Virt Addr   |                            Phys Addr    ^
                  \\_______________________________________/

Swap Slots