티스토리 뷰
인터렉티브 시스템에서는 한 프로세스가 cpu를 독점하지 않도록 해야한다.
그러기 위해서 퀀텀이라는것을 사용한다.(퀀텀 == 한프로세스에게 할당된 cpu시간)
Round Robin Scheduling
배치 시스템의 스케쥴링 알고리즘중 SJF와 약간 구조는 비슷하다.
SJF에서는 차례대로 들어오는 프로세스를 무조건 처리할때까지 cpu를 할당하지만 RR에서는 일정시간 cpu를 퀀텀동안 할당해주고 그 다음 프로세스를 차례대로 실행시키며 퀀텀을 다쓴 프로세스는 큐의 맨 뒤로 보내진다.
퀀텀을 얼만큼 할당해야 하는가?
너무 짧은 경우 : process switch(context switch)가 많이 발생 해서 cpu 효율이 떨어진다. (오버헤드가 커진다)
너무 긴 경우 : 반응시간이 안 좋아진다. 다른 프로세스들의 대기시간이 길어지므로 사용자가 답답해 할 수 있다.
Priority Scheduling
각각의 프로세스에 우선순위가 할당된다. 우선순위가 제일 높은게 젤 먼저 실행된다.
우선순위 높은 프로세스 혼자 cpu를 독점하는것을 막아야 한다.
-> 클럭이 튈때마다 우선순위를 깎아준다. 언젠가는 우선순위가 낮아져 다음 우선순위에 있는 프로세스가 실행될것이다.
우선순위로 스케쥴링하므로 퀀텀은 줄수 있는 만큼 최대한으로 많이 준다.
우선순위 할당하는법
정적 우선순위 할당 - 유저가 누구냐 가격이 얼마냐에 따라 프로세스에 높은 우선순위 미리 정함.
동적 우선순위 할당 - I/O bound 프로세스에게 높은 우선순위를 준다.
- 우선순위 계산법 : 1/f
- f = cpu 사용시간/ 퀀텀
- cpu 사용시간이 적은 i/o bound 프로세스는 분자가 작으므로 역수를 취하게 되면 우선순위는 커지게 된다.
- 즉 I/O bound 프로세스에게 더 높은 우선순위가 할당되게 된다.
Round Robin + Priority Scheduling
멀티플 큐 - CTSS(Compatible Time Sharing System)
Priority 1,2,3,4라는 클래스들끼리는 우선순위 스케쥴링을 하고 각 클래스 내에서는 라운드 로빈 스케쥴링을 해준다.
우선순위 클래스가 낮아질수록 퀀텀이 더 길어지게 된다.
이렇게 되면 실행시간이 적은 i/O 바운드 프로세스들이 높은 우선순위를 받는 대신 퀀텀이 적고
cpu 바운드 프로세스들은 낮은 우선순위를 가지는 대신 긴 퀀텀을 갖는다.
Priority4의 맨처음 프로세스부터 실행되게 되는데 만약 그 프로세스가 퀀텀을 전부다 사용하면 우선순위가 낮아진다.
P4의 프로세스가 퀀텀을 다 사용시 P3클래스로 강등되게 된다.
만약 퀀텀을 다 사용하지 않으면 그 프로세스는 다시 실행 되더라도 원래의 우선순위(원래의 클래스)로 다시 실행된다.
만약 100 퀀텀이 필요한 프로세스가 있다고 치자
라운드 로빈 알고리즘으로 이 프로세스를 실행시키면 컨텍스트 스윗칭이 100번이 일어난다. (오버헤드가 크다)
그런데 이 CTSS알고리즘을 사용하면 최상위 우선순위에서 1퀀텀 그다음 우선순위에서 2퀀텀 ,그다음에서 4퀀텀, 8퀀텀, 16...
각 클래스에서 사용되는 퀀텀을 합쳐보면 1+2+4+8+16+32+64 7번의 컨텍스트 스윗칭만 일어나면 프로세스의 실행을 완료 시킬수 있다.
CTSS알고리즘은 프로세스의 너무 빈번한 Context Switching 문제를 해결한 것이다.
그냥 라운드 로빈 알고리즘만 썼을때 보다 CTSS가 더 좋은점
-> 오버헤드가 줄어들었다.(Context Switching)
질문
그냥 우선순위 알고리즘만 썼을때 보다 CTSS가 더 좋은점??
CTSS알고리즘은 비선점형 알고리즘인가??
우선순위가 낮은 프로세스들이 굶어 죽을수 있다는 문제점이 있다.
'컴퓨터 공학과 졸업 > 운영체제' 카테고리의 다른 글
쓰레드 (0) | 2017.10.14 |
---|---|
Scheduling in Interactive Systems - 2 (0) | 2017.10.13 |
Scheduling in Batch System (0) | 2017.10.13 |
스케쥴링 (0) | 2017.10.13 |
식사하는 철학자 문제(이진세마포어,계수세마포어,동기화,임계구역문제) (3) | 2017.09.28 |
- Total
- Today
- Yesterday
- server side rendering
- async
- reflow
- Babel
- state
- reducer
- type alias
- atomic design
- reactdom
- useEffect
- design system
- storybook
- react
- typescript
- es6
- useRef
- hydrate
- return type
- webpack
- await
- Polyfill
- mobx
- props
- promise
- Next.js
- react hooks
- Action
- javascript
- computed
- rendering scope
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |