0

何日も答えを探していますが、どれも私の質問を解決しませんでした。b/w システム コールとユーザー コールの違いは何ですか。C で printf() 関数のユーザー CPU 時間とカーネル CPU 時間を計算したいです。ユーザー CPU 時間は、CPU がユーザー ルーチンを実行するのにかかった時間です。 cpu によってカーネル ルーチンを実行します。私の質問は、 printf() を呼び出す際のどこかです。最後に、表示時に文字を印刷するためにシステムコールが呼び出されます。つまり、ルーチン printf() で、どの部分がユーザーに属し、どの部分がカーネルに属しているかを言います。単純な代入文 a=b にはシステムコールが含まれますか?

4

1 に答える 1

1

Cの単純なa=bステートメントには、システム コールは含まれません。これは完全にユーザー空間で実行されます。

ではprintf()、ほとんどのコードがユーザー空間で実行されます (たとえば、指定された引数の書式設定)。最終的にフォーマットされたテキストを stdout に書き込む場合にのみ、writeシステム コールが呼び出されます。straceこれは、アプリケーションによって行われたすべてのシステム コールを表示するツールで確認できます。

于 2013-03-12T11:22:34.350 に答える