優先度の高いスレッドであるSCHED_DEADLINE
スケジューリングポリシーを使用してスレッドを実装しています。優先度の低いスレッドであるSCHED_FIFO
ポリシーを使用してスレッドを実装しています。例として は、私は次のように私の期限スレッドを定義しました:通常の振る舞いでデッドラインスレッドプリエンプションの検出
attr.sched_runtime = 0.5 * 1000000; // --> 0.5 ms
attr.sched_deadline = 0.6 * 1000000; // --> 0.6 ms
attr.sched_period = 1 * 1000000; // --> 1 ms
、以上の0.5ミリ秒を処理してはならないと、この期間ながら、それは時間にしている必要があり、私の優先度の高いスレッドその仕事を終える。
タスクが0.5 msより長く続くと、OSスケジューラは優先度の高いスレッドを優先して優先度を低くします。これは私が以前にテストした動作です。
質問:私の優先度の高いスレッドは、システムによって先取りされたことをどのように警告できますか?
スレッドがプリエンプションされている場合は、再スケジュールを待つことになります。「警告することができますか」ということは、何か信号を受信することを意味しますか? – fluter
まず、それが可能かどうかを知りたい。どのような仕組みがいいですか、「シグナルか何か」。 –
スレッドのCPU時間がオフになっているときは、処理する信号ではなく、実行するCPU上にないため、意味をなさない。 – fluter