2008-09-08 5 views
4

실시간 작업을위한 최상의 스케줄링 전략에 대해 일부 동료들과 흥미로운 토론을 가졌지 만 모든 사람이 일반적인 또는 유용한 스케줄링 전략을 잘 이해하지 못했습니다.작업 스케줄러

답변을 얻으려면 몇 가지 전략에 대한 정보를 제공하는 대신 하나의 전략을 선택하고 세부적으로 살펴보십시오. 당신이 누군가 다른 사람의 설명을 추가 할 수있는 뭔가를하고 짧은 있다면, 댓글이 아닌 새로운 해답을 추가

  • 는 무엇인가 (이 길거나 유용, 또는 단순히 더 나은 설명의 경우, 다음 대답을 이용하시기 바랍니다) (태스크 대기열, 세마포어, 잠금 및 스케줄러 자체의 외부 OS 기본 사항을 알고 있다고 가정)
  • (태스크 대기 시간, 효율성, 실시간, 지터, 자원에 대해 최적화 된 전략은 무엇입니까? 공유 등)
  • 실시간 또는 실시간으로 만들 수 있습니까?

현재 전략 : Real-Time Task Scheduling for Energy-Aware Embedded Systems라는 제목의 논문에서 설명한 바와 같이

-Adam

답변

8

, Swaminathan의와 차크라 바티는 낮은에서 실시간 작업 스케줄링의 문제를 설명 다양한 프로세서 속도와 전력 소비 프로파일을 갖춘 전력 (임베디드) 디바이스. 그들이 스케쥴하는 스케줄링 알고리즘은 (테스트에서 최적의 솔루션보다 약 1 % 정도 더 나쁜 것으로 나타났습니다) LEDF 휴리스틱 스 (Heruristic)라고 불리는 태스크를 스케줄링하는 흥미로운 방법을 가지고 있습니다. 용지에서

:

저에너지 초기 데드 인터넷 RST 경험적 또는 단순히 LEDF은 공지 초기 기한 인터넷 RST (EDF) 알고리즘의 확장이다. LEDF의 작업은 다음과 같습니다. LEDF 은 "준비 목록"이라고하는 개의 모든 작업 목록을 유지 관리합니다. 작업이 해제되면 마감 시간과 가장 가까운 작업이 실행되어 이 실행되도록 선택됩니다. 작업 마감 시간이 인 경우 낮은 전압 (속도)으로 실행을 완료 할 수 있는지 확인하려면 을 확인합니다. 마감 시간을 만날 수 있으면 LEDF는 작업에 더 낮은 전압을 할당하고 작업이 실행을 시작합니다. 작업이 실행되는 동안 다른 작업이 시스템에 입력 될 수 있습니다. 이 작업은 "준비 목록"에 자동으로 으로 배치됩니다. LEDF는 실행될 최종 기한이있는 작업을 다시 선택합니다. 이되기를 기다리는 작업이 있기 때문에 일 때 LEDF는 작업자를 유휴 상태로 유지하지 않습니다. 이 작업은 으로 모든 작업이 예약 될 때까지 반복됩니다.

그리고 의사 코드는 :

Repeat forever { 
    if tasks are waiting to be scheduled { 
     Sort deadlines in ascending order 
     Schedule task with earliest deadline 
     Check if deadline can be met at lower speed (voltage) 
     If deadline can be met, 
      schedule task to execute at lower voltage (speed) 
     If deadline cannot be met, 
      check if deadline can be met at higher speed (voltage) 
     If deadline can be met, 
      schedule task to execute at higher voltage (speed) 
     If deadline cannot be met, 
      task cannot be scheduled: run the exception handler! 
    } 
} 

는 실시간 예약이 작고, 저전력 장치가 더 보편화 등의 흥미로운 진화 문제 것으로 보인다. 저는 이것이 우리가 많은 연구를 보게 될 것이며 앞으로도 계속 지켜봐야 할 영역이라고 생각합니다!

2

일반적인 실시간 스케줄링 체계 중 하나는 우선 순위 기반의 선점 형 멀티 태스킹을 사용하는 것입니다.
각 작업에는 다른 우선 순위 수준이 지정됩니다.
대기열에서 가장 우선 순위가 높은 작업은 실행되는 작업입니다. CPU를 포기할 때까지 (즉, 지연, 세마포어를 기다리는 등 ...) 또는 우선 순위가 높은 작업이 실행 준비가 될 때까지 실행됩니다.

이 구성표의 장점은 시스템 디자이너가 어떤 작업을 어떤 우선 순위로 실행할 것인지 완전히 제어 할 수 있다는 것입니다. 스케줄링 알고리즘도 간단하며 결정적이어야합니다.

반면에 우선 순위가 낮은 작업은 CPU가 부족할 수 있습니다. 이것은 디자인 문제를 나타냅니다.