2010-02-12 3 views
12

누가 스케줄러를 스케줄합니까?운영 체제의 스케줄러를 누가 계획합니까? 닭고기 및 계란 시나리오가 아닙니까?

생성 된 첫 번째 작업은 무엇이며이 첫 번째 작업은 어떻게 생성됩니까? 어떤 리소스 나 메모리가 필요하지 않습니까? 닭고기와 달걀 같은 시나리오가 아닌가요?

스케줄러가 작업이 아닙니까? 각 시간 조각 끝에 CPU가 주어져 어떤 작업에 CPU가 주어질 필요가 있는지 확인합니까?

마음이 통할 필요가있는 이론을 쏟아내는 것보다는이 개념을 모두 깊이 생각하고 이해하게하는 좋은 링크가 있습니까?

+0

실제로 일반적인 대답은 없습니다. 특정 OS 구현을 살펴볼 필요가 있습니다. 그러나 @ Ira의 대답은 아마 대부분의 OS에 적용됩니다. – Benoit

답변

14

이 스케줄러는 같은 (디스크 완료, 마우스 클릭, 타이머 틱) 인터럽트,

  • 또는 스레드의 완료와 같은 내부 이벤트 (로

    • (외부) 이벤트가 예정되어 , 무언가를 기다려야하는 쓰레드에 의한 시그널링, 리소스를 해제 한 쓰레드 시그널링 또는 0으로 나누는 것과 같은 불법적 인 일을하는 쓰레드에 의한 트랩)

    그 일을 요구할 수있는 모든 사건에 의해 촉발된다. 실행될 작업 집합 및/또는 재평가 할 작업의 우선 순위. 스케줄러는 다음에 실행할 태스크를 결정하고 제어를 다음 태스크로 전달합니다.

    일반적으로 스케줄러의 "스케줄링"은 하드웨어 인터럽트와 관련된 코드 또는 시스템 호출과 관련된 코드 때문에 발생합니다.

    스케줄러를 실제 스레드로 생각할 수도 있지만 실제로는 다른 태스크보다 높은 우선 순위로 실행되므로 실제로는 그렇게 구현할 필요가 없습니다. 정교한 운영체제는 실제로 인 특별한 스레드를 스케줄러에 할당 할 수 있으며, 스케줄러가 제어권을 얻으면 바쁜 것으로 표시 할 수 있습니다. 그게 꽤 예쁘지 만 가짜 스레드는 스케줄러에 의해 스케줄되지 않습니다.

    하나는 여러 개의 스케줄러를 가질 수 있습니다 : 우선 순위가 가장 높은 것 (예 : 방금 설명한 것)과 다른 스레드는 실제로 스레드입니다. 다른 사용자 작업처럼 실행하십시오. 이러한 우선 순위가 낮은 스케줄러는 백그라운드 작업과 같이 훨씬 긴 간격으로 발생하는 작업을 관리하는 데 사용됩니다.

  • +3

    동의 : 스케줄러는 태스크가 아니며 '스케줄링 지점'에서 호출되는 프로 시저입니다. – Clifford

    +0

    나는 하드웨어 타이머 인터럽트를 주 소스로 사용하여 스케줄러 기능을 트리거했다. schuduler 기능은 컨텍스트 swith 및 우선 순위 조정과 같은 모든 작업 스위치 세부 정보를 담당합니다. 하지만 이제는 작업 전환시기가 예측 가능하다는 것을 알게되었습니다. 아이라의 대답은 아주 좋습니다. – smwikipedia

    0

    일반적으로 시간 초과 CPU 인터럽트에 의해 주기적으로 호출됩니다.

    +0

    이것이 정말로 질문에 추가되는지 확실하지 않습니다 ... 이미 인터럽트를 언급하는 답변이 있으며 질문은 2010 년입니다. –

    관련 문제