PintOS Memory Management WIL

정글일지 37

WIL(23/05/16)

Memory Management

struct page : union

union : C에서 다른 type의 data를 같은 메모리 위치에 저장하는 data type임. 여러가지중 한번에 하나의 value만 가질 수있음.

여기서는

  1. struct uninit_page uninit
  2. struct anon_page anon
  3. struct file_page file

세가지가 있음. 즉 page는 3개 중 하나의 형태를 가지는데 처음에는 uninit이였다가 anon,file 둘중 하나로 갈라진다.

enum vm_type

VM_UNINIT(0, 초기화안됌), VM_ANON(1, 파일 없이 anonymous page), VM_FILE(2,파일 있음), VM_PAGE_CACHE(프4 내용)

맨 처음엔 UNINIT 상태로 시작. 그 후 ANON이나 FILE로 갈라지는듯.

VM_MARKER

정보 저장(state)을 위한 보조 비트 플래그 마커!

supplemental page table

supplemental page table은 각 페이지에 대한 추가적인 정보를 보충해줌. 페이지 테이블의 형식으로 인한 한계로 인해 요구됌

목적 : page fault 발생한 페이지를 spt에서 찾아 있었어야할 데이터 알아내기, 프로세스가 종결되면 커널은 spt를 통해 free할 자원 결정

spt의 구성원 추적을 위해 페이지 테이블 쓸 수도 있음.

page fault 의 의미

버그로 취급했던 프로젝트 2와 다르게 3에서는 파일이나 swap slot과 연결되야 함을 나타내는 것.

※이후 추가적으로 업데이트할 예정.