問題タブ [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 投票する
5 に答える
104425 参照

linux - 中断できないプロセスとは何ですか?

Linux でプログラムを作成し、何らかのバグが原因でプログラムがクラッシュすると、そのプログラムは中断できないプロセスになり、コンピューターを再起動するまで (ログアウトしても) 永遠に実行し続けることがあります。私の質問は次のとおりです。

  • プロセスが中断できなくなる原因は何ですか?
  • どうすればそれが起こらないようにできますか?
  • これはおそらくばかげた質問ですが、コンピューターを再起動せずに中断する方法はありますか?
0 投票する
5 に答える
44942 参照

linux - プリエンプションとは / プリエンプティブル カーネルとは? それは何のために良いですか?

プリエンプションとは何か、また (Linux) カーネルにとって何を意味するのか、ご自身の言葉で説明してください。

プリエンプティブル カーネルを持つことの利点と欠点は何ですか?

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

linux - 非プリエンプティブ カーネルの制御パスでのコンテキスト スイッチ (Linux)

Linux カーネルはプリエンプティブではありませんが、さまざまな制御パスにコンテキスト スイッチが存在する可能性があることを読みました。それは、Linux カーネルの非プリエンプティブな性質と矛盾しませんか?

0 投票する
4 に答える
8863 参照

vxworks - VxWorksスケジューラはどのように実行されますか?

タスクを切り替えることができるようにスケジューラーがどのように呼び出されるか知りたい。プリエンプティブスケジューリングやラウンドロビンスケジューリングの場合と同様に、スケジューラーはあらゆる種類のタスク切り替えを行うために状況を把握する必要があります。優先度の低いタスクに無限ループがあると仮定すると、スケジューラーが介入して優先度の高いタスクに切り替えるのはいつですか?

クエリは次のとおりです。1。誰がスケジューラを呼び出しますか?[VxWorksの場合]2。定期的に呼び出される場合、そのメカニズムはどのように実装されますか?

前もって感謝します。

-アシュウィン

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

c - セキュアエリアのある機能に時間制限を設定する方法

関数の実行を時間制限するプログラムを開発しようとしています。以下のコードにIncは、多くの反復を行う (無限ループによってシミュレートされた) という名前の関数があります。各反復の最初の部分は非常に長く、その後に非常に高速な 2 番目の部分が続きます。

コードの最初の部分で実行を横取りしてもかまいませんが、2 番目の部分で書き込み操作を行っているときにアラームが鳴るのを避けたいと思います。

私の最初のアイデアは、「安全な地域」に入る前にアラームをオフにして、残り時間を節約することでした。退出後、保存した時間でアラームを設定します。これを実装する方法がわかりません。誰かが私を助けることができますか?別の方法も歓迎します。

0 投票する
3 に答える
1734 参照

c - How to limit the execution time of a function in C/POSIX?

Similar to this question, I'd like to limit the execution time of a function--preferably with microsecond accuracy--in C. I imagine that C++ exceptions could be used to achieve a result similar to this Python solution. Though it's not ideal, such an approach is wholly unavailable in plain C.

I wonder, then, how might I interrupt the execution of a function after a certain time interval in C on a Posix system? For relatively simple situations a bit of silly business works just fine, but that adds a fair amount of code orthogonal to the problem solution. Let's say I have a function like so:

#xA;

I want to run run boil on an egg*, interrupting it every 50μs to check do something like so:

#xA;

I realize that pthreads could be used to do this, but I'm rather more interested in avoiding their use. I could switch between ucontext_t's in a SIGALRM handler, but the POSIX standard notes that the use of setcontext/swapcontext is not to be used in a signal handler and, indeed, I note differing behaviors between Linux and Solaris systems when doing so.

Is this effect possible to achieve? If so, in a portable manner?

0 投票する
9 に答える
22733 参照

linux - 「Linux カーネルはプリエンプティブ」とはどういう意味ですか?

Linux カーネルはプリエンプティブであり、ほとんどの Unix カーネルとは異なります。では、カーネルがプリエンプティブであるとは、実際にはどういう意味なのでしょうか?

いくつかの類推や例は、純粋な理論的説明よりも優れています。

1 を追加 -- 2018 年 12 月 7 日午前 11:00

プリエンプティブは、マルチタスクの 1 つのパラダイムにすぎません。Cooperative Multi-tasking のようなものもあります。それらを比較することで、より理解を深めることができます。

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

linux - Linuxカーネルはプリエンプティブかどうか?

Linux カーネルはプリエンプティブかどうか?

Linux カーネルを理解する第 2 版と第 3 版には大きな違いがあります。2 番目には Linux カーネルはプリエンプティブではないと書かれていますが、同じ段落の 3 番目には何も書かれていません。

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

locking - spin_lock および mutex_lock 中の Linux カーネル プリエンプション

カーネル スペース内のプロセスが を保持しているspin_lock場合、次のいずれかの条件が原因で、プロセスを横取りできません。

  1. プロセスのタイム スライスが使い果たされたとき
  2. 優先度の高いプロセスが実行可能になったとき
  3. 割り込み発生時

ただし、プロセスがブロック、スリープ、または明示的に を呼び出す場合、プロセスはプロセッサを譲ることができますschedule()。私の理解は正しいですか?

カーネル空間のプロセスが を保持している場合mutex_lock、上記の 1、2、および 3 の条件により、プロセスが横取りされる可能性があります。

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

c - C コード - メモリ アクセス / プリエンプション

私はコードを書きましたが、データは次のとおりです。

連続する 3 バイトごとに i/p データを合計し、ans を格納しています。例: 温度[4096]; temp[0] = buf[0] + buf[1] + buf[2]; ... 4096年まで

次に、次のコードを使用して、temp の結果からヒストグラムが生成されます。

ヒストグラムはソート (バブルソート) され、最も頻繁に発生する上位 8 つの値が取得されます。コードは Linux カーネル (2.6.35) で実行されます。

私が直面している問題は、ソート部分を削除すると、コードの実行にかかる時間が非常に速くなることです (ラップトップで 6 マイクロ秒、gettimeofday 関数を使用して測定)。しかし、並べ替えを導入すると、プロセスが大幅に遅くなります (44 マイクロ秒)。ソート機能自体には 20 マイクロ秒かかりますが、なぜそんなに時間がかかるのか理解できません。cachegrind を使用してメモリ分析を行いましたが、結果は正常であり、プリエンプションを無効にしようとしましたが、それでも違いはありません。誰かがここで私を助けることができれば. ありがとう!