컴퓨터에는 여러 개의 프로세스가 시스템 내에 존재하기에 자원을 할당할 프로세스를 선택해야 한다. 이것을 스케줄링이라 한다. 즉 프로세스 스케줄링은 프로세서 사용시간을 프로세스들에게 분배하는 것이다.
스케줄링의 목적은 시스템의 성능을 향상시키는 것이다.
시스템 성능의 지표에는 무엇이 있을까 ❓
- 응답 시간 : 작업 요청으로부터 응답을 받을 때까지의 시간
- 작업 처리량 : 단위 시간 동안 완료된 작업의 수
- 자원 활용도 : 주어진 시간 동안 자원이 활용된 시간
이외에도 다양한 지표들이 있지만 지표의 종류보다 중요한것은 목적에 맞게 지표를 선택해 스케줄링 기법을 따르는 것이다. 예를 들어서 응답 시간이 중요한 시스템은 대화형 시스템에서, 작업 처리량은 일괄처리 시스템에서 자원 활용도는 비싼 장비의 시스템일 경우 중요하다.
스케줄링 기법이 고려하는 항목들을 알아보자.
- 프로세스의 특성 : I/O-bounded , compute-bounded
- 시스템 특성 : Batch system, interactive system
- 프로세스의 긴급성
- 프로세의 우선순위
- 프로세스 총 실행시간
프로세스는 CPU를 사용하고 I/O를 대기하고 사용하면서 수행된다. CPU burst란 CPU 사용시간을 이야기하고 I/O burst란 I/O대기 시간을 이야기한다. Burst time은 스케줄링의 기준의 하나로써 CPU burst > I/O burst 라면 compute-bounded 라고한다. 반면에 CPU burst < I/O burst 라면 I/O-bounded라고 한다.
스케줄링의 단계
발생하는 빈도 및 할당 자원에 따라 스케줄링을 구분한다.
✌ Long-term Scheduling
Job scheduling이 속하며 Job scheduling이란 어떤 Job을 커널에 등록할 것인지를 말한다. Job scheduling은
프로세스 수를 조절하므로 다중 프로그래밍의 정도를 조절한다. 그래서 I/O-bounded와 compute-bounded 프로세스들을 잘 섞어서 선택해야 한다. 그래야 CPU가 작업을 하지 않거나 I/O 대기가 없어 스테 줄 링이 힘든 경우 등 비효율성이 생기지 않는다.
✌ Mid-term Scheduling
어느 프로세스에게 메모리를 할당할지 결정하는 것으로 Swapping이 속한다.
✌ Short-term Scheduling
Process scheduling이 여기에 속하며 Process scheduling이란 프로세서를 할당할 프로세스를 결정하는 것이다. 가장 빈번하게 발생되기에 매우 빨라야 한다.
스케줄링 단계 한눈에 보기
스케줄링 정책을 알아보자 ❗
- 선점 VS 비선점
선점/비선점 스케줄링 | 의미 | 장점 | 단점 |
비선점 스케줄링 | 할당 받은 자원을 스스로 반납할 때까지 사용하기에 다른 프로세스들이 빼앗을수 없다. | Context switch overhead가 적다. | 평균 응답시간 증가, 높은 우선순위를 가진 프로세스들이 밀려난다. |
선점 스케줄링 | 타의에 의해 자원을 빼앗길 수 있다. | 응답성이 높아 시분할 시스템 등에 적합하다. | Context switch overhead가 크다. |
- 우선순위
우선순위 스케줄링 | 의미 | 장점 | 단점 |
정적 우선순위 | 프로세스 생성시 결정된 우선순위가 계속 유지됨 | 구현이 쉽고 overhead가 적다. | 시스템 환경 변화에 대한 대응이 어렵다. |
동적 우선순위 | 프로세스의 상태 변화에 따라생성시 결정된 우선순위 변경 | 구현이 복잡하고 overhead가 크다. | 시스템 환경 변화에 대해 유연한 대응이 가능하다. |
'OS' 카테고리의 다른 글
CPU 스케줄링 (0) | 2021.05.24 |
---|---|
스레드의 공유자원 관리(동기화) (0) | 2021.05.09 |
스레드에 대해 알아보자 (0) | 2021.01.03 |
인터럽트를 알아보자 (0) | 2020.12.31 |
운영체제가 프로세스를 어떻게 관리할까❓ (0) | 2020.12.31 |