이제 VM 프로젝트의 마지막 swap in/out입니다그래서 스왑이 무엇이냐!Swap?운영체제에서 스왑(Swap)이란, 물리 메모리가 부족할 때 일부 페이지를 디스크로 내보내고다시 필요할 때 다시 불러오는 메커니즘을 말합니다 왜 쓰는가?사용 가능한 물리 메모리(프레임 수)는 제한됨모든 페이지를 메모리에 유지하는 건 불가능그래서 안 쓰이는 페이지는 디스크로 이동 → 메모리에서 제거이후 다시 접근되면 디스크에서 메모리로 복원기본 동작 흐름메모리가 가득 찬 상태에서 새로운 페이지 필요운영체제는 기존 페이지 중 하나를 골라 스왑 아웃디스크(스왑 영역)에 백업 → 메모리 해제나중에 해당 페이지 접근 시 → 스왑 인 발생디스크에서 다시 읽어와 메모리에 적재pintos에서의 swap? PintOS에서는 페이지 타입에..
spt관련 함수들을 구현 후 anon관련 함수들 등 유저프로그램 테스트 통과를 위해 남은 함수들을 보던와중.......lazy_load_segment?......uninit_initalize?나만 헷갈려?그래서 써보는 흐름글lazy_load_segment 흐름lazy_load_segment의 호출 시점 :페이지 폴트 발생 후, 해당 va의 페이지가 UNINIT 타입일 때 → uninit_initialize() 내부에서 호출하는 역할:해당 페이지를 디스크에서 읽어 메모리에 적재하는 함수 1. aux로 전달된 정보 기반으로어떤 파일에서 (file)어느 오프셋부터 (offset)몇 바이트를 읽고 (read_bytes)나머지를 0으로 패딩할지 (zero_bytes)를 파악함 2. page->frame->kva주..