1

リアルタイム カーネルに関する記事を読んでいます。著者は、リンクされたリストを使用してタスクのスケジューラを実装する方法を説明しています。彼はまた、タスクは優先度に基づいて挿入および削除されるため、これは最善の方法ではないと述べています。ただし、彼はそれらの他の方法が何であるかを説明していません。

リンクされたリスト以外のスケジューラを実装する他の方法は何ですか?

4

2 に答える 2

1

キューデータ構造をよく見てください。優先度レベルごとにキューがある場合は、最も優先度の高いキューから開始し、キューが空になるまで処理してから、すべての優先度に達するまで次の優先度クエリに進みます。

キューに同じ優先度レベルのタスクがあると、各タスクが(場合によっては別の)キューの末尾にスローされる前に、少なくとも1つの処理量を取得することを保証できます。

もちろん、リアルタイム処理では、割り込みへの迅速な応答が必要です。おそらく、ある種の優先度キューが適用できる可能性があります。

于 2012-09-24T01:46:22.223 に答える
1

たとえば、二重にリンクされたリストである可能性があるため、優先度の低いタスクを挿入するために、末尾から逆方向に検索することができます。

配列から B ツリーまで、タスクのリストのようにスケジュールを実装できます。どのタスクを使用するかは、スケジュールの内容によって異なります。

リンクされたリストがかなり短い場合は、最適なソリューションかもしれません。

于 2012-09-24T00:23:03.823 に答える