취미가 좋다
운영체제 5 : Process Scheduling (1) 본문
스케줄링에 대해서 알아보자.
- 스케줄리의 목적
- 스케줄링 기준 및 단계
- 스케줄링 정책
스케줄링을 왜 해야할까?
먼저 우리의 시스템은 여러 프로세스를 가지고 있는 다중프로그래밍 환경이다.
다중 프로그래밍
: 여러 개의 프로세스가 시스템 내에 존재하는 환경
자원을 할당할 프로세스를 선택해야 하기 때문에 스케줄링이 필요하다.
자원을 나누어 주는 방법은 2가지가 있다.
1. 시간 분할 (time sharing) 관리
CPU는 한 번에 하나의 프로세스만 들어가서 사용할 수 있는 자원이다.
따라서 프로세서 사용 시간을 프로세스들에게 분배하는 것을 프로세스 스케줄링 (Process Scheduling)이라고 한다.
2. 공간 분할 (space sharing) 관리
반면 메모리 같은 경우는 여러 프로세스가 동시에 사용할 수 있는 자원이다.
따라서 공간을 분할하여 프로세스에게 분배한다.
스케줄링 (Scheduling)의 목적
: 시스템의 성능 (performance) 향상
하지만 성능이라는 것이 모호하기 때문에 지표를 잘 설정해야 한다.
대표적인 시스템 성능 지표
- 응답시간 (response time)
: 작업 요청을 보냈을 때 응답 받을 때까지의 시간
사용자 대화형 시스템 (interactive system) or real-time 시스템에 적합하다.
- 작업 처리량 (throughput)
: 단위 시간동안 얼마나 많은 일을 할 수 있는 지를 나타내는 지표이다.
일괄 처리 시스템 (batch system)에 적합하다.
- 자원 활용도 (resource utilization)
: 얼마나 자원을 놀게 하지 않고, 열심히 썼는지를 나타내는 지표이다. 주어진 시간동안 자원이 활용된 시간.
비싼 장비를 사용할 때 적합하다.
→ 목적에 맞는 지표를 고려하여 스케줄링 기법을 선택한다.
그 외 많은 시스템 성능 지표들
- 공평성 (fairness) : FIFO
- 실행 대기 방지
- 예측 가능성 (predictability)
- 자원 할당의 공정성 보장
- 단위시간당 처리량 최대화
- 적절한 반환시간 보장
- 예측 가능성 보장
- 오버헤드 최소화
- 자원 사용의 균형 유지
- 반환시간과 자원의 활용 간에 균형 유지
- 실행 대기 방지
- 우선순위
- 서비스 사용 기회 확대
- 서비스 수 감소 방지
용어 정리
대기시간 (Waiting time)
: 프로세스가 도착하여 실행을 시작하기 전까지의 시간
응답시간 (Response time)
: 실행하다가 처음 응답이 오기 전까지의 시간
실행시간 (Burst time)
: 실제로 프로세스가 실행된 시간
반환시간 (Turn-around time)
: 원하는 일이 끝났을 때까지의 시간
스케줄링 기준 (Criteria)
: 스케줄링 기법을 선택할 때 고려하는 항목 or 지표들이다.
1. 프로세스 (process)의 특성
- I/O-bounded or compute-bounded
2. 시스템 특성
- Batch system or interactive system : 목적이 다르다.
3. 프로세스의 긴급성 (urgency)
4. 프로세스의 우선순위 (priority)
5. 프로세스 총 실행 시간 (total service time)
CPU burst vs I/O burst
프로세스가 수행되는 것을 보면 CPU 사용 + I/O 대기(사용) 의 연속이라고 할 수 있다.
- CPU burst : CPU 사용 시간
- I/O burst : I/O 대기(사용) 시간
CPU 사용 시간이 더 많은 것을 compute-bounded라고 하고
I/O 사용 시간이 더 많은 것을 I/O-bounded라고 한다.
스케줄링의 단계 (Level)
: 발생하는 빈도 및 할당 자원에 따른 구분
Long-term scheduling
: 긴 시간에 한 번씩 일어나는 스케줄링으로, Job scheduling이 여기에 속한다.
- Job scheduling
: 시스템에 제출할 (kernel에 등록할) 작업(job)을 결정한다.
- 다중 프로그래밍 정도 (degree) 를 조절한다. 즉, 시스템 내의 프로세스 수를 조절한다.
- I/O bounded와 compute-bounded 프로세스들을 잘 섞어서 선택한다.
- 시분할 시스템 (time sharing sytem)에서는 long-term scheduling이 덜 중요하기 때문에, 모든 작업을 시스템에 등록한다.
Mid-term scheduling
: 메모리 할당 (memory allocation) 을 결정한다. Long-term보다 자주 일어난다.
- intermediate-level scheduling
- Swapping (swap-in / swap-out)
Short-term scheduling
Process scheduling
: 프로세서(CPU)를 할당할 프로세스를 결정한다.
- 가장 빈번하게 발생하기에 아주 빨라야 한다.
스케줄링 (Scheduling) 정책
스케줄링을 할 때 수행할 방법이다.
선점 (Preemptive) vs 비선점 (Non-preemptive)
1. 선점 (Preemptive)
: 타의에 의해 자원을 빼았길 수 있는 스케줄링이다.
즉, 할당 시간이 종료되거나, 우선순위가 높은 프로세스가 등장하면 프로세스는 자원을 빼앗긴다.
- Time-sharing systme, real-time system과 같이 응답성이 중요한 시스템에 적합하다.
- 하지만 프로세스가 상대적으로 자주 바뀌기 때문에 context switch overhead가 크다.
2. 비선점 (Non-preemptive scheduling)
: 프로세스가 할당받은 자원을 스스로 반납할 때까지 사용한다. 즉, 자원을 뺏을 수가 없다.
- Context switch overhead가 적다는 장점이 있다.
- 하지만 급한 일을 처리하지 못하는 우선순위 역전 현상 때문에, 평균 응답 시간이 증가한다.
우선순위 (Priority)
: 프로세스의 중요도에 따라 정해진다.
1. Static priority (정적 우선순위)
- 프로세스가 생성될 때 결정된 priority가 유지된다.
- 구현이 쉽고 overhead가 적다.
- 하지만 시스템 환경 변화에 대한 대응이 어렵다.
2. Dynamic priority (동적 우선순위)
- 프로세스의 상태 변화에 따라 priority 변경
- 구현이 복잡하고, priority를 다시 계산하는 overhead가 크다.
- 그래도 시스템 환경 변화에 유연하게 대응할 수 있다.
여러 스케줄링 알고리즘에 대해서는 다음 글에서 알아보자.
본 글은 HPC Lab. KOREAHECH YOUTUBE 채널의 김덕수 교수님 강의를 보고 작성되었습니다.
[Course] Operating System (CPA310) - 운영체제 강의
o Operating System (운영체제), CPA310, KOREATECH o Instructor: Duksu Kim (김덕수) o Course homepage: https://sites.google.com/view/hpclab/courses/operating-system 운...
www.youtube.com
'Computer Science > 운영체제' 카테고리의 다른 글
운영체제 6 : Process Synchronization and Mutual Exclusion (1) (0) | 2021.01.12 |
---|---|
운영체제 5 : Process Scheduling (2) (0) | 2021.01.06 |
운영체제 4 : Thread management (0) | 2021.01.05 |
운영체제 3 : Process Management (0) | 2021.01.05 |
운영체제 2 : Operating Systems overview (0) | 2021.01.04 |