Linuxカーネルのドライバーのコンテキストで実行しています-このドライバーは値をレジスターに書き込みます-操作には時間がかかります(〜5ミリ秒)。他のスレッドに CPU を渡すためにその間はスリープしたいのですが、ウェイクアップ後すぐに CPU を元に戻すことが非常に重要です (超えてはならない短いタイムアウトがあります)。同じ質問がミューテックスの取得にも当てはまります-ミューテックスでブロックしている(そして再スケジュールをトリガーしている)としましょう-そのミューテックスが解放されたときにすぐにCPUを元に戻すにはどうすればよいですか?
これを行う方法はありますか?それは何を含みますか?(プロセスに優先度を設定する? 特別なスケジューリング モード? カーネル構成を変更する?)
編集:ミューテックスに関する質問はもう少し複雑なので、言い換えます:重要なスレッドで使用されるミューテックスがあります(そのタイムアウト制限のために重要です)。このミューテックスを使用したいと思います。これをブロックして再スケジュールすると、ロックがすぐに解放され (これらのスレッドの優先度が高いため)、その後すぐに、ブロックされたスレッドができるようになります。実行します(他の無関係なプログラムではありません)。このようにして、タイムアウト違反の危険を冒さずに CPU 時間を節約できます。現在、再スケジュールを避けるためにビジー待機を使用しています (私のカーネルはプリエンプティブではありません) が、この解決策は好きではありません。
どんな助けでも大歓迎です!
ありがとう