커널 스케줄러는 타임 슬라이스가 경과했음을 어떻게 알 수 있나요?

커널 스케줄러는 타임 슬라이스가 경과했음을 어떻게 알 수 있나요?

내 이전 질문에서커널 스케줄러는 프로세스를 선점하는 방법을 어떻게 알 수 있나요?선점 방법에 대한 답변을 얻었습니다.

이제 커널 스케줄러가 시간 분할이 경과했음을 어떻게 알 수 있는지 궁금합니다. 나에게 적합한 하드웨어 타이머 솔루션에 대해 읽었지만 이후 대부분의 최신 운영 체제(예: Windows, Linux 등)가 이 작업을 수행한다는 사실을 알게 되었습니다.아니요소프트웨어 타이머가 아닌 하드웨어 타이머를 사용하십시오.

프로세스가 타임 슬라이스를 차지한 후(예: 자체적으로 선점되지 않은 경우) 소프트웨어 타이머를 사용하여 프로세스를 선점하려면 어떻게 해야 합니까? 하드웨어 타이머가 필요한 것 같나요?

답변1

하드웨어 타이머가 필요한 것 같나요?

예, 커널은 하드웨어를 사용하여 주기적으로 인터럽트를 생성합니다. PC에서는 역사적으로8253/8254 프로그래밍 가능 간격 타이머, 또는 그 시뮬레이션로컬 APIC 타이머,그래서고온 PET.

현재 Linux 커널은 가능한 경우 "틱 없이" 실행되도록 구축될 수 있습니다. 커널은 필요할 때만 실행되도록 타이머를 프로그래밍합니다. 이는 특정 CPU가 단일 프로세스를 실행하는 경우 "절대" 발생하지 않을 가능성이 높습니다. 대부분의 경우 동적 틱이 사용되므로 커널은 요구 사항에 따라 다른 간격으로 실행되도록 타이머를 설정합니다. 인터럽트가 적다는 것은 웨이크업이 적다는 것을 의미하며, 이는 유휴 CPU가 더 오랫동안 저전력 모드로 유지될 수 있음을 의미합니다. 에너지.

관련 정보