Solaris 10 でプロセスのトラスを取得しているときに、次のステートメントを見つけました。
<pid>/2: 70.7602 context(1, 0xFC47ABF8)
このシステム コールcontext
の意味を説明してください。また、このコールの後、スレッド 2 が別のスレッド 4 のように動作するのを見ました。
Solaris 10 でプロセスのトラスを取得しているときに、次のステートメントを見つけました。
<pid>/2: 70.7602 context(1, 0xFC47ABF8)
このシステム コールcontext
の意味を説明してください。また、このコールの後、スレッド 2 が別のスレッド 4 のように動作するのを見ました。
<ucontext.h>
int getcontext(ucontext_t *ucp);
int setcontext(const ucontext_t *ucp);`
これら 2 つの呼び出しは、Solaris でコンテキストを保存および復元します。McDougal And Mauro の「Solaris Internals」には context() についての明示的な言及がないため、はっきりとはわかりません。これらのapicontext()
エントリ ポイントに対応する実際のカーネル コールだと思います。context(1, <addr> )
に相当するのかもしれgetcontext()
ませんが、わかりません。
コンテキスト切り替えは、OS が特定のプロセスが特定のクォンタム (タイム スライス) のシステム リソースを使用できるようにする方法です。スケジューリングの一部。