23.07.15 최초 작성
23.12.11 내용 추가 (Page Fault, Page를 활용한 가상 메모리 기술, Swapping)
OS가 가상 주소를 통해 메모리를 관리하는 방법.
페이지 단위로 Swapping을 하는 방식이며 페이지를 사용하는 시스템에서 사용할 수 있다. 프로세스 전체를 외부 저장장치에 저장하지 않고 프로세스의 페이지 일부를 외부 저장장치에 저장한다.

V bit가 활성화되지 않은 상태에서 page를 접근하는 경우 발생major faultspage fault handler는 해당 가상 페이지의 디스크 위치를 찾아 메모리에 적재minor faultPTE의 V bit가 활성화되지 않은 경우invalid page faultsegmentation fault)Page Table Entry에 동일한 물리 프레임 저장Page Table Entry가 clear되어야 함mmap()을 통해 접근mmap()을 통해 메모리를 할당하면 가상 메모리 영역에 V bit가 비활성화됨Page Fault 
프로세스를 복사(fork())할 때 Shared Memory 영역은 Virtual Memory Table에서 같은 공간을 가르키도록 함.
만약 해당 영역에 Write 할 수 있는 권한을 가진 상태라면 이 Write 권한을 임시로 없앤다. Write 요청이 들어오면 내용을 다른 영역에 복사하고 그 값을 수정한 뒤 Virtual Memory Table에서 가상 주소가 복사한 주소 값을 가리키게 한다. 이 때 Write 권한이 다시 활성화된다.
원본 프로세스 또한 위 과정을 거쳐 두 프로세스가 Write요청을 받으면 처음과는 다른 메모리를 할당받게 된다.
내용이 바뀌지 않으면 가상 주소가 공유 영역을 가리키되 내용이 바뀌면 다른 주소를 가리키게 된다.
해당 방법은 힙 영역에 데이터를 할당할 때에도 쓰인다. 만약 malloc()과 같은 함수로 메모리를 초기값 없이 할당하면 "Zero Page"라는 페이지에 매핑된다. 이 페이지는 Write 권한이 없는 Read 권한만 있는 영역이며 만약 이 영역에 데이터를 쓴다면 Copy-on-Write 방식으로 값이 입력된다.
Page를 활용해 메모리를 참조 시 성능이 느려질 수 있음Page Table접근, 물리 메모리 접근의 순서로 2번의 주소 공간 접근이 발생Page Table의 단계가 많아질수록 성능 하락TLB활용해 해결 
운영체제는 일반적으로 가상 주소공간을 2개로 나눠(User Address Space / Kernel Address Space) 관리한다. Kernel Address Space의 경우 Shared Page로 관리되며 프로세스끼리 공유한다.
한정된 페이지를 프로세스에 분배하는 방식.
1. Equal Allocaition
모든 프로세스가 동일한 페이지를 분배받음
2. Proportional Allocation
각 프로세스의 크기에 맞춰 페이지를 분배받음
3. Priority Allocation
프로세스의 중요도에 따라 페이지를 분배받음

물리 메모리가 모든 프로세스의 Working Set을 담을 수 없을 때 발생하는 성능 저하. Working Set이 메모리의 용량보다 훨씬 많을 때 Phasing이 자주 일어나게 되고 이는 성능 저하로 이어지게 된다.
Working Set : 프로세스가 사용하고 있는 페이지의 집합
Page Fault penalty가 크기 때문에 Page Fault Rate를 줄이기 위한 Page Replacement 원칙을 선정
프로세스는 할당된 가상 메모리 전체가 필요하지 않으므로 필요한 데이터만 적재하고 그렇지 않은 Page는 디스크로 적재
Swapping
Swap-in)하고 필요한 페이지를 메모리로 옮기는 (Swap-out) 작업Swapping실행Fault Rate를 보임. 
Reference Bit를 비교해 가장 작은 값을 가진 페이지를 제거한다. Reference Bit의 값은 참조되면 1이 입력되고 다음 작업에서 각 비트가 오른쪽으로 이동한다.
clock 알고리즘으로 널리 알려진 방식.
1 Global Page Replacement
전체 Frame 중 교체할 페이지를 선택하는 방법.
구현이 쉽고 최적의 성능을 이끌어내지만 프로세스마다 실행 시간의 편차가 크다.
2 Local Page Replacement
요청한 프로세스의 Frame 중 필요없는 영역을 교체할 페이지로 선택하는 방법.
성능이 일정하지만 구현이 어렵고 메모리의 활용성이 떨어진다.
Page Replacement에 의해 영향받지 않는 Page.

Heap 과 Stack 영역은 R/W이 가능해 데이터가 변경될 경우 Zero Page에 저장되며 Page 정보를 저장해야 한다(CoW).
Data 영역의 경우 R/W이 가능하며 CoW 방식으로 수정된다.
두 영역 모두 CoW 이후 Swap File에 백업을 해야 한다.
잘봤습니다. 좋은 글 감사합니다.