본문 바로가기

OS/운영체제론

[운영체제론] 프로세서 스케줄링 / 2021.12.06

* 참고 자료 : 운영체제론 한빛아카데미

 

1. 프로세서 스케줄링이란?

프로세서 스케줄링이란 주어진 시간에 시스템이 실행할 프로세스를 선택하는 작업이다. 

이때, 여러 성능 요건의 충족이 필요하다.

- 처리량 최대화

- 지연시간 최소화

- 무기한 연기 방지

- 명시된 데드라인 전에 작업 완료

- 프로세서 활용도 극대화

 

시스템에서 프로세스들이 데드라인 안에 작업을 마치도록 보장하는 최대 처리량을 얻을 수 없다면 어떤 경우인가?
답 : 예를 들면, 데드라인을 맞춰야 하는 긴 프로세스를 위해 짧은 프로세스 여러 개가 지연될 때, 처리량을 최대화 하지 못한다.

 

2. 스케줄링 수준

세 가지 스케줄링 수준이 있다.

 

2-1) 고수준 스케줄링

- 작업 또는 장기 스케줄링이라고도 한다.

- 시스템이 어떤 작업에 자원을 얻으려고 경쟁하게 해줄지 결정한다. (진입 허가 스케줄링이라고도 하는데, 어떤 작업이 시스템에 들어갈 것인지 결정하기 때문이다.)

- 멀티프로그래밍 정도, 즉 임의의 시간에 시스템에 존재할 수 있는 프로세스의 총 수를 지정한다. (너무 많은 요청으로 포화상태가 되어 시스템 성능이 떨어지는 것을 방지한다.)

 

2-2) 중간 수준 스케줄링

- 어떤 프로세스가 프로세서를 얻으려고 경쟁할 수 있는지 결정한다.

- 작업이 시스템에 들어가는 것을 허가하는 일과 작업들이 나타내는 프로세스들에 프로세서를 할당하는 일 사이에 버퍼 같은 역할을 한다.

- 단기적인 시스템 부하의 높낮이에 따라 결정된다.

 

2-3) 저수준 스케줄링

- 활성화된 프로세스 중 어떤 프로세스에 프로세서를 할당할지 결정한다.

- 프로세스의 중요성을 반영하는 우선순위를 부여한다.

 

많은 현대 시스템에서는 저수준과 중간 수준 스케줄러만 사용한다. 작업시작은 중간 수준 스케줄러에서 수행한다.

 

스케줄링 수준

1. 중간 수준 스케줄러는 시스템의 부하에 따라 어떻게 반응하는가?
답 : 과부하라면 대키 큐에 작업이 들어가는 것을 막고 부하가 남는다면 작업이 시스템에 들어오도록 한다.
2. 어떤 수준의 스케줄러가 메인 메모리에 상주할 수 있는가? 그 이유는 무엇인가?
답 : 빈번히 실행되는 저수준 스케줄러가 메인 메모리에 상주해야한다. 그래야 스케줄링 오버헤드를 줄이면서 최대한 빨리 반응할 수 있기 때문이다.

 

3. 선점형/비선점형 스케줄링 

3-1) 선점형 스케줄링

- 프로세서에서 프로세스가 실행 중일 때 시스템이 해당 프로세서를 쟁취 가능하다. (프로세스가 코드 일부를 실행하다가 문맥 전환할 수 있다.)

- 우선순위가 높은 프로세스에 빠르게 응답해야 하는 시스템에서 유용하다. (예 : 실시간 시스템, 대화식 시분할 시스템)

- 선점이 효과적으로 이루어지려면 여러 프로세스를 메인 메모리에 유지하는 것이 필요하다.

 

3-2) 비선점형 스케줄링

- 프로세스가 프로세서를 할당 받으면 작업을 완료하거나 자발적으로 프로세서를 반납할 때까지 프로세서에서 실행이 가능하다. (프로세서를 강제로 쟁취하지 않는다.)

- 중요한 프로세스라도 앞의 프로세스가 완료될 때까지 대기한다.

- 처리시간이 예측가능하다.

 

3-3) 인터럽팅 클록

- 보통 주기적으로 인터럽트를 생성한다.

- 프로세스에 주어진 시간이 만료되어 인터럽트가 발생하면 운영체제가 개입해서 계속 실행할지 다음 프로세스를 실행할지 결정한다.

 

1. 비선점형 스케줄링이 선점형 스케줄링보다 적절한 때는 언제인가?
답 : 비선점형 스케줄링은 처리 시간을 예측할 수 있어서 사용자들에게 정확한 시간에 작업을 완료해줘야 하는 배치 처리 시스템에 유용한다.
2. 무한 루프에 진입하는 프로그램이 선점형 시스템을 독점하는 것이 가능한가?
답 : 해당 프로세스의 우선순위와 시스템의 스케줄링 정책에 따라 다르다. 일반적으로는 선점형 시스템에서 프로세스가 무한루프에 빠진다면 처리량을 줄어들 것이다, 그러나 이따금씩 다른 프로세스들을 실행할 수 있다. 우선순위가 높은 프로세스가 무한 루프에 빠지는 경우, 시스템에 있는 다른 모든 프로세스의 우선순위가 낮으면 해당 무한 루프를 계속 실행할 수도 있다. 일반적으로 선점형 시스템은 비선점형 시스템보다 무한 루프의 영향을 덜 받는 편이다. 보통 운영체제들은 한 프로세스가 프로세서를 사용할 수 있는 최대 시간을 제한함으로써 이와 같은 상황을 처리한다.

 

