참고 : [Course] Operating System (CPA310) - 운영체제 강의
[ 운영 체제 6-1강. 프로세스 스케줄링 ]
프로세스 스케줄링 (Process Scheduling)
CPU를 할당받는 경우
1. 다중 프로그래밍
- 시스템 내에는 여러 개의 Process가 존재한다. 따라서, 자원을 “어느 Process에 할당”할지를 선택해야!
- 이를 Scheduling이라고 한다!
- 자원관리
- 1) 시간 분할 관리
- 2) 공간 분할 관리
1) 시간 분할 관리 ( time sharing )
-
하나의 자원을 “여러 thread가 번갈아” 가면서 사용
-
ex) Process
( 프로세스 스케줄링 : 프로세서 사용 시간을, 프로세스들에게 분배 )
2) 공간 분할 관리 ( space sharing )
- 하나의 자원을 분할하여, “동시에” 사용
- ex) Memory
2. 스케줄링의 목적
목적 : 시스템의 성능 향상
대표적인 성능 지표
- 1) 응답 시간 ( response time )
- '’작업 요청 ~ 응답’’ 까지의 시간
- 2) 작업 처리량( through put )
- 단위 시간 동안, 완료한 작업 수
- 3) 자원 활용도 ( resource utilization )
- 주어진 시간 동안, 자원이 활용된 시간
“목적에 맞는” 지표를 고려하여 “스케줄링 기법을 선택”
- ex) 응답 시간 : Interactive System, Real-time System
- ex) 작업 처리량 : Batch System
- ex) 자원 활용도 : 비싼 장비 사용 시
3. 대기 / 응답 / 반환 시간
4. 스케줄링 기준
스케줄링 기법 선택시 고려해야 하는 사항/기준들은?
- 1) Process의 특성
- I/O-bounded vs. Compute-bounded
- 2) System의 특성
- Batch System vs. Interactive System
- 3) Process의 긴급성
- Hard vs. Soft real-time vs. Non-real-time System
- 4) Process의 우선순위
- 5) Process의 총 실행 시간
CPU burst vs. I/O burst
CPU 쓰다가, I/O 하다가, CPU 쓰다가, I/O하다가…반복
- 프로세스는 위 과정의 반복을 통해 작동한다
“CPU burst” : CPU 사용 시간
“I/O burst” : I/O 대기 시간
위 과정 중…
- CPU를 더 많이 쓴다 = compute-bounded
- I/O를 더 많이 한다 = I/O bounded
5. 스케줄링의 단계
발생하는 “빈도 및 할당 자원”에 따른 구분
- Long-term scheduling
- Mid-term ~
- Short-term ~
(1) Long-term scheduling
( 긴 시간에 한번 씩 이뤄지는 스케줄링 )
-
Job Scheduling : 시스템에 제출 할 Job 결정
- 다중 프로그래밍의 정도 조절 ( = 시스템 내의 Process의 수 조절 )
- I/O-bounded & Compute-bounded Process를 둘 다 고르게 선택해야!
- 이유 : CPU & I/O … 그 어느 애도 쉬지 않고 잘 일하게 하기 위해!
- 시분할 시스템 : **Long-term scheduling 불필요! ( 덜 필요 ) **
- 이유 : 어차피 시간을 나눠서 사용하기 떄문에!
(2) Mid-term scheduling
- 메모리 할당 결정
(3) Short-term scheduling
- Process scheduling ( CPU 할당해주는 스케줄링 )
- 가장 자주 일어나는 스케줄링…. 빨라야!
- Ready -> Running 상태로 보내는 스케줄링!
6. 스케줄링의 단계
7. 스케줄링 정책 ( Policy )
- 1) 선점 vs 비선점
- 2) 우선순위 (Prioroty)
(1) 선점(Preemptive) vs 비선점(Non-preemptive)
선점 & 비선점
-
선점 = 빼앗을 수 있다
-
비선점 = 뺴앗을 수 없다
비선점 Scheduling
- 할당 받은 자원을 “스스로 반납할 때 까지”는 계속 사용 가능 ( 뺏길 일 X )
- 장/단점
- 장 : Context Switch overhead 적어
- 단 : 잦은 우선 순위 역전 & 평균 응답 시간 증가
선점 Scheduling
-
사용 중인 자원을 뻇길 수 있음
( 우선 순위 높은 프로세스가 생긴다면…? )
-
장/단점
- 장 : 응답성이 높아짐 ( Time-sharing / Real-time System에 적합 )
- 단 : Context Switch overhead가 큼
(2) Priority
Priority = Process의 “중요도/우선순위”
Static(정적) Priority
- 한번 우선 순위 결정 시, “불변”
- 구현 쉬움 & overhead 적음
- 시스템 환경 변화에 대한 대응이 hard
Dynamic(동적) Priority
-
한번 우선 순위 결정 되어도, “가변”
- 구현이 복잡 & (priority 재계산에 따른) overhead 큼
- 시스템 환경 변화에 유연하게 대응!