base_pml4
: 현재 실행 중인 프로세스의 페이지 맵 레벨4(pml4) 테이블을 가리키는 포인터pml4 table은 가상 메모리 주소 -> 물리 메모리 주소로 변환하는 데 사용되는 페이지 테이블 계층 구조의 맨 꼭대기에 위치한 테이블
page in/out
: 저장장치에서 메모리로 읽어오거나, 메모리에서 저장 장치에 쓰이는 것
page in/out 행위 안에 swqp in/out도 포함된다.
swap in/out
: swap area에서 물리 메모리로 들여오거나, 메모리에서 swap area로 내보내는 것
운영체제가 사용하는 물리공간은 RAM
이라는 주기억장치이다.
RAM은 휘발성 메모리로, CPU가 작업하고 있는 내용을 저장하는 공간이기 때문에 컴퓨터가 꺼지면 데이터는 모두 사라진다. 이와 달리 우리가 흔히 하드디스크라고 부르는 공간은 보조기억장치로, 직접 삭제하지 않는 한 데이터가 영구히 저장된다.
물리 메모리라고 하면 RAM을 가리키는 것이고, 스왑공간은 보조기억장치인 disk에 만들어진다.
메모리 공간이 이미 꽉 찼고, 스왑디스크에 있는 데이터를 읽어들이려는 상황이라고 가정해보자. 스왑이 이루어지는 순간은 다음과 같다.
- 메모리 할당 요청 들어옴
- RAM(물리 메모리)이 다 차서 page fault 발생
- page fault 핸들러에서 삭제할 페이지를 선정
- 스왑 공간(디스크)으로 페이지 이동 -> swap out
- 새롭게 생겨난 프레임 공간(물리 메모리)이 할당됨
- 스왑 공간의 데이터를 RAM으로 이동 -> swap out
anonymous page
: 특정 파일에 매핑되지 않은 페이지
커널로부터 할당된 페이지로 이름이 있는 파일 소스를 가지고 있지 않기 때문에 익명이라고 함.
익명 페이지는 실행 가능한 파일에서 스택과 힙 영역에 사용된다.
디스크에 있던 프로그램이 실행될 때 코드/데이터 섹션은 메모리에 file-backed page로 load 되지만, 스택과 힙 섹션은 anonymous page로 메모리에 할당된다.
fild backed
: 특정 파일과 매핑된 페이지 (파일 기반 페이지)
memory-mapped file
: file backed page와 연결된 파일
이 페이지 안의 내용은 이미 디스크에 존재하는 파일의 데이터를 복제하기 때문에 page fault가 발생했을 때 즉시 디스크->프레임에 할당된다. 메모리가 해제되거나 swap-out되면 메모리 내 변경 사항은 파일로 반영된다.