Gom3rye
Operating System 13주차 초반부 정리 본문
13주차 - 1
58pg.3 - Global vs. Local Replacement
Global replacement
- 메모리 전체에 각 페이지들을 제한 없이 replace했다.
- 이제껏 우리가 배운 replacement
- replace 시 다른 process에 할당된 frame을 빼앗아 올 수 있다.
Local replacement
- 자신에게 할당된 frame 내에서만 replacement
59pg.1 - Thrashing Diagram
process 수가 많을수록 cpu를 많이 써야 할 것 같은데 어느 정도 가면 process 수가 많아져도 cpu 사용량이 떨어짐
58pg.4 - Thrashing
Thrashing
- 맨날 page fault 나고 cpu utilization이 낮아지니까 os가 MPD를 높임
-> 또 다른 프로세스가 시스템에 추가됨
-> 프로세스 당 할당된 frame 수가 더 적어지고 프로세스는 page의 스왑인 스왑아웃으로 매우 바쁨
-> 대부분의 시간에 cpu는 놀고 있으므로 low throughput
59pg.2 - Working-Set Model
Locality of reference (참조하는 것의 지역성)
- 프로세스는 특정 시간동안 참조하는 지역만 계속 참조한다.
- 이렇게 집중적으로 참조되는 page들의 집합을 locality set이라고 한다.
Working-set Model
- 지금 작업하고 있는 set에 focus해보자!
- locality에 기반해 한꺼번에 메모리에 올라와 있어야 하는 page들의 집합을 Working Set이라고 한다.
- 따라서 Working Set 모델에서는 process의 working set 전체가 메모리에 올라와 있어야 수행된다. 한꺼번에 올라와 있지 않으면 모두(frame) 반납 후 스왑아웃
- Thrashing을 방지하는 모델
- MPD를 결정
59pg.3 - Working-Set Algorithm
Working set의 결정
- working set은 한덩어리로 paging out, 스왑아웃, 스왑인을 시켜주는 게 좋다. (그래야 page fault가 덜 발생하고 원활히 수행되니까)
59pg.4 - Working-Set Algorithm
Working-Set Algorithm
- process들의 working set size 합 > page frame 수
-> 일부 process를 스왑아웃시켜 지금 동작할 수 있는 working set을 우선적으로 충족시켜 준다. (한 명이라도 돌려야지)
- working set 다 할당하고도 page frame이 남는다
-> 스왑아웃된 프로세스에게 working set 할당해서 MPD를 키운다.
Window size delta
- 윈도우 사이즈도 성능에 영향을 미친다.
- 윈도우 사이즈가 너무 작으면 -> locality set을 모두 수용 x (그 안에 못들어온 애들은 계속 page fault 발생)
- 크면 -> 불필요한 locality set이 수용될 수 있음.
- 무한대 -> 전체가 다 working set이 됨 -> meaningless
=> 적절한 윈도우 사이즈 정하는거 매우 중요
60pg.1 - PFF(Page-Fault Frequency) Scheme
page fault의 빈도를 보고 frame 할당을 조절하자.
- frame size 가 매우 작으면(메모리 size가 매우 작으면, frame 수가 적으면) page fault 매우 많이 발생
- 크면(frame 수가 많으면) page fault 적게 발생
- page-fault rate의 상한, 하한값을 두자
- frame 개수를 조절해서 여러개의 application을 제한된 메모리 내에 최대한 수용할 수 있도록, page fault가 적정 수준에서 관리될 수 있도록 하는 scheme이 PFF scheme이다.
(range 내에 page fault rate이 들어오도록 유지 관리하자.)
60pg.2 - Page Size의 결정
Page size를 감소시키면
- 잘게 자른 거니까 페이지 수 증가
-> 페이지 내부의 fragmentation도 감소
-> Seek rotation 여러번 하니까 시간 늘어남 -> Disk transfer의 효율성 감소
- cpu에서 페이지 테이블을 통해 접근하는데 페이지 수가 증가하니까 페이지 테이블 크기도 증가
- 필요한 정보만 메모리에 올라와 메모리 이용이 효율적
But, 조금만 올라와 있으니까 Locality 활용 측면에서는 Bad
Page size를 증가시키면
- 페이지 수 감소
-> transfer 타임(데이터 전송 시간)이 늘어나니까 Disk transfer의 효율성 감소
요즘 트렌드 : 페이지 사이즈를 크게