Linux는 어떤 프로세스 스케줄링 알고리즘을 사용합니까?

Linux는 어떤 프로세스 스케줄링 알고리즘을 사용합니까?

Linux 운영 체제는 멀티태스킹을 활성화하기 위해 실행 중인 프로세스 간에 전환합니다.

현재 실행 중인 프로세스의 실행을 일시 중지할 시기와 다음에 실행해야 할 프로세스를 결정하는 데 사용되는 알고리즘은 무엇입니까?

답변1

최신 커널에서는 완전히 공정한 스케줄러가 사용됩니다(이전 커널의 O(1) 스케줄러를 대체함).

CFS는 실행 중인 프로세스에서 소비한 CPU 시간을 기준으로 예약된 작업을 레드-블랙 트리에 저장합니다. 이를 통해 스케줄러는 실행 시간이 가장 짧은 프로세스(트리의 왼쪽 모드 노드에 저장됨)를 효율적으로 선택할 수 있습니다.

작업이 실행되려고 하면 트리에서 제거되고, 실행되면 새로 사용된 CPU 시간으로 다시 추가됩니다.

오랜 시간 동안 "잠자기" 상태인 프로세스는 CPU 시간을 많이 사용하지 않기 때문에 자동으로 우선순위가 높아집니다.

따라서 휴면 프로세스는 지속적으로 실행되는 프로세스와 동일한 양의 CPU 시간을 갖기 때문에 "공정"합니다.

관련 정보