- TLB도 캐시 메모리의 일종
- CPU가 요청한 페이지가 이미 물리 메모리에 있다면 접근과정(주소변환)에서 OS의 역할은 없다
- page fault가 생겨 OS가 제어권을 가질때만 관여하므로 LRU, LFU 모두 사용 불가(참조시각, 참조빈도 모름)
- 하드웨어적으로 물리 메모리에서 바로 참조한 페이지는 page table의 reference bit을 1로 설정
- replacement 상황 시 OS가 bit=1인 페이지는 0으로 바꾸고 다음으로 이동하면서 최초로 bit=0인 페이지 교체
- modified bit 사용하여 CPU가 write로 접근한 페이지에 대한 처리 가능하게 함(변경사항 반영하여 디스크에 저장)
- 가급적 modified bit도 0인 것을 우선적으로 교체
- 메모리의 각 페이지가 어떤 프로세스의 것인지도 전체적인 효율성에 영향이 있으므로 할당하는 기준이 필요하다
- 균형이 잘 맞지 않으면 page fault가 더 자주 발생해 효율을 낮춘다
- global replacement: replacement 작업이 어느정도의 할당에 준하는 효과를 내게끔 할 수도 있다 (애초에 할당 X)
- local replacement: 프로세스별로 할당 후 각자 알아서 할당 범위 내에서 replacement
- 어느 정도까지는 프로세스가 많아질수록 CPU가 일하는 비율 상승(I/O하러 가는 프로세스 있어도 다른 작업 가능)
- 각 프로세스 별로 할당된 메모리가 너무 적어지는 상황이 오면 page fault의 빈번한 발생으로 효율 감소
- 집중 참조 페이지 집합 전체가 메모리에 올라갈 수 없는 경우 모두 반납하고 suspended 상태가 되게한다
- 과거 정보를 통해 working set 예측 (미리 정확히 알 수 없음) -> Δ 내에 해당하는 페이지의 집합이 working set
- 실제 page fault 빈도를 체크하며 너무 빈도가 높은 프로세스에 메모리 더 할당, 낮은 프로세스에 메모리 뺏음
- 빈 메모리가 없어 할당할 수 없다면 그 할당이 필요한 프로세스 전체를 swap out
- 64bit 체제와 메모리 크기의 증가로 page 크기가 커지는 추세
- 페이지 테이블 크기 증가로 메모리 낭비
- 보통 프로세스에서 사용되지 않는 부분이 매우 많으므로 더 잘게 자르면 더욱 더 실제 사용되는 부분만 활용 가능
- 페이지 크기가 커질수록 locality를 page fault 없이 활용 (한 페이지에 집중 참조되는 부분이 더 많아지므로)
- 페이지 크기가 작을수록 page fault가 더 발생해 디스크로 I/O 하는 매우 시간이 긴 작업이 더 빈번해진다
출처: https://core.ewha.ac.kr/publicview/C0101020140513133424380501?vmode=f
'CS > OS' 카테고리의 다른 글
25. File System Implementations 1 (0) | 2022.04.12 |
---|---|
24. File Systems 1 (0) | 2022.04.12 |
22. Virtual Memory 1 (0) | 2022.04.06 |
21. Memory Management 4 (0) | 2022.04.04 |
20. Memory Management 3 (0) | 2022.04.04 |