가상 메모리
가상 메모리의 관리 목적 : 가상 메모리 시스템 성능 최적화
--> Page fault rate를 최소화 할 수 있도록 전략들을 설계해야 함
가상 메모리의 성능 향상을 위한 하드웨어적인 요소들이 있다.
가상 메모리 성능 향상을 위한 소프트웨어적인 관리 기법들은 다음과 같다.
Locality의 특성 활용
Allocation strategies에 따라 달라짐
LRU에서 매번 횟수를 기록하여 overhead 가 커지는 단점을 보완하기 위해 매 횟수를 기록하는 것이 아닌 일정 기간 동안 참조 여부를 파악하는 방식으로 단순화함
이 때, hardware component 인 Bit vector를 사용함.
NUR 알고리즘을 실제 적용한 사례가 아래의 Clock 알고리즘임
시계침이 페이지를 지나가는 순간 reference bit 상태가 초기화됨
프로세스에게 할당하는 메모리 공간의 크기가 가변적인 경우
[
-> 포함 (
-> 미포함window 는 최소 1개부터 최대 개의 페이지를 참조할 수 있다.
Q : MA 가 고정이고 값이 가변적일 경우?
A : Fixed allocation 의 LRU(Least Recently Used) 알고리즘과 유사함
window size : 얼만큼의 구간을 볼 것인가?
ws : memory allocation size
Locality 의 영향으로 Window size가 커질수록 초반에는 WS size가 급격하게 커지지만 어느 수준 이상이 될 경우, WS size는 유지됨
-> 지역성의 특성상, 참조하는 페이지만 계속해서 참조함
Working set 에서 다른 working set 으로 전환될 때, 일시적으로 working set size(메모리 할당)가 증가한다. 이를 working set transition 이라고 한다.
할당하는 페이지 수가 다르기 때문에 Page fault 외의 평균적인 page frame 수, page fault를 처리하는 비용, page frame 유지 비용 등과 같은 지표도 함께 봐야 함.
threshold value() : page fault 빈도를 측정하기 위한 기준 시간, 이 값에 따라 성능이 좌우됨
내부 단편화 : Internal fragmentation
I/O 시간 : swap device 에서 읽어야 하는 data 가 많다.
Locality : page 크기가 크면 필요치 않은 데이터도 같이 메모리에 올라간다.
Page fault : 페이지 교체의 빈도
Q : 왜 페이지 크기는 점점 커지는 경향을 갖는가?
A : CPU 성능 향상 속도가 상대적으로 swap device 의 성능 향상 속도에 비해 빨라지고 있으며 이로 인한 격차가 커져 I/O 병목 현상 발생한다. 상대적으로 I/O 시간을 감소시키는 방향으로 가는 것이 효과적이다. 메모리도 커지고 있기 때문에 페이지 크기가 너무 작은 경우 page fault 가 증가하여 커널에 부담을 줄 수 있다.