4. 우선순위

우선순위는 프로세스들의 상대적 중요도를 정량화한 것이다.

 

4-1) 정적 우선순위

- 처음에 정해진 우선순위로 고정.

- 쉬운 구현, 작은 오버헤드

- 환경 변화에 대한 반응이 불가능하고, 지연 시간 감소의 여려움이 있음. (반응이 빠르지 않다.)

 

4-2) 동적 우선순위

- 상황에 따라 우선순위가 변화한다. (우선순위가 더 높은 프로세스가 핵심자원을 보유한 경우,이 프로세스가 자원을 반납한 뒤 우선순위를 낮추어 다른 프로세스가 이용할 수 있도록 한다.)

- 복잡한 구현, 많은 오버헤드

- 시스템의 방응성 향상

 

동적 우선순위 메커니즘을 위해서는 비용을 더 들이고 오버헤드를 감수해야 한다. 이 메커니즘이 그만한 가치가 있다면 그 이유는 무엇인가?
답 : 동적 우선순위 메커니즘을 신중하게 구사하면 정적 우선순위 메커니즘보다 반응성이 높은 시스템을 만들 수 있기 때문이다.

 

5. 스케줄링 목적

스케줄링 규칙은 시스템의 유형, 사용자의 요구 등에 따라 다양하다. 

예) 실시간 시스템과 대화식 데스크톱 컴퓨터의 규칙은 다르다.

 

5-1) 시스템 유형에 따라 다른 목적

- 처리량 최대화 : 요청을 빨리 들어 줄 수 있는 프로세스를 선택하거나 작업을 완료함으로써 다른 프로세스들이 자유롭게 실행할 수 있는 프로세스 선택

- '수용할 만한' 시간 안에 반응을 보이는 대화식 프로세스의 수 최대화

- 자원 활용도 최대화

- 무기한 연기 회피

- 우선순위 강화

- 오버헤드 최소화

- 예측 가능성 보장

 

5-2) 대부분의 스케줄러가 가지는 공통된 목적

- 공평성 : 유사한 프로세스들을 동일하게 대우 -> 어떤 프로세스도 무기한 연기되지 않음

- 예측 가능성 : 유사한 시스템 부하에서 주어진 프로세스가 항상 비슷한 시간 동안 실행

- 규모 확장성 : 시스템 부하가 증가함에 따라, 성능이 급격히 떨어지지 않고 서서히 감소

 

1. 반응 시간의 변량을 줄여야 한다는 목적과 우선순위를 지원해야 한다는 목적은 어떻게 상충하는가?
답 : 선점형 시스템에서는 우선순위가 높은 프로세스들이 우선순위가 낮은 프로세스들을 언제든지 선점할 수 있다. 이에 따라 반응 시간의 변량이 증가한다.
2. 스케줄링 오버헤드를 늘 낭비라고 봐야하는가?
답 : 아니다. 효율적인 스케줄링 연산을 할 경우 이때문에 발생하는 오버헤드에도 불구하고 시스템 자원 활용도를 높일 수 있다.

 

6. 스케줄링 기준

스케줄러는 시스템의 스케줄링 목적을 실현하기 위해 프로세스의 행동을 고려해야 한다. 

- 프로세서 중심 프로세스 : 시스템이 할당하는 프로세서 시간을 모두 사용하는 경향

- 입출력 중심 프로세스 : 입출력 요청을 하기 전에 프로세서를 잠시 사용하고 곧 반납하는 경향

- 배치 프로세스 : 사용자와 상호 작용 없이 수행할 수 있는 작업을 포함

- 대화식 프로세스 : 빈번한 사용자 입력 요구 (윈도우, 마우스 인터페이스 환경에서 시스템이 많은 그래픽 처리를 신속히 해야함 -> 이러한 경우 다른 프로세스에 대한 서비스는 감소)

 

6-1)

우선순위를 사용하는 시스템에서 스케줄러는 우선순위가 높은 시스템이 우선순위가 낮은 시스템을 얼만 자주 선점하는지에 따라 스케줄링을 결정함 -> 예로 자주 선점당하는 프로세스를 덜 선호함

 

6-2)

선점형 스케줄링 정책에서는 각 프로세스의 실제 실행 시간에 관한 정보를 유지하고 있을 때가 많다. 몇몇 설계자는 실행 시간을 적게 부여받는 프로세스를 선호해야 한다고 생각하고 다른 설계자들은 실행 시간을 많이 부여받은 프로세스가 완료에 가까우므로 이를 선호해 가능하면 빨리 끝내고 자원을 반납하게 하는 것이 유리하다고 생각한다.

 

1. 일반적으로 대화식 프로세스는 프로세서 중심인가, 입출력 중심인가? 또 배치 프로세스인 경우는 어떠한가?
답 : 대화식 프로세스는 사용자들의 입력을 기다리는 경우가 많다. 따라서 입출력 중심이다. 그러나 대화식 프로세스도 프로세서를 주로 사용하는 국면으로 접어들 때도 있다. 배치 프로세스는 사용자와 상호 작용이 적고 주로 프로세서 중심이다.
2. 스케줄러는 프로세스들이 완료하려면 얼마나 더 실행해야 하는지 정확히 알기 어렵다. 예상 완료 시간 정보에 근거해 스케줄링하는 시스템이 있다면, 프로세스들이 이 정책을 어떻게 악용할 수 있을까?
답 : 프로세스들이 스케줄러로부터 유리한 대접을 받으려고 남은 실행 시간을 의도적으로 적게 책정할 것이다.