問題タブ [context-switch]

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 投票する
3 に答える
1276 参照

asp-classic - クラシックasp-多くのresponse.writeを実行するか、<%を使用する方が良い

次のような多くのコードを使用するクラシックASPでいくつかのレガシーコードを編集しています。

この例では、pfは、基本的にresponse.write改行の場合と同じ効用関数です。

私はむしろこのようなことをしたいです:

私はaspを初めて使用しますが、コンテキストスイッチングについて聞いたことがあり、コストがかかる可能性があります。これらの2つのオプションのどちらがよりコストがかかりますか?

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

c - スタックを効率的に切り替える

何らかの理由で、アプリケーションの一部の関数を呼び出すためにスタックを切り替えます。その目的のためにmakecontext/getcontext/swapcontextを使用します。しかし、遅すぎると思います。その目的のためにカスタムメイドのコードを使用しようとしました。これは、スタックポインターと他のレジスターを保存してから、スタックとして使用する新しいメモリの値をスタックポインターに割り当てます。ただし、スタックスマッシングで検出されたエラーが発生し続けます。

OSによってスタックに設定された特別な権限がありますか、それともここで問題はありますか?問題を回避する方法。

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

.net - タスクスレッドのコンテキストスイッチ

私は周りを読んでいて、.Netでスレッドの代わりにタスクを使用すると、スレッドに問題があるコンテキストスイッチの影響を受けないことを読みました。

しかし、周りを読んで、タスクがとにかくカバーの下でスレッドを使用していることにも気づきました。

だから私は少し混乱しています、どんな説明でもありがたいです。

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

process - 次のうち、コンテキストの切り替えに関係するのはどれですか?

次のうち、コンテキストの切り替えに関係するのはどれですか?

A. システムコール

B. 特権命令

C. A と B の両方

D. これらのいずれでもない

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

embedded - uC/OS (組み込みシステム) でのコンテキスト切り替え

割り込みにより、スケジューラがコンテキストを RTOS の特定のタスクに切り替えることができるかどうかを知りたいです。私はmicroCOS OSで作業しています

これは、キースキャンを実行して文字をメールボックスに投稿するタスクです。デバウンスや自動リピートなどの機能をこのコードに追加する必要がありますが、適切に機能させるにはトリガー メカニズムを整理する必要があります。

これを達成するためにポーリングまたは割り込みを使用する方法がわかりません

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

linux - 以下のモデルでコンテキスト切り替えからスラッシングへの縮退?

次のことを行うコンポーネントがあります

  1. ソース A からの tcp/ip を介して構築されたカスタム プロトコルを使用して、ネットワーク経由で単一のメッセージを受け入れる
  2. メッセージを処理します (約 500 マイクロ秒かかります)
  3. tcp/ip で構築されたカスタム プロトコルを使用して、ネットワーク経由で別のコンポーネント (エンドポイント B など) にメッセージを送信します。
  4. エンドポイント B から ACK を受信
  5. ソース A に ACK を送信

すすぎ、上記の 5 つの手順を繰り返します。ソース A は、前のメッセージに対する ACK を受信するまで、2 番目のメッセージを送信しないことを理解することが重要です。

ご覧のとおり、次の場合、プロセスはアイドル状態です

  1. ソース A がネットワーク経由で 1 つのメッセージをコンポーネントに送信する時間。ソース A とコンポーネントの両方が同じ VLAN、イーサネット内にあります。

  2. コンポーネントが処理されたメッセージをエンドポイント B に送信する時間。エンドポイント B も、イーサネット経由で接続された同じ VLAN 内にあります。

  3. コンポーネントがエンドポイント B から ACK を受信する時間。

  4. コンポーネントがソース A に ACK を送信する時間。

上記は、コンポーネントの責任の説明でした。展開の観点から、単一の 8 コア マシンでこれらのコンポーネントを 100 個生成することを計画しています。マシン上で実行されるものは他にありません。エンドポイント B とソース A は両方とも異なるマシン上にあり、すべてが同じイーサネット内にあります。私の質問は、ネットワーク IO の待機にほとんどの時間を費やす多数のコンポーネントを生成する上記のモデルは、コンテキストのスラッシングを引き起こすのでしょうか? はいの場合、なぜですか?

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

c++ - マルチスレッドでのデータへの参照 (何人 / 誰) を追跡する

マルチスレッドで問題が発生しました。マルチスレッドのモデルは 1 プロデューサー - N コンシューマーです。

Producer はデータ (それぞれ約 200 バイトの文字データ) を生成し、それを固定サイズのキャッシュ (つまり 2Mil) に入れます。データはすべてのスレッドに関連しているわけではありません。フィルター (構成済み) を適用し、生成されたデータに適格なスレッドがないかどうかを判別します。

プロデューサーは、データへのポインターを適格なスレッドのキューにプッシュします (データのコピーを避けるため、データへのポインターのみ)。スレッドはそれをデキューし、TCP/IP 経由でクライアントに送信します。

問題: データへのポインタのみが複数のスレッドに渡されるため、キャッシュがいっぱいになると、プロデュースは最初のアイテム (古いアイテム) を削除したいと考えています。スレッドがまだデータを参照している可能性があります。

実現可能な方法 : アトミック粒度を使用します. プロデューサーが適格なスレッドの数を決定すると, カウンターとスレッド ID のリストを更新できます.

マスターチャッシュ

プロデューサーがカウンターをチェックする要素を削除すると、0 より大きい場合、m_in_use_threads セット内のスレッドへの参照を解放するアクションを送信します。

質問

  1. マスター キャッシュに 2Mil のレコードがある場合、同じ数の InUseCounter が存在するため、Mutex 変数は、1 つのプロセスで 2Mil のミューテックス変数を持つことをお勧めします。
  2. InUseCounter を維持するために大きな単一のデータ構造を持つと、検索とデクリメントにより多くのロック時間が発生します
  3. 参照を見つけるための私のアプローチに代わる最良の方法は何でしょうか。また、ロック時間が非常に短い参照をすべての人が持っています。

アドバイスありがとうございます。

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

operating-system - コンテキスト切り替え時間を短縮するにはどうすればよいですか

コンテキスト切り替え時間は純粋なオーバーヘッドであり、役に立たないことを知っているだけです。しかし、コンテキスト切り替え時間を短縮する方法を知りたいです。より多くのレジスタを使用すると、そうするのに役立ちますか?

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

process - コンテキスト切り替えなしのシステムコール?

これに出くわしたとき、私は自分のOSブックでLinuxがどのように機能するかを読んでいました。

[...]カーネルは単一のモノリシックバイナリとして作成されます。主な理由は、パフォーマンスを向上させることです。すべてのカーネルコードとデータ構造は単一のアドレス空間に保持されるため、プロセスがオペレーティングシステム関数を呼び出すとき、またはハードウェア割り込みが配信されるときに、コンテキストスイッチは必要ありません。

それは私には非常に驚くべきことのように聞こえました。確かに、割り込みを処理するためにカーネルモードで実行する前に、プロセスのコンテキストを保存する必要があります。プロセスのスケジューリングコンテキストを説明しながら、数ページで次のように述べています。

プロセスの実行中に発生するシステムコールと割り込みの両方で、このスタックが使用されます。

「このスタック」は、カーネルがプロセスのレジスタなどを格納する場所です。

これは最初の引用と直接矛盾していませんか?どういうわけかそれを誤解していますか?

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

windows - Windows-コンテキストスイッチが発生するとスレッドIDが変更されます

(何らかの理由で)コンテキストスイッチが発生すると、スレッドIDは変更されますか?