프로세스를 스케줄링하기 위한 Queue 에는 세 가지 종류가 존재한다.
- Job Queue : 현재 시스템 내에 있는 모든 프로세스의 집합
- Ready Queue : 현재 메모리 내에 있으면서 CPU 를 잡아서 실행되기를 기다리는 프로세스의 집합
- Device Queue : Device I/O 작업을 대기하고 있는 프로세스의 집합
각각의 Queue 에 프로세스들을 넣고 빼주는 스케줄러에도 크게 세 가지 종류가 존재한다.
장기스케줄러(Long-term scheduler or job scheduler)
메모리는 한정되어 있는데 많은 프로세스들이 한꺼번에 메모리에 올라올 경우, 대용량 메모리(일반적으로 디스크)에 임시로 저장된다. 이 pool 에 저장되어 있는 프로세스 중 어떤 프로세스에 메모리를 할당하여 ready queue 로 보낼지 결정하는 역할을 한다.
- 메모리와 디스크 사이의 스케줄링을 담당.
- 프로세스에 memory(및 각종 리소스)를 할당(admit)
- degree of Multiprogramming 제어(실행중인 프로세스의 수 제어)
- 프로세스의 상태new -> ready(in memory)
cf) 메모리에 프로그램이 너무 많이 올라가도, 너무 적게 올라가도 성능이 좋지 않은 것이다. 참고로 time sharing system 에서는 장기 스케줄러가 없다. 그냥 곧바로 메모리에 올라가 ready 상태가 된다.
단기스케줄러(Short-term scheduler or CPU scheduler)
- CPU 와 메모리 사이의 스케줄링을 담당.
- Ready Queue 에 존재하는 프로세스 중 어떤 프로세스를 running 시킬지 결정.
- 프로세스에 CPU 를 할당(scheduler dispatch)
- 프로세스의 상태ready -> running -> waiting -> ready
중기스케줄러(Medium-term scheduler or Swapper)
- 여유 공간 마련을 위해 프로세스를 통째로 메모리에서 디스크로 쫓아냄 (swapping)
- 프로세스에게서 memory 를 deallocate
- degree of Multiprogramming 제어
- 현 시스템에서 메모리에 너무 많은 프로그램이 동시에 올라가는 것을 조절하는 스케줄러.
- 프로세스의 상태ready -> suspended
Process state - suspended
Suspended(stopped) : 외부적인 이유로 프로세스의 수행이 정지된 상태로 메모리에서 내려간 상태를 의미한다. 프로세스 전부 디스크로 swap out 된다. blocked 상태는 다른 I/O 작업을 기다리는 상태이기 때문에 스스로 ready state 로 돌아갈 수 있지만 이 상태는 외부적인 이유로 suspending 되었기 때문에 스스로 돌아갈 수 없다.
프로세서 스케줄링의 기법에는 크게 아래와 같이 선점(preemptive)/비선점(non-preemptive) 형태가 있다.
먼저, 비선점(non-preemptive) 은 이미 할당된 CPU 를 다른 프로세스가 강제로 빼앗아 사용할 수 없는 스케줄링 기법이다.
프로세스가 CPUS 를 할당 받으면 해당 프로세스가 완료될 때 까지 CPU 를 사용하지 않는다. RDS 로 따지면 테이블에 Lock 을 걸어둔다 이해하면 편하다. 매우 공정한 방법이지만 priority 가 높은 프로세스에 대응하기에는 비효율적인 기법이다.
비선점 스케줄링법
1) FIFO (First In First Out) = FCFS (First-Come First-Served)
: 준비 큐에 맨 처음 오는 프로세스를 맨 처음에 실행
응답시간 차가 적어 예측이 쉬움
구현은 가장 쉽지만, 효율성이 많이 떨어진다.
2) SJF (Shortest Job First)
: 대기 중인 작업 중 수행시간이 가장 적은 프로세스에 CPU를 할당하는 기법
평균 대기 시간 최소화// 각 프로세스의 CPU 요구시간 알기 어려움
3) HRN (Highest Response Ratio - next)
: SJF 기법의 약점 ‘긴 작업과 짧은 작업의 지나친 불평등’ 을 보완한 기법
응답률= (대기 시간+ 실행 시간)/ 실행 시간
4) 우선순위 (Priority)
: 준비상태 큐에서 대기중인 각 프로세스마다 우선 순위를 부여
-> 우선 순위가 가장 높은 프로세스에 먼저 CPU를 할당
우선 순위가 같을 경우 FIFO 또는 SJF를 도입
5) 기한부 (Deadline)
: 프로세스에게 일정한 시간을 주고 그 시간 안에 완료하도록 하는 기법
선점 스케줄링법
1) RR (Round Robin)
: FCFS + 선점 방식
FCFS 기법과 같이 준비상태 큐에 먼저 들어온 프로세스가 먼저 CPU를 할당받음
시간을 할당해서 할당시간 종료 후 완료하지 못하면 폐기
우선순위의 형평성을 위해 타임 슬라이스 or 시간 할당량에 의해 시간 제한을 받음
- 시간할당량이 클 경우: FIFO 스케줄링 방법과 차이 X
- 시간할당량이 작을 경우: 문맥교환 오버헤드가 상대적 ↑
2) SRT (Shortest Remaining Time)
: SJF + 선점 방식
준비상태 큐에 새로 도착한 프로세스의 실행 시간과 현재 실행중인 프로세스의 남은 시간을 비교, 수행시간이 적은 프로세서
에 CPU를 할당하는 기법
3) 다단계 큐 (Multi Level Queue)
: 프로세스를 특정 그룹으로 분류할 수 있을 경우
그룹에 따라 각기 다른 준비상태 큐를사용, 큐 사이에 우선순위를 부여하는 기법
4) 다단계 피드백 큐 (Multi Level Feedback Queue)
: 특정 그룹의 준비상태 큐에 들어간 프로세스가 다른 준비상태 큐로 이동할 수 없는 다 단계 큐 기법을
준비상태 큐 사이를 이동할 수 있도록 개선한 기법
다양한 특성의 작업이 혼합된 경우 매우 유용
'취업준비 > 전산 기초' 카테고리의 다른 글
메모리 관리 전략 (0) | 2022.04.21 |
---|---|
프로세스와 스레드의 차이 (0) | 2022.03.14 |
하드웨어(Hardware)와 소프트웨어(Software) (0) | 2022.03.12 |
소프트웨어 디자인 패턴(Design Pattern) (0) | 2021.09.15 |
소프트웨어 아키텍처 비용 평가 모델 (0) | 2021.09.14 |