공정한 스케줄링으로 새로운 프로세스를 처리하는 방법

공정한 스케줄링으로 새로운 프로세스를 처리하는 방법

저는 현재 CFS(Completely Fair Scheduling)를 이해하려고 노력 중인데 우연히 이해할 수 없는 내용을 발견했습니다. 예를 들어 보겠습니다.

  • 백그라운드에서 실행 중인 프로세스(예: 무언가 추적)가 있습니다. 우선순위는 0입니다.
  • 1시간 후에 동일한 우선순위로 두 번째 프로세스를 시작합니다.

내 질문은 초 초기화 후 첫 번째 프로세스가 어떻게 실행될 기회를 얻느냐는 것입니다. 처음 언급된 프로세스가 min_vruntime해당 시점에 존재하지 않는다고 가정합니다. 이 경우에는 vruntime두 번째 프로세스가 vruntime첫 번째 프로세스 보다 항상 낮은 것 같아요 . 둘 다 동일한 우선순위를 갖기 때문에 프로세스 2가 항상 RB 트리에서 첫 번째 프로세스보다 먼저 순위가 매겨진다고 가정합니다.

분명히 그런 식으로는 작동하지 않죠? 그렇다면 내가 무엇을 놓치고 있는 걸까요?

관련 정보