2026/05/20 5

Pintos Project 3 VM 5편: mmap과 File-backed Page

Project 3 VM 시리즈 5편파일을 주소공간에 연결하고, fault와 dirty bit 기준으로 읽기와 write-back을 처리하는 흐름을 정리한다.이번 글에서 다루는 것mmap은 파일 내용을 단순히 read로 복사하는 기능이 아니다. 파일의 일정 구간을 유저 주소공간에 연결하고, page fault와 dirty bit를 기준으로 읽기와 되쓰기를 나누는 VM 기능이다.mmap 요청을 syscall에서 어떤 조건으로 거르는지 본다.file-backed page가 어떤 metadata를 들고 있는지 확인한다.lazy file page가 fault 시점에 읽히고, munmap/eviction 시점에 dirty page만 파일에 쓰이는 흐름을 정리한다.기준 코드글의 기준은 week11-team-03-pi..

개발/프로젝트 2026.05.20

Pintos Project 3 VM 4편: Frame Table, Swap, Eviction

Project 3 VM 시리즈 4편물리 메모리가 부족해졌을 때 frame을 고르고, page 종류별로 안전하게 내보내는 흐름을 읽는다.이번 글에서 다루는 것SPT가 page의 장부라면 frame table은 실제 물리 메모리 칸의 장부다. 이번 글에서는 frame이 부족할 때 어떤 frame을 희생시키고, page 종류에 맞게 어떻게 내보내는지 정리한다.page와 frame의 생명주기를 분리해서 본다.second-chance eviction이 accessed bit를 어떻게 사용하는지 본다.anonymous page가 swap disk로 나갔다가 다시 들어오는 흐름을 코드 기준으로 따라간다.기준 코드글의 기준은 week11-team-03-pintos-vm의 pair-a 브랜치다. COW는 이번 구현 범위..

개발/프로젝트 2026.05.20

Pintos Project 3 VM 3편: Stack Growth와 Syscall Pointer 검증

Project 3 VM 시리즈 3편SPT에 없는 주소를 실패로 볼지, 새 stack page로 만들지 판단하는 기준을 정리한다.이번 글에서 다루는 것이번 글은 SPT에 없는 주소를 어떻게 판단할 것인가를 다룬다. VM에서는 SPT에 없다고 바로 죽이면 안 되는 경우가 있다. 대표적으로 stack이 아래 방향으로 자라야 하는 상황이다.stack growth 후보를 판단하는 기준을 본다.user mode와 kernel mode에서 사용할 rsp가 달라지는 이유를 정리한다.syscall의 user pointer 검증이 lazy page와 stack growth를 함께 고려해야 하는 이유를 확인한다.기준 코드글의 기준은 week11-team-03-pintos-vm의 pair-a 브랜치다. COW는 이번 구현 범..

개발/프로젝트 2026.05.20

Pintos Project 3 VM 2편: Lazy Loading과 Page Fault 연결

Project 3 VM 시리즈 2편파일을 먼저 다 읽는 방식에서, 접근한 page만 fault 시점에 읽는 구조로 바뀐 흐름을 정리한다.이번 글에서 다루는 것이번 글의 핵심은 실행 파일을 load 시점에 전부 읽지 않는 것이다. pair-a 구현은 실행 파일의 각 구간을 SPT에 먼저 등록하고, 실제 파일 읽기는 page fault가 났을 때 수행한다.load 시점에는 page와 aux만 등록한다.page fault 시점에 vm_try_handle_fault()가 SPT를 찾아 claim한다.uninit page의 initializer가 실행되며 파일 내용이 frame에 채워진다.기준 코드글의 기준은 week11-team-03-pintos-vm의 pair-a 브랜치다. COW는 이번 구현 범위에서 제외한..

개발/프로젝트 2026.05.20

Pintos Project 3 VM 1편: SPT라는 VM 장부 만들기

Project 3 VM 시리즈 1편PML4만으로 설명되지 않는 lazy page와 VM 메타데이터를 SPT로 분리해서 읽어본다.이번 글에서 다루는 것Project 3 VM을 시작하면 가장 먼저 부딪히는 질문은 “페이지가 아직 물리 메모리에 없는데도 어떻게 정상 상태로 관리할 수 있나?”이다. 이 글은 그 답으로 등장한 SPT(Supplemental Page Table)를 정리한다.PML4와 SPT가 서로 다른 일을 한다는 점을 먼저 분리한다.가상 주소 하나가 struct page로 연결되는 흐름을 본다.SPT 검색, 삽입, 삭제 코드가 이후 lazy loading, stack growth, swap, mmap의 발판이 되는 이유를 확인한다.기준 코드글의 기준은 week11-team-03-pintos-vm..

개발/프로젝트 2026.05.20