問題タブ [preemption]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
119 参照

linux-kernel - Linux - プリエンプションの理由

タスクを切り替えるときにカーネルを更新して、さらに多くのことを行いたいと考えています。そのためには、各切り替えの理由を見つける必要があります。

まず、現在のタスクよりも優先度の高いタスクがあり、それらを切り替える必要がある場合に schedule() が呼び出される関数が見つかりません。どこで発生しますか?

第二に、タスクが終了したり、何かを待機したりするのではなく、CPU を解放する理由はありますか? 利回り関数か何かがありますか?

ありがとう!

0 投票する
1 に答える
314 参照

matlab - Matlab タイマーのコールバック

以下のプログラムには、timer開始コマンドが続くオブジェクト定義が含まれています。その後、プログラムは他のステートメントの実行を続けます。

私の質問は、TimerFcn正確に0.01秒後に呼び出されるのか、それともタイマー コールバック関数が起動するまで for ループが完了するまで待機するのかということです。

0 投票する
1 に答える
260 参照

multithreading - 非プリエンプティブ スレッドに関するクエリ

非プリエンプティブ スレッドについて読んでいて、プリンストン大学のスライドを見つけました。次の図が示されています。 pdf )

ここに画像の説明を入力

私が理解したことから、実行されるスレッドは最初に準備完了キューに入れられます。キューからポップすると、実行中の状態になります。別のスレッドを呼び出したい場合は、yield 関数を呼び出します。これにより、スレッドの現在の状態が保存され、キューの末尾に挿入されます。そして、キューの先頭にあるスレッドが実行されます。

スレッドがブロックされた場合 (つまり、何らかのリソースを待機している場合) はどうなりますか? 非プリエンプティブ スレッドでは、リソースを待機してから実行を続行すると考えました。

しかし、下の図からは、ブロックされた状態になり、準備完了キューに入れられているように見えますか? 何故ですか?

0 投票する
1 に答える
765 参照

kernel - マルチプロセッサで spin_lock_irqsave がプリエンプションを無効にする必要がある理由

spin_lock_irqsaveローカル割り込みを無効にした後、プリエンプションを無効にする必要があるのはなぜですか。

プリエンプションは、割り込みが有効になっている場合にのみ可能であるべきです。したがって、割り込みを無効にした後のプリエンプションについて心配する必要はありません。

0 投票する
2 に答える
493 参照

linux - プリエンプティブルな Linux カーネルで、スケジューラまたは一部の重要なカーネル スレッドをプリエンプトできますか?

プリエンプティブルな Linux カーネルで、スケジューラまたは一部の重要なカーネル スレッドをプリエンプトできますか? 割り込みハンドラ (上半分または下半分) ではどうですか?

0 投票する
0 に答える
184 参照

algorithm - 定期的なタスクの非プリエンプティブ スケジューリング

同じ優先度を持つプリエンプティブではない定期的なタスクのスケジューリング可能性を決定しようとします。私は次の質問を見つけました:非プリエンプティブ 最早締め切り 最初のスケジューリング、ただし、タスクは定期的ではありませんでした。問題は、定期的なタスクがより高いスケジューリング可能性の境界を取得できるかどうかです。

0 投票する
2 に答える
797 参照

c - RCU リーダー セクションはプリエンプションからどのように保護されますか?

( LWNの記事より)

RCU 更新操作は、各 CPU がコンテキストを切り替えたことをアサートするために synchronize_rcu() を実行するため、各 RCU リーダーはそのジョブを完了しました。しかし、RCU はリーダーが横取りされないことに依存しなければなりません。実際、LWN は次のように述べています。

この単純なアプローチは、RCU 読み取り側クリティカル セクション全体でプリエンプションが無効になっているカーネル、つまり、CONFIG_PREEMPT および CONFIG_PREEMPT 以外のカーネルでは機能しますが、CONFIG_PREEMPT_RT リアルタイム (-rt) カーネルでは機能しません。

非 CONFIG_PREEMPT カーネルではプリエンプションが無効になっていることは理解していますが、なぜCONFIG_PREEMPTカーネルでも問題ないのでしょうか?