Linux의 프로세스 스케줄러란 무엇입니까?

Linux의 프로세스 스케줄러란 무엇입니까?

나는 Wikipedia에 대해 읽었습니다.프로세스 스케줄러:

프로세스 스케줄러는부분운영 체제는 특정 시점에 어떤 프로세스를 실행할지 결정합니다.

나는 이것이 무엇을 의미하는지 정말로 이해하지 못한다. Linux의 프로세스 스케줄러란 무엇입니까? 커널의 일부입니까? 정확히 어떤 역할을 하나요?

답변1

Linux에서는 프로세스 스케줄러가 핵심 부분입니다.핵심. 별도의 스레드나 모듈로 존재하지 않고, 함수로 구현되며,__schedule().

프로세스 스케줄러의 임무는 다음에 실행할 프로세스를 결정하는 것입니다. 시스템의 각 프로세서에는 CPU에서 실행을 기다리는 프로세스 목록인 실행 큐가 있습니다. 호출되면 스케줄러는 이 프로세스 목록을 보고 다음에 실행할 프로세스를 결정합니다. 이는 이전에 실행 중인 프로세스(또는 스레드)이거나 다른 프로세스일 수 있습니다. 커널의 다양한 다른 시스템은 실행 큐에서 작업을 추가 및 제거하거나 작업을 한 CPU의 실행 큐에서 다른 CPU의 실행 큐로 이동합니다.

커널은 프로세스가 차단될 때마다(세마포어, 뮤텍스 등을 통해), 일정 변경이 요청되고 시스템이 사용자 공간에서 커널로 또는 그 반대로 전환될 때마다 다양한 상황에서 프로세스의 일정을 조정합니다. 타이머 틱은 스케줄러를 직접 호출하지 않고 일정 변경을 요청합니다.

관련 정보