스케줄러는 스레드가 아니라 커널 기능이므로 스케줄러가 수행하는 작업을 실제로 "볼" 방법이 없습니다(가정). 커널의 이러한 특정 부분은 사용자에게 보이지 않습니다(다시 가정하겠습니다).
(부가 질문: 사용자에게 표시되지 않고 스레드/프로세스로 표시되지 않는 다른 부분은 무엇입니까?)
이러한 커널 부분이 보이지 않으면 어떻게 상상해야 할지 모르겠습니다. 내 말은, 눈에 보이지 않는 부분은 어떻게, 어디서 수행되는 걸까요? 컨텍스트 전환 후 스케줄러를 실행하도록 CPU에 지시하는 사람은 누구입니까? 누가 CPU에 이 작업을 "지시"합니까?
답변1
귀하의 질문은 매우 광범위합니다. 스케줄러 부분을 구체적으로 다루겠습니다.
스케줄러는 함수이므로 함수가 호출될 때마다 실행됩니다. 제가 Elixir에 연결한 이유는 특정 함수의 호출 사이트를 탐색할 수 있게 해주기 때문입니다(참고자료 확인__schedule
). 예를 들어, 커널이 사용자 공간(예를 들어서비스 시스템 호출 후),일정 변경이 요청되었는지 확인합니다.그렇다면 스케줄러가 호출됩니다.
따라서 기본적으로 스케줄러는 커널에 필요할 때 실행됩니다. 커널이 제어할 수 있는 한 스케줄러가 실행될 수 있으며 이런 일이 자주 발생합니다.
바라보다단일 코어 PC에서 Linux의 다양한 프로세스는 어떻게 관리됩니까?자세한 내용은 링크를 참조하세요.