CS/운영체제
CPU 스케줄링(CPU) : 프로그램 중 어떤 걸 먼저 실행할지 정하는 방법
나디아 Nadia
2025. 5. 2. 14:16
CPU 스케줄링
: 컴퓨터가 여러 프로그램 중 어떤 걸 먼저 실행할지 정하는 방법
- 프로그램 실행 → 메모리에 프로세스가 생성됨
→ 프로세스 내에는 1개 이상의 쓰레드가 있음
→ 프로세스들은 CPU를 차지하기 위해 운영체제의 명령을 기다림
→ 운영체제는 모든 프로세스에게 CPU를 할당/해제함
⇒ CPU 스케줄링 - CPU Burst: CPU를 할당받아 실행하는 작업
I/O Burst: 입출력 작업
CPU 스케줄링에서 스케줄러(운영체제)가 고려해야 할 사항
- 어떤 프로세스에게 CPU 리소스를 줘야 하는가?
- 메모리에는 수많은 프로세스들이 있는데, 여기서 어떤 프로세스에게 CPU 사용권을 줘야 하는지 고려해야 함
- CPU를 할당받은 프로세스가 CPU를 얼마 동안 사용해야 하는가?
- 오늘날에는 시분할 처리 방식을 사용함
→ 여러 프로세스에게 짧은 시간 동안 돌아가면서 CPU를 할당하는 방식
- ex) 프로세스 A에게 1초 동안 CPU를 주고, 1초 뒤에 CPU를 뺏어서 프로세스 B에게 1초 동안 주는 방식
- 오늘날에는 시분할 처리 방식을 사용함
- 위 2가지 사항은 컴퓨터 성능에 큰 영향을 미침
스케줄링 목표
- 리소스 사용률 ⬆: CPU 사용률 or I/O 디바이스의 사용률을 높이는 것
- 오버헤드 최소화 ⬇: 스케줄링을 위한 계산이 너무 복잡하거나, 컨텍스트 스위칭이 너무 많으면 비효율적이므로 최소화해야 함
- 공평성: 모든 프로세스에게 공평하게 CPU가 할당되어야 함
- 처리량 ⬆: 같은 시간 내에 더 많은 처리를 할 수 있는 방법을 목표로 함
- 대기시간 ⬇: 작업 요청부터 실제 작업 진행 전까지의 대기 시간을 짧게 만드는 것
- 응답시간 ⬇: 응답시간이 짧은 것을 목표로 함
- 대화형 시스템에서는 사용자의 요청에 얼마나 빨리 반응하는지가 중요
스케줄링 목표 간의 상충
- 위의 목표들을 다 최고로 달성할 수는 없음
- ex) 처리량을 높이려면 ⬆ → CPU를 하나의 프로세스에 더 오래 할당해야 함
↔ 응답시간을 줄이려면 ⬇ → 여러 프로세스에 골고루 CPU를 할당해야 함
⇒ 처리량과 응답시간의 목표는 조건이 상반되기 때문에 둘을 동시에 달성할 수 없음
- ex) 처리량을 높이려면 ⬆ → CPU를 하나의 프로세스에 더 오래 할당해야 함
- 이럴 때는 사용자가 사용하는 시스템에 따라 목표를 다르게 설정함
- ex) 터치스크린 시스템: 빠른 응답이 필요함 ⇒ 응답시간 ⬇
과학 계산 시스템: 처리량 ⬆
일반 사용자 시스템: 목표 밸런스 유지
- ex) 터치스크린 시스템: 빠른 응답이 필요함 ⇒ 응답시간 ⬇