3

私がするとき$(time sleep 1)、私は得ました:

real    0m1.001s
user    0m0.000s
sys     0m0.000s

sys時間が 0 だった理由がわからないのでnanosleep、ユーザー空間から呼び出されますか?

また、リアルタイムはコンテキスト切り替え時間 + 実際のスリープ時間 (1 秒) と同じですか?

4

2 に答える 2

4

時間のマニュアルページを見ると、次のことがわかります。

  1. real:プログラムの終了にかかった時間の長さ。次のように計算されます。

    (time at end of program - time at star of program)

  2. user:times(2)によって返される構造体tmsのtms_utime値とtms_cutime値の合計

  3. sys:times(2)によって返される構造体tmsのtms_stime値とtms_cstime値の合計

つまり、効果的に得られた結果は、プログラムが1秒間続き、その1秒間にユーザー時間として0秒、システム時間として0秒を使用したことを意味します。これはまさに私たちがプログラムに期待すべきことです。

プログラムがスリープしているときは、カーネルがプログラムの処理をスケジュールせず、no-opsも実行せず、実行されないため、システム時間が消費されないことを意味します。

于 2012-08-05T09:46:54.937 に答える