0. 스케줄링(Scheduling)이란?
- 스케줄링은 컴퓨터의 자원을 보다 효율적으로 이용하기 위하여 작업 순서와 시간을 할당하는 것.
- 즉, 프로세스(실행 중인 프로그램)들이 자원을 사용하는 순서(우선순위)를 결정하는 일.
- 스케줄링 작업을 수행하는 프로그램을 스케줄러(Scheduler)라고 한다.
- 스케줄링 기법은 선점형과 비선점형으로 나뉜다.
1. 선점형(Preemptive)
- 하나의 프로세스가 다른 프로세스 대신에 CPU를 강제로 차지할 수 있다.(스레드)
- 프로세스의 우선순위가 높은 프로세스가 CPU를 먼저 차지하기가 쉬어 높은 우선순위의 프로세스들이 급히 실행해야 할 경우에 유용
- 많은 오버헤드를 초래한다.
- - 문맥 교환이 비선점에 비해 많다.
- - 대화식 시분활 시스템에서 빠른 응답시간을 유지하는데 요구된다.
* 오버헤드(Overhead) : 근본적으로 해야 할 일들을 하기 위해서 준비하는 작업이나, 먼저 처리해두어야 하는 일 등으로 원래 하려던 작업이 아닌, 부가적인 작업을 일컫으며 이를 위해 추가적으로 시간, 메모리, 자원이 사용된다.
2. 비선점형(Non-Preemtive)
- 하나의 프로세스가 CPU를 할당받으면 종료되기 전까지 CPU를 독점하여 사용한다.
- 다른 프로세스가 CPU를 강제로 차지할 수 없다. (코루틴)
- 응답시간의 예측이 쉽고, 문맥 교환 횟수가 적다.
- CPU 사용 시간이 짧은 작업이 사용시간이 긴 작업을 기다리는 경우가 발생할 수 있다.
- 일괄처리(Batch Processing)에 유리
'프로그래밍 > 용어' 카테고리의 다른 글
| [용어/개념] 루틴(Routine), 코루틴(Coroutine) (0) | 2025.01.02 |
|---|---|
| [용어/개념] 동기(Synchronous), 비동기(Asynchronous), 블로킹(Blocking), 논블로킹(Non-Blocking) (0) | 2024.12.26 |
| [용어/개념] 프로그램(Program), 프로세스(Process), 스레드(Thread) (0) | 2024.12.24 |
| [용어/개념] 동시성(Concurrency), 병렬성(Parallelism) (0) | 2024.12.24 |