Linux용 스케줄링 알고리즘으로 SJF를 사용할 수 없는 이유는 무엇입니까?
답변1
갑자기 많은 이유가 생각났어가장 짧은 직업 우선범용 시스템에서는 완전히 허용되지 않습니다.
첫 번째 문제는 바로 이름에 있습니다. "가장 짧은" 작업을 미리 결정할 수 있어야 합니다. 로컬 디렉토리에 있는 프로세스는 ls
매우 짧을 수 있지만 예를 들어 쉘 프로세스는 1초 미만(짧은 스크립트의 경우)에서 몇 주 또는 몇 달(대화형 쉘의 경우)까지 실행될 수 있습니다. 운영 체제에서는 이를 알 수 없으며 대부분의 경우 유틸리티 자체도 마찬가지입니다. 동시에 실행할 수 있는 많은 대화형 유틸리티가 필요한 경우가 많다는 것은 말할 것도 없습니다. (또한 내가 SJF를 기본 형태로 이해하는 한, 이는 모든 관련 문제를 안고 있는 비선점형입니다.)
물론 '작업'이라는 개념을 전체 프로세스보다 더 작은 단위로 세분화하면 더 유용할 수도 있습니다. 그러나 이는 새로운 "작업"의 시작을 알릴 수 없는 프로세스 개념에 실제로 맞지 않습니다. 있다고 하더라도 근무 기간이 얼마나 되는지 알아야 합니다. 프로세스가 알려주는 내용은 신뢰할 수 있지만 다중 사용자 시스템은 일부 불공평함을 초래할 수 있습니다. 또는 광고된 작업 길이가 실제 작업 길이와 일치하는지 확인하기 위해 몇 가지 검사를 수행해야 하지만 이제 이것이 실제 OS 스케줄러처럼 들리기 시작합니다...
그렇다고 유사한 개념이 사용되지 않았다는 의미는 아닙니다. 내가 기억하는 한, Linux 스케줄러에는 대화형 프로세스(장기간 동안 유휴 상태이지만 높은 우선순위를 가져야 하는 단기 작업을 수행함)와 비대화형 프로세스(오랜 시간 동안 유휴 상태여야 함)를 구별하는 기능이 있습니다. 일정한 속도로 일을 하십시오.)