가상메모리
Non countinuous allocation
사용자 프로그램을 block으로 분할하여 필요한 부분만 적재/실행
paging/segmentation system
가상메모리 관리의 목적
가상메모리 시스템 성능 최적화
cost model
다양한 최적화 기법
여러가지 cost model이 있지만, 가장 대표적인건
1. page fault frequency 발생빈도
2. page falut rate 발생률
즉 page fault rate를 최소화 할 수 있도록 전략들을 설계해야 한다.
context switch 및 커널 개입을 최소화 하여 시스템 성능을 향상시킨다.
위 용어들은 page system을 사용한다고 가정하고 진행한다.
segmantation system도 거의 유사하게 동작한다.
페이지 참조 문자열
내가 어떤 페이지를 어떤 순서로 참조했는지 문자로 기록해둔 것
시스템을 효율적으로 사용하기 위해 참고하고 사용할 용도로 기록해둔다.
오메가ω 로 표기한다.
page fault 발생률
∣ω∣는 페이지 참조 문자열의 개수 혹은 길이
즉 이 프로세스가 참조했던 페이지의 수
∣ω∣를 분모로 두고 page fault가 발생했던 수를 분자로 둔다.
translatation은 변환이라는 뜻
주소 사상을 효율적으로 수행하기 위해 사용한다.
대표적으로 TLB, Dedicated page table register, 캐시 메모리 등이 있다.
0과 1을 가지는 bit를 Arrays로 가진것이라고 봐도 된다.
Page 사용 상황에 대한 정보를 기록하는 비트들이다.
이 bit vectors는 가상메모리 관리를 효율적으로 사용하기 위해 이용되는데
예를 들어, 메인메모리에 page frame이 가득 찬 상황에서 새로운 page를 적재하려고 했을때
어떤 page frame을 빼고 새로운 page frame을 넣을지 결정할때 사용한다.
참조비트
이 페이지 프레임이 참조되었는지 아닌지 기록하는 bits
메모리에 적재된 각각의 page가 최근에 참조되었는지 표기한다.
운영
1. 프로세스에 의해 참조되면 해당 page의 reference bit를 1로 설정하고
2. 주기적으로 모든 reference bit를 0으로 초기화한다.
따라서 reference bit를 확인함으로서 최근에 참조된 page들을 확인 가능하다.
=Locality(지역성)
갱신 비트
이 페이지 프레임이 갱신되었는지 기록하는 비트
페이지가 메모리에 적재된 후 프로세스에 의해 수정되면 1로 설정된다.
주기적 초기화를 수행하지 않는다.
대신 메모리에서 나올 때 0으로 초기화된다.
왜 사용하는가?
페이지가 메인 메모리에서 수정되면 그 값이 swap device에 적재된 값과 달라진다.
따라서 변경된 값을 swap device에 반영해주는 write back이 필요하고,
write back 수행 여부 결정에 update bit가 사용된다.
Bit vectors는 다음과 같이 구성된다.
PMT에 reference bits과 update bits가 한개씩 존재하고,
각 bits에 bit가 페이지 프레임 개수만큼 존재한다.
즉 각각의 페이지 프레임마다 reference bit 하나와 update bit 한개씩 가지고 있다.
가상 메모리 성능 향상을 위한 관리 기법들
Allocation strategies(할당 기법)
Fetch strategies
Placement strategies(배치 기법)
Relacement strategies(교체 기법)
Cleaning strategies(정리 기법)
Load control strategies(부하 조절 기법)
각 프로세스에게 메모리를 얼마만큼 줄 것인가?
Allocation strategies에서 고려해야 할 사항으로는
프로세스 실행에 필요한 메모리 양을 예측하여 적당히 줘야 한다.
너무 큰 메모리를 할당했을 경우 메모리가 낭비되며
너무 적은 메모리를 할당했을 경우 page fault 발생률이 높아지므로 시스템 성능이 저하된다.
두개의 방법이 있다
프로세스의 실행 동안 고정된 크기의 메모리 할당
즉 할당받는 페이지 프레임의 수를 고정해서 준다.
프로세스의 실행 동안 할당하는 메모리의 크기가 유동적이다.
할당받는 페이지 프레임의 수가 유동적이다.
특정 페이지를 메모리에 언제 적재할 것인가?
Demand Paging이라고도 하며
프로세스가 참조하는 페이지들만 적재한다. 즉 필요한 페이지만 가져온다
Page fault overhead가 높다
일반적으로 준수한 성능을 보여주므로 대부분의 시스템에서 사용하는 기법이다.
pre paging 이라고도 하며
참조될 가능이 높은 page를 예측하여 가까운 미래에 참조될 가능성이 높은 page를 미리 적재한다.
예측 성공 시 page fault overhead가 없지만 예측 실패할 경우 overhead가 더 높으며
예측하는데 필요한 overhead가 발생(Prediction overhead)한다. 이는 커널의 개입이다.
또한 성능의 영향이 Hit ratio에 민감하다
page 혹은 segment를 어디에 적재할 것인가?
비어 있는 여러 공간들 중 어느곳에 page나 segment를 적재할 것인지 결정하는 전략
Paging System에서는 Page와 Page frame의 크기가 고정되어 있으므로 불필요하다.
why? 어디에 넣든 똑같으니까
Segmentation system에서의 배치 기법으로는
First fit
Best fit
Worst fit
Next fit
등이 있다.
새로운 page를 어떤 page와 교체할 것인가?
모두 꽉차서 빈 page frame이 없는 경우 사용하는 전략이다
변경된 page를 언제 write back 할 것인가?
write back = 변경된 내용을 swap device에 반영하는 작업
위의 Update bit와 연관된다. Update bit가 1인 페이지를 작업한다.
해당 page가 메모리에 내려올 때 write back을 수행한다.
일반적으로 준수한 성능을 보여주므로 대부분의 시스템에서 채용한다.
pre Cleaning이라고도 하며
더 이상 변경될 가능성이 없다고 판단할 때 미리 write back을 수행한다.
page 교체 시 발생하는 write back 시간을 절약할 수 있지만
예측 실패 시 overhead가 더 크다.
부하조절 전략
시스템의 multi programming degree를 조절한다.
multi programming degree
시스템에 들어온 프로세스의 수
즉 수행하는 프로세스의 개수
적정 수준의 multi programming degree를 유지해야 한다.
이렇게 적정 수준으로 유지되는 것을 plateau(고원)상태라고 한다.
multi programming degree가 너무 적은 저부하 상태에선(Under loaded)
시스템의 자원이 낭비되여 성능이 저하되고
multi programming degree가 너무 많은 고부하 상태에선(Over loaded)
자원에 대한 경쟁이 심화되고,
과도한 page fault가 발생하는 Thrashing(스레싱) 현상이 발생하여 성능이 저하된다.
(throughput은 성능지표 중 하나)
위 그래프에서 underloaded상태에선 성능지표가 증가하다가
최고 수준의 성능을 내는 plateau 상태를 보내다
overloaded 상태에 돌입하자 성능지표가 급격히 하락하는 것을 볼 수 있다.