취미가 좋다

운영체제 5 : Process Scheduling (1) 본문

Computer Science/운영체제

운영체제 5 : Process Scheduling (1)

benlee73 2021. 1. 6. 14:56

스케줄링에 대해서 알아보자.

  • 스케줄리의 목적
  • 스케줄링 기준 및 단계
  • 스케줄링 정책

스케줄링을 왜 해야할까?

 

먼저 우리의 시스템은 여러 프로세스를 가지고 있는 다중프로그래밍 환경이다.

 

다중 프로그래밍

: 여러 개의 프로세스가 시스템 내에 존재하는 환경

자원을 할당할 프로세스를 선택해야 하기 때문에 스케줄링이 필요하다.

 

자원을 나누어 주는 방법은 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

 

Comments