Linux에서 어떤 스케줄링 알고리즘이 사용됩니까?


11

최근 인터뷰에서 Linux 운영 체제에서 사용되는 스케줄링 알고리즘에 대한 질문을 받았습니다. 왜 알고리즘이 사용됩니까?

또한 실시간 운영 체제에서 어떤 알고리즘이 사용되며 그 이유는 무엇입니까?


프로세스 또는 IO 스케줄링? 아니면 다른 것?
maxschlepzig

답변:


7

현재 Linux 작업 스케줄러를 CFS (Completely Fair Scheduler)라고합니다. 자세한 내용 은 http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt 를 참조하십시오. 디자인은 상당히 복잡하며 RTOS에는 적합하지 않습니다.

실시간 시스템에서 일반적인 기법은 속도-모노 닉 스케줄링인데, 특정 가정 (예 : 정적 작업 우선 순위 및 고정 된 실행 시간 및 속도)이있을 경우 강력한 보장이 있기 때문입니다. 다른 많은 알고리즘이 있으며 많은 연구가있었습니다. 기본적으로 필요한 속성과 작업 및 수정 된 사항에 관한 것입니다.


2

커널의 I / O 일정에 대해 잘 모르겠습니다. 그렇지 않은 경우 :이 답변을 무시하십시오.

위키피디아에 따르면 커널 2.6.18부터 CFG (완전 페어 큐잉) 가 기본으로 설정되어 있습니다.

openSUSE (커널 2.6.37 실행)에서 CFG, NOOPDeadline 사이를 전환 할 수 있습니다 .


궁금합니다. 다른 알고리즘으로 어떻게 전환 할 수 있습니까? 이것에 약간의 빛을 비출 수 있습니까? 감사
rsjethani

@rsjethani YaST-> 시스템-> 커널 설정-> 두 번째 탭 (커널 설정)-> 전역 IO 스케줄러로 이동하십시오. (독일 GUI에서 번역 한 옵션의 이름은 다를 수 있습니다)
Torbjörn

1

라운드 로빈 알고리즘은 일반적으로 시간 공유 환경에서 사용됩니다.


0

Linux 스케줄러에서 사용하는 알고리즘은 선점 우선 순위와 바이어스 된 시간 슬라이싱을 조합 한 복잡한 체계입니다. 우선 순위가 높은 작업에 더 긴 시간 퀀텀을 할당하고 우선 순위가 낮은 작업에 더 짧은 시간 퀀텀을 할당합니다.

각 프로세스를 실시간 프로세스 또는 일반 (기타) 프로세스로 식별합니다. 실시간 작업에는 [0,99] 범위의 정적 우선 순위가 할당되며 숫자가 낮을수록 높은 우선 순위를 나타냅니다.

다른 모든 작업은 좋은 값을 더하거나 뺀 값을 기준으로하는 작업의 대화 형 작업을 기반으로 [100,139] 범위의 동적 우선 순위를 갖습니다.보다 대화 형인 작업은 일반적으로 더 긴 절전 시간을 가지므로 스케줄러가 대화식 작업을 선호하므로 조정이 -5에 더 가깝습니다. (작업의 상호 작용은 I / O를 기다리는 동안 얼마나 오래 잤는 지에 따라 결정됩니다.) 작업의 상호 작용은 값 5가 좋은 값에 더해질 지 또는 빼는지를 결정합니다. 이러한 조정의 결과는 이러한 작업에 우선 순위가 높습니다. 반대로, 휴면 시간이 짧은 작업은 종종 CPU에 더 묶여 있으므로 우선 순위가 낮아집니다.

커널은 실행 가능한 모든 작업 목록을 Runqueue 데이터 구조로 유지 관리합니다. Runqueue에는 활성 및 만료의 두 가지 우선 순위 배열이 포함됩니다. 활성 어레이에는 시간 조각에 남은 시간이있는 모든 작업이 포함되고 만료 된 어레이에는 만료 된 모든 작업이 포함됩니다. 이러한 각 우선 순위 배열에는 우선 순위에 따라 색인화 된 작업 목록이 포함됩니다. 스케줄러는 CPU에서 실행하기 위해 활성 어레이에서 우선 순위가 가장 높은 작업을 선택합니다. 모든 작업이 시간 조각을 모두 사용한 경우 (즉, 활성 배열이 비어 있음) 두 우선 순위 배열이 교환됩니다. 만료 된 배열이 활성 배열이되고 그 반대도 마찬가지입니다.

작업의 타임 퀀텀이 소진되고 만료 된 배열로 이동하면 작업의 동적 우선 순위가 다시 계산됩니다. 따라서 두 어레이가 교환 될 때 새 활성 어레이의 모든 작업에 새로운 우선 순위와 해당 시간 조각이 할당되었습니다. (참고 :이 문서는 Abraham Silberschatz 등의 운영 체제 개념 (제 9 판)에서 발췌 한 것입니다. 자세한 내용은이 책의 섹션 5.6.3을 참조하십시오)


이 사이트에 오신 것을 환영합니다. >특히 책에서 인용 할 때 외부 소스에서 가져온 답변 부분에 대해 "따옴표"형식 (예 :로 시작 )을 사용하십시오.
AdminBee

0

이것은 다른 질문에 대한 답변입니다. 실시간 시스템 (RTS)은 하드와 소프트의 두 가지 유형이 있습니다. 하드 RTS에 대한 CPU 스케줄링 알고리즘은 우선 순위 기반의 선점 알고리즘이며 소프트 RTS에 대한 CPU 스케줄링 알고리즘은 비 선점 우선 순위입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.