반응형

 

프로세스 스케줄러

1. 프로세스를 작동시키는 커널의 서브시스템

2. 어떤 프로세스를 얼마나 오랫동안 실행할 것인지를 결정

3. 실행중인 시스템 프로세스에 프로세서(CPU) 동작시간이란 자원 할당

 

스케줄러

1. 리눅스 같은 멀티태스킹 운영체제의 기본요소

2. 스케줄러의 최대 사용률을 끌어내며

3. 사용자에게 여러개의 프로세스가 동시에 실행되는 느낌을 줌

 

스케줄러의 원리

1. 프로세서 작동시간을 최대한 활용할 수 있는 실행 가능한 프로세스가 있다면, 어떤 프로세스라도 실행하고 있어야 한다.

2. 시스템의 프로세서 개수보다 실행가능한 프로세스의 개수가 많은 경우라면 특정 순간에 일부 프로세스는 실행 중이 아니며 대기하게 된다.

 

프로세스 우선순위

1. 스케줄링 알고리즘의 일반적인 형태는 우선순위 기반의 스케줄링이다

2. 목표는 가치와 필요에 따라 프로세스의 순위를 매겨 프로세서 시간을 할당해야 한다.

 

리눅스 커널의 두가지 우선순위 단위

1. 나이스값 (-20 ~ +19, 기본값 : 0) : 클 수록 우선순위가 낮다.

2. 실시간 우선순위 (0 ~ 09) : 클수록 우선순위가 높다

-> 실시간 우선순위값은 나이스값과 별도의 값이다

 

타임슬라이스 : 선점되기 전까지 작업을 얼마나 더 실행할 수 있는지 나타내는 값이다

1. 너무 길게 잡으면 시스템의 대화형 성능이 떨어지고 실제 App이 시스템에서 실행되고 있다는 것을 느끼기 어렵다

2. 너무 짧게 잡으면 타임슬라이를 소진한 프로세스를 다음 프로세스로 전환하는데 빈번하게 시스템 시간을 사용하게 되므로 프로세스 전환에 프로세스 시간을 소비한다.

 

※ 리눅스의 CFS스케줄러는 타임슬라이스 값을 할당하지 않고, 프로세스별 프로세서 할당 비율을 지정하는 방법을 사용한다

→ 리눅스에서 프로세스에 할당되는 프로세스 시간은 시스템의 부하에 따른 함수로 결정되고 이는 나이스값의 영향을 받는다

 

※ 리눅스 스케줄링 알고리즘

스케줄러 클래스

1. 리눅스 스케줄러는 모듈화돼어 있으며 여러유형의 프로세스를 각기 다른 알고리즘을 통해 스캐줄링이 가능하며 모듈화된 형태를 스케줄러 클래스라고 한다.

2. 스케줄러 클래스를 이용해 교체 가능한 여러 알고리즘을 동시에 사용하면서 클래스별로 독자적인 방식으로 프로세스를 스케줄링이 가능

3. kernel/sched.c 에 정의된 기본 스케줄러 코드는 각 스케줄러 클래스를 우선순위에 따라 차례대로 실행

4. 실행가능한 프로세스가 있는 가장 우선순위가 높은 스케줄러가 다음에 실행할 프로세스를 선택

5. 완전 공정 스케줄러(CFS)는  SCHED_NORMAL로 정의된 리눅스의 일반 프로세스용 스케줄러 클래스

 

유닉스 시스템의 프로세스 스케줄링

 증요한 2가지의 개념 : 프로세스 우선순위타임슬라이스

 타임 슬라이스는 프로세스가 얼마나 오랫동안 실행되는가이고 높은 우선순위 프로세스는 더 자주 실행되고 더 긴 타임슬라이스 값을 할당 받는다.

→ 이 시스템의 방법론적인 문제발생

 

1. 작업전환의 최적화 문제 발생

2. 우선순위(나이스 값)가 타임슬라이스와 묶이는 것과 나이스 값의 상대적인 차이 발생

3. 나이스값에 따라 타임슬라이스를 할당 하려면 타임슬라이스의 절대값을 할댕해야 됨

4. 우선순위 기반 스케줄러가 대화형작업을 최적화 하고자 할 경우 프로세스 깨우기 처리와 관련된 문제 발생

반응형

+ Recent posts