봉황대 in CS

[Chapter 5. CPU 스케줄링] 선점과 동적 우선순위, 타임 슬라이스의 가변성 본문

Computer Science & Engineering/Operating System

[Chapter 5. CPU 스케줄링] 선점과 동적 우선순위, 타임 슬라이스의 가변성

등 긁는 봉황대 2022. 7. 19. 03:12

* 본 글은 '운영체제(Operating System: Concepts) 9th edition'의 내용과 2021학년도 1학기에 수강한 '운영체제' 과목 강의 내용을 함께 정리하여 작성하였습니다.

 

선점(preemption)

선점은 현재 실행 중인 프로세스로부터 CPU를 회수하여 다른 프로세스에게 할당하는 것을 말한다.

시분할 시스템에서 타임 슬라이스 소진 시 우선순위가 더 높은 프로세스에게 CPU를 할당하는 것으로 일어난다.

 

동적 우선순위


프로세스의 실행 중에는 시스템의 성능, 프로세스의 특성 등을 고려하여 우선순위를 재조정하게 되고

결과적으로 스케줄링에 의해 선점이 발생한다.

 

전체적인 시스템 성능의 향상 및 프로세스의 속성을 고려하여 커널의 여러 곳에서 우선순위를 조정하는 원칙과 기법이 필요하다.

 

동적 우선순위와 타임 슬라이스의 가변성

시분할 시스템에서 타임 슬라이스의 양은 프로세스마다 다를 수 있고, 동일 프로세스 내에서도 타임 슬라이스 양은 동적으로 변할 수 있다.
이때 타임 슬라이스의 양은 우선순위의 동적 변화에 따라 결정된다.

 

 

아래의 그림은 타임 슬라이스의 길이를 동적으로 변화시키지 않을 경우의 시분할 시스템을 나타낸 것이고,

 

 

아래의 그림은 타임 슬라이스의 길이를 동적으로 변화시킬 경우에 대하여 나타낸 것이다.

 

위 그림과는 다르게 아래 그림에서 변경된 점은 두가지이다.

 

1. 타임 슬라이스의 길이가 일률적이지 않다.

2. Clock Interrupt Interval이 추가되었다.

 

가변적인 타임 슬라이스를 운영하기 위해서는 아주 높은 해상도의 interval이 필요하다.

이것을 통해서 한 타임 슬라이스가 소진되었는지는

클럭(clock) 인터럽트가 Clock Interrupt Interval이 몇 번 돌아갔는지를 계산해서 체크하는 것을 통해 알 수 있다.

 

 

우선순위가 동적으로 변화하면 선점이 일어나며, 타임 슬라이스의 양도 달라진다.

 

 

[ 사례 ] 리눅스 Ver. 2.4

 

Time Slice 길이 Interactive(대화성) 정도 Nice 값 (-20 ~ 19)
(우선순위, 클수록 낮다)
초기 초기 해당 없음 부모의 값
최소 10ms Low (CPU-Bound Process) High (19, 낮은 우선순위)
기본 100ms Average Zero
최대 200ms High (I/O-Bound Process) Low (-20, 높은 우선순위)

 

* Nice 값 : 프로세스 간의 실행 우선순위

   0 ~ 99 : 실시간 프로세스를 위한 우선순위 구간

   100 ~ 139 : 일반 응용 프로세스를 위한 우선순위 구간 (40개) - 위의 표에 나와있는 부분

 

 

1. 대화성이 적다 = CPU-Bound Process에 가깝다

따라서 우선순위를 낮추고, 타임 슬라이스를 짧게 줘서 프로세스가 CPU를 오래 붙들고 있지 않도록 한다.

 

2. 대화성이 높다 = 입출력이 자주 일어난다 = I/O-Bound Process에 가깝다

이 프로세스에게는 CPU를 할당해줘도 곧 입출력이 일어나서 CPU를 자진 반납하게 될 것이기 때문에, 임 슬라이스를 충분히 주는 것이 대화성을 높이는 것이다.

따라서 우선순위를 높이고, 타임 슬라이스도 충분히 받도록 한다.

 

 

이는 두 가지의 관점이 모두 반영되어 있는 정책이며,

1. CPU를 여러 프로세스가 공정하게 나눠 쓰게 하자는 관점

2. 대화성을 높여주자는 관점

 

우선순위의 변화에 따라 타임 슬라이스의 양도 변한다는 것을 확인할 수 있다.

 

 

반응형
Comments