リアルタイム カーネルに関する記事を読んでいます。著者は、リンクされたリストを使用してタスクのスケジューラを実装する方法を説明しています。彼はまた、タスクは優先度に基づいて挿入および削除されるため、これは最善の方法ではないと述べています。ただし、彼はそれらの他の方法が何であるかを説明していません。
リンクされたリスト以外のスケジューラを実装する他の方法は何ですか?
リアルタイム カーネルに関する記事を読んでいます。著者は、リンクされたリストを使用してタスクのスケジューラを実装する方法を説明しています。彼はまた、タスクは優先度に基づいて挿入および削除されるため、これは最善の方法ではないと述べています。ただし、彼はそれらの他の方法が何であるかを説明していません。
リンクされたリスト以外のスケジューラを実装する他の方法は何ですか?
キューデータ構造をよく見てください。優先度レベルごとにキューがある場合は、最も優先度の高いキューから開始し、キューが空になるまで処理してから、すべての優先度に達するまで次の優先度クエリに進みます。
キューに同じ優先度レベルのタスクがあると、各タスクが(場合によっては別の)キューの末尾にスローされる前に、少なくとも1つの処理量を取得することを保証できます。
もちろん、リアルタイム処理では、割り込みへの迅速な応答が必要です。おそらく、ある種の優先度キューが適用できる可能性があります。
たとえば、二重にリンクされたリストである可能性があるため、優先度の低いタスクを挿入するために、末尾から逆方向に検索することができます。
配列から B ツリーまで、タスクのリストのようにスケジュールを実装できます。どのタスクを使用するかは、スケジュールの内容によって異なります。
リンクされたリストがかなり短い場合は、最適なソリューションかもしれません。