2012-09-23 2 views
1

나는 real-time kernels에 대한 기사를 읽었으며 저자는 연결된 목록이있는 작업에 대한 스케줄러 구현 방법을 설명합니다. 그는 또한 우선 순위에 따라 작업을 삽입하고 제거하기 때문에 이것이 최선의 방법이 아니라고 말합니다. 그러나 그는 다른 방법이 무엇인지 설명하지 않습니다.링크 된 목록을 사용하는 스케줄러의 대안은 무엇입니까?

연결된 목록 이외의 스케줄러를 구현하는 다른 방법은 무엇입니까?

+1

연결된 목록은 컬렉션의 구현입니다. 배열, 이중 링크 목록, 이진 트리, 해시 목록 등이 가능한 대안입니다. Linked List가 스케쥴러에게 좋지 않은 선택 인 이유는 일반적으로 우선 순위에 따라 정렬되는 요소를 찾으려면 목록을 탐색해야한다는 것입니다. 실시간 요구 사항에 위배됩니다. –

답변

1

대기열 데이터 구조를 잘 살펴보십시오. 각 우선 순위 수준의 대기열이있는 경우 우선 순위가 가장 높은 대기열에서 시작하여 대기열이 비워 질 때까지 처리 한 다음 우선 순위에 모두 도달 할 때까지 다음 우선 순위 쿼리로 이동합니다.

대기열에서 동일한 우선 순위로 작업을 수행하면 각 작업이 대기열 (아마도 다른 대기열)의 꼬리에 던지기 전에 각 작업에 적어도 하나의 처리 퀀텀이 있음을 알 수 있습니다.

물론 실시간 처리를 위해 인터럽트에 대한 빠른 응답을 원합니다. 아마도 일종의 Priority Queue가 적용될 수 있습니다.

1

예를 들어 이중 연결 목록 일 수 있으므로 우선 순위가 낮은 작업을 삽입 할 때 꼬리에서 뒤로 검색 할 수 있습니다.

배열에서 B-Tree로 작업 목록과 같이 일정을 구현할 수 있습니다. 사용하는 일정은 사용자가 계획하는 일정에 따라 다릅니다.

매우 짧은 링크 된 목록은 최적의 솔루션 일 수 있습니다.

관련 문제