동캄의 코딩도장

운영체제 [가상메모리 관리 - 개요] 본문

CS/운영체제

운영체제 [가상메모리 관리 - 개요]

동 캄 2022. 1. 20. 11:03

가상메모리 관리


가상메모리 관리의 목적

- 가상 메모리 시스템 성능 최적화 (cost model)
- Page fault rate를 최소화 하도록 설계


Page reference string(d)

- 프로세스의 수행 중 참조한 페이지 번호 순서


Page fault rate = F(w)

F(w) = 페이지폴트수/전체참조수(w)


Hardware Components


Address translation device (주소 사상 장치)

- 주소 사상을 효율적으로 수행하기 위해 사용


Bit Vectors

- Page 사용 상황에 대한 정보를 기록하는 비트들
- Reference bits (used bit)
- Update bits (dirty bits, modified bits)


Reference bit vector

- 메모리에 적재된 각각의 page가 최근에 참조 되었는지를 표시
- 주기적으로 모든 reference bit를 0으로 초기화


Update bit vector

- page가 메모리에 적재된 후, 프로세스에 의해 수정 되었는지를 표시
- 주기적 초기화 없음
- Update bit =1 이면, memory와 swap device의 내용 동일 x


가상 메모리 성능 향상 기법


Allocation Strategies

각 프로세스에게 메모리를 얼마 만큼 줄 것인가?
- Fixed allocation
- Variable allocation


고려사항

- 프로세스 실행에 필요한 메모리 양을 예측해야 함
- 너무 큰 메모리 할당--> 메모리 낭비
- 너무 작은 메모리 할당--> page fault rate 증가, 시스템 성능 저하


Fetch Strategies

특정 page를 메모리에 언제 적재할 것인가?

Demand fetch (demand paging)

- 프로세스가 참조하는 페이지들만 적재
- page fault overhead


Aniticipatory fetch (pre-paging)

- 참조될 가능이 높은 page 예측
- 가까운 미래에 참조될 가능성이 높은 page를 미리 적재
- 예측 성공 시, page fault overhead가 없음
- prediction overhead, Hit ratio에 민감함

실제 대부분의 시스템은 Demand fetch 기법 사용
- 일반적으로 준수한 성능
- Anticipatory fetch는 잘못된 예측 시 자원 낭비가 큼


Placement Strategies

Page/segment를 어디에 적재할 것인가?
- page system에서는 불필요
- segmentation system은 배치기법 이용

 

Replacement Strategies

새로운 page를 어떤 page와 교체 할 것인가? (빈 page frame이 없는경우)
- fixed allocation을 위한 기법
- variable allocation을 위한 기법


Cleanning Strategies

변경 된 page를 언제 write-back 할 것 인가?
- 변경된 내용을 swap device에 반용
- Demand cleanning - 해당 page가 메모리에서 내려올 때 write-back
- Aniticipatory cleanning - 더이상 변경될 가능성이 없다고 판단 할 때, 미리 write-back

실제 대부분의 시스템은 Demand cleanning 기법 사용
- 일반적으로 준수한 성능
- Aniticipatory cleanning는 잘못된 예측 시 자원 낭비가 큼

 

Load Control Strategies

시스템의 multi-programming degree 조절
- Allocation strategies와 연계 됨

적정 수준의 multi-programming degree를 유지 해야 함
- plateae(고원) 여역으로 유지
- if 저부하 상태 --> 시스템 자원 낭비, 성능 저하
- if 고부하 상태 --> 자원에 대한 경쟁 심화, 성능 저하,  thrashing 현상(과도한 page fault) 발생