Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
複数のスレッドを持つプロセスがあります。スレッドの1つがのようなシステムコールを呼び出す場合gettimeofday()、カーネルはそのスレッドをコンテキスト外に切り替えてシステムコールを処理するだけですか、それともプロセス全体(および他のすべてのスレッド)をコンテキスト外に切り替えますか?
gettimeofday()
ほとんどのシステム コールには、コンテキストの切り替え (他のタスクが実行可能な場合) が含まれ、プロセッサの状態がカーネル モードに切り替えられます。
しかしgettimeofday(そして例えばgetpid())は珍しいです。最近のカーネルでは、VDSOを使用してそれを回避しています (さらに、カーネル モードに切り替えるsyscallor命令を回避するためにも)。sysenter
gettimeofday
getpid()
syscall
sysenter
Linux カーネルにとって、スレッドはプロセスです。そのため、カーネルは、プロセスの他のスレッドの 1 つが syscall を行った場合、そのスレッドには関心がありません。