TIL
🌱 난 오늘 무엇을 공부했을까?
📌 Page 관리
📍 Demand page
- 실제로 필요할 때 page를 메모리에 올린다.
- valid, invalid 비트사용
- invalid의 의미
- 사용되지 않는 주소 영역인 경우
- 페이지가 물리적 메모리에 없는 경우
- 처음에는 모든 page entry가 invalid로 초기화 된다.
- address translation 시에 invalid 비트로 set되어 있으면 "page fault" (요청한 페이지가 메모리에 없는 경우)
📍 Page Frame의 Allocation
- Process에 얼마만큼의 page frame을 할당할 것인가
- Allocation의 필요성
- 메모리 참조 명령어 수행시 명령어, 데이터 등 여러 페이지 동시 참조
- Loop를 구성하는 page들은 한번에 할당 되는 것이 유리함
- Allocation Scheme
- Equal Allocation : 모든 프로세스에 동일한 갯수
- Proportional Allocation : 프로세스 크기에 비례하여 할당
- Priority Allocation : 프로세스의 Priority에 따라 다르게 할당
🔗 Thrashing
-> 프로세스의 원할한 수행에 필요한 최소한의 page frame 수를 할당 받지 못한 경우 발생
-> Pafe fault rate가 높아짐
-> CPU utilization이 낮아짐
-> OS는 MPD를 높여야 한다고 판단
-> 프로세스 당 할당된 frame의 수가 더욱 감소
-> 프로세스는 page의 swap in / swap out으로 매우 바쁨
📍 Working-Set Model
- Locality of reference(집약성)
- 프로세스는 특정 시간 동안 일정 메모리 주소를 집중적으로 참조하는 성질이 있음.
- 집중적으로 참조되는 해당 page들의 집합을 locality set(working set)이라고 한다.
- Working-Set Model
- Locality에 기반하여 일정 시간 동안 원활하게 수행되기 위해 한꺼번에 메모리에 올라와 있어야 하는 page들의 집합
- 프로세스의 working set 전체가 메모리에 올라와 있어야 수행되고 그렇지 않을 경우 모든 frame을 반납한 후 swap out -> 프로세스는 suspend 상태로 변경
- Thrashing 방지
- Multiprogramming degree를 결정한다.
🔗 Working-Set Algorithm
- Working-Set window를 통해 알아냄
- 과거에 참조된 서로 다른 페이지들의 집합
- Woking set에 속한 page는 메모리에 유지, 속하지 않은 것은 버림(즉 참조된 후 일정 시간 동안 해당 page를 메모리에 유지한 후 버림)
📍 PFF (Page-Fault Frequency) Scheme
- page-fault rate의 상한값과 하한값을 둔다
- page-fault rate이 상한값을 넘으면 frame을 더 할당한다
- page-fault rate이 하한값 이하면 할당 frame 수 를 줄인다
- 빈 frame이 없으면 일부 프로세스를 swap out
📍 Page Size의 결정
- Page Size를 감소시키면
- 페이지 수 증가
- 페이지 테이블 크기 증가
- internal fragmentation 감소
- Disk transfer의 효율성 감소
- Seek/rotation vs transfer
- 필요한 정보만 메모리에 올라와 메모리 이용이 효율적
https://core.ewha.ac.kr/publicview/C0101020140513133424380501?vmode=f