최근 인터뷰에서 Linux 운영 체제에서 사용하는 스케줄링 알고리즘에 대한 질문을 받았습니다. 어떤 알고리즘이 사용되며 그 이유는 무엇입니까?
또한 실시간 운영 체제는 어떤 알고리즘을 사용합니까? 왜?
답변1
현재 Linux 작업 스케줄러는 CFS(Completely Fair Scheduler)라고 합니다. 너는 좀 봐야 해http://people.redhat.com/mingo/cfs-scheduler/sched-design-CFS.txt자세한 내용은. 제 생각에는 디자인이 상당히 복잡하고 RTOS에 적합하지 않습니다.
실시간 시스템의 일반적인 기술은 특정 가정(예: 정적 작업 우선순위 및 고정 실행 시간 및 속도)이 유지되는 경우 강력한 보장을 갖기 때문에 속도-단조 스케줄링입니다. 다른 많은 알고리즘이 있으며 이에 대한 많은 연구가 있었습니다. 따라서 기본적으로 필요한 속성, 작업에 대해 알고 있는 내용, 수정해야 할 사항에 관한 것입니다.
답변2
라운드 로빈 알고리즘은 일반적으로 시간 공유 환경에서 사용됩니다.
답변3
커널 I/O 스케줄링에 대해 생각하고 있는지 잘 모르겠습니다. 그렇지 않은 경우: 이 답변을 무시하십시오.
위키피디아에서는 다음과 같이 말합니다.CFG(완전히 공정한 큐잉)커널 2.6.18부터 기본값입니다.
내 openSUSE(커널 2.6.37 실행)에서는 CFG에서 명령을 실행할 수 있습니다.아니요그리고마감 시간.
답변4
이것은 귀하의 다른 질문에 대한 답변입니다. 실시간 시스템(RTS)에는 하드 실시간 시스템과 소프트 실시간 시스템이라는 두 가지 유형이 있습니다. 하드 RTS의 CPU 스케줄링 알고리즘은 우선순위 기반의 선점형 알고리즘이고, 소프트 RTS의 CPU 스케줄링 알고리즘은 비선점형 우선순위입니다.