
はPOSIX コンテキストスイッチよく定義されていますか? Cでスレッドを切り替えるのと同じですか? Cコンパイラはコンテキスト切り替えのためのすべてを生成できますか?それとも、スレッド切り替えまたは「コンテキスト」切り替えのためのルーチンにはまだアセンブリプログラミングが必要ですか? 「コンテキスト」の意味は定義されていますか?スレッドと同じではないですか?
答え1
使用されるPOSIX用語コンテキストスイッチそれを厳密に定義しようとせずに、少なくとも2つの異なる目的のために(またはさらに供給定義):
- 間を切り替える糸と
- 間を切り替えるプロセス
代わりに、POSIX は、ユーザーがその用語の意味を既に知っていると仮定します。例えば、
プロセスまたはスレッドの代わりにシステムサービスを実行するのにかかる時間を含む、プロセスまたはスレッドの実行に費やされた時間。スレッドオプションがサポートされている場合、プロセスのCPUタイムクロック値は実装によって定義されます。この定義によれば、シングルスレッドプロセスでも、プロセス内のすべてのスレッドのすべての実行時間の合計は、プロセス実行時間と等しくない可能性があります。これは、実行中に時間が計算される方法が実装によって異なる可能性があるためです。コンテキストスイッチまたは他の理由で。
追加資料: