23.07.15 최초 작성
23.12.11 내용 추가 (Page Fault, Page를 활용한 가상 메모리 기술, Swapping)
OS가 가상 주소를 통해 메모리를 관리하는 방법.
페이지 단위로 Swapping을 하는 방식이며 페이지를 사용하는 시스템에서 사용할 수 있다. 프로세스 전체를 외부 저장장치에 저장하지 않고 프로세스의 페이지 일부를 외부 저장장치에 저장한다.
V bit
가 활성화되지 않은 상태에서 page를 접근하는 경우 발생major faults
page fault handler
는 해당 가상 페이지의 디스크 위치를 찾아 메모리에 적재minor fault
PTE
의 V bit
가 활성화되지 않은 경우invalid page fault
segmentation 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에 백업을 해야 한다.
잘봤습니다. 좋은 글 감사합니다.