티스토리 뷰
CPU 스케쥴링 ?
CPU를 여러 프로세스간에 교환함으로써, 효율을 올린다. ( 동시에 동작하는 것과 같은 효과 )
스케쥴링에는 프로세스 스케줄링과 스레드 스케줄링이 있다.
우선, 메모리내에 여러 프로그램이 할당되어 유지되어야 한다.
그리고 특정 프로세스가 실행중 대기해야할 경우, 그 프로세스로부터 CPU를 회수해 다른 프로세스에 할당해준다. 이 때, 대기해야할 경우에는 대표적으로 입력요청이 있다.
→ Context Switching이 발생한다. ( Dispatcher 호출 )
위와같이 CPU가 유휴상태가 되면, 운영체제는 Ready Queue에 있는 Process중 하나를 선택해 실행한다.
이 때 어떤 Process를 실행할지 결정하는 것이 단기 스케줄러이다.
( 장기 스케쥴러는 디스크에 저장되어 있는 프로그램중 어떤 프로그램을 메모리에 적재할지 ... )
WHEN ?
1. 특정 Process가 대기상태로 전환될 때. ( scanf, wait .... )
2. 특정 Process가 실행상태에서 준비완료 상태로 전활될 때. ( Interupt 발생 )
3. 특정 Process가 대기상태에서 준비완료 상태로 전환될 때.
4. 특정 Process가 종료시.
→ 1, 4번은 선택의 여지가 없이 반드시 Ready Queue에서 하나의 Process를 할당.
( 1, 4번으로만 동작하게 되는 것을 비선점(협조적) 스케쥴링 이라고 한다. )
( 대기상태, 종료상태가 될때까지 해당 Process가 CPU를 점유한다. )
Tip. CPU Burst ?CPU 점유시간..? 정도의 표현으로 CPU가 해당 프로세스에 할당되어 동작하는 시간을 말한다. CPU Burst의 빈도와 점유시간에 따라서 어떤 스케줄링기법을 사용할지가 달라진다. 추가적으로 I/O Burst 도 같이 기억하자.
|
선점 스케줄링.
하나의 Process가 CPU를 할당받아 실행하고 있을 때, 우선순위에 따라 다른 Process가 CPU를 뺐어 사용이 가능한 스케줄링 기법이다. 선점 스케줄링 알고리즘을 사용할 경우 우선순위가 높은 Process를 더 빠르게 처리가 가능하다는 장점이 있다. 대신 선점을 하기위한 우선순위에 대한 정보등의 OverHead가 추가된다.
- 그러면 우선순위 낮은애는 계속 기다려야 하는가..?
NOP. Aging기법에 의해서 일정 시간대기하면 점점 우선순위가 감소하게끔 구성해야한다.
Tip. 디스패처(Dispatcher)디스패처는 Context Switch, User mode전환, 프로그램 재시작시 사용자 프로그램의 적절한 위치로 JMP 등의 역할을 한다. 때문에 당연히 굉장히 자주 호출이되고, 호출 되는 그 시간을 디스패치 지연(Dispatch Delay)라고 한다. 그래서 보통 운영체제는 디스패치 지연을 최소화하기위해 노력한다.
|
스케줄링 기준 ?
1. CPU 이용률. ↑
2. 처리량. ↑
3. 총 처리시간. ↓
4. 대기시간. ↓
5. 응답시간. ↓ ( 응답시간의 변동폭이 작은 것도 중요하다. )
어떤 기준을 중점에 두냐에 따라서 사용해야하는 스케줄링 알고리즘이 달라진다.
'운영체제(OS)' 카테고리의 다른 글
[OS] 다중 처리기 스케줄링 (0) | 2019.11.04 |
---|---|
[OS] CPU Scheduling 기본 ( 6가지 ) (0) | 2019.11.04 |
[OS] Process Synchronized (0) | 2019.09.07 |
[OS] IPC (Inter Process Communication) (0) | 2019.09.07 |
[OS] Thread (0) | 2019.09.07 |