📌다중 프로그래밍
- 스케줄링 : 하나의 시스템에 여러개의 프로세스 중 자원을 할당 할 프로세스를 선택 하는 것
- 자원관리
- 시간분할 관리 : 하나의 자원을 여러 스레드들이 번갈아 가며 사용
- ex) 프로세스 스케줄링을 사용한 프로세서
- 프로세스 스케줄링 : 프로세서 사용시간을 프로세스들에게 분배
- 공간분할 관리 : 하나의 자원을 분할하며 동시에 사용
📌스케줄링의 목적
- 시스템의 성능 향상에 목적이 있다.
- 시스템의 성능 지표
- 응답시간 : 작업요청으로부터 응답까지의 시간
- 작업처리량 : 단위 시간동안 완료된 작업 수
- 자원 활용도(resource utilization) : 주어진시간(Tc)동안 자원이 활용된시간(Tr)의 비율 Tr/Tc
💻용어 정의
📌스케줄링 기법 선택 기준
- 프로세스의 특성 : I/O bounded / compute-bounded
- 시스템 특성 : batch system / interactive sysmtem
- 프로세스의 긴급성 : real-time / non-real-time
- 프로세스 우선순위
❓I/O bounded 와 compute-bounded란?
- 프로세스 수행은 CPU burst와 I/O burst의 반복
- I/O bounded : I/O burst가 더 긴 경우
- I/O burst : I/O 대기시간(또는 사용시간)
- compute-bounded : CPU burst가 더 긴 경우
📌스케줄 단계(빈도에 따라 구분)
📖 Long-term scheduling
- job scheduling(시스템에 제출 할 job 결정)
- 시스템내의 프로세스 수 조절
- I/O bounded와 computed bounded의 비율을 적절히 선택해야함
- 시분할 시스템에서는 모든 작업을 시스템에 등록하므로 덜 중요
📖 mid-term scheduling
- 메모리 할당 결정(suspend ready => ready로 가는 swapping)
📖 short-term scheduling
- process scheduling(프로세서를 할당할 프로세스를 결정)
- 가장 빈번하게 발생하므로 가장 중요하고 빨라야함
📌스케줄 방법
📖 선점 스케줄링
- preemptive scheduling
- 타의에 의해 자원을 빼앗길 수 있다.
- ex) 할당 시간 종료, 우선순위가 높은 프로세스 등장
- 응답성이 높아짐
- 시분할 시스템, real-time system에 적합
- context switch overhead가 크다
📖 비선점 스케줄링
- non-preemptive scheduling
- 할당받을 자원을 스스로 반납할 때까지 사용
- 응답성 낮음, context switch overhead 작음
📖 정적 우선순위
- static priority
- 프로세스 생성시 결정된 priority가 유지
- 구현이 쉽고, over head가 적음
- 환경 변화에 대응 어려움
📖 동적 우선순위
- dynamic priorty
- 프로세스의 상태 변화에 따라 priorty가 변경
- 구현 복잡, priorty 재계산으로 overhead가 큼
- 시스템 환경 변화에 대응
📮출처 : https://www.youtube.com/watch?v=hzXVQIlSSos&list=PLBrGAFAIyf5rby7QylRc6JxU5lzQ9c4tN