私がするとき$(time sleep 1)
、私は得ました:
real 0m1.001s
user 0m0.000s
sys 0m0.000s
sys
時間が 0 だった理由がわからないのでnanosleep
、ユーザー空間から呼び出されますか?
また、リアルタイムはコンテキスト切り替え時間 + 実際のスリープ時間 (1 秒) と同じですか?
私がするとき$(time sleep 1)
、私は得ました:
real 0m1.001s
user 0m0.000s
sys 0m0.000s
sys
時間が 0 だった理由がわからないのでnanosleep
、ユーザー空間から呼び出されますか?
また、リアルタイムはコンテキスト切り替え時間 + 実際のスリープ時間 (1 秒) と同じですか?
時間のマニュアルページを見ると、次のことがわかります。
real:プログラムの終了にかかった時間の長さ。次のように計算されます。
(time at end of program - time at star of program)
user:times(2)によって返される構造体tmsのtms_utime値とtms_cutime値の合計
sys:times(2)によって返される構造体tmsのtms_stime値とtms_cstime値の合計
つまり、効果的に得られた結果は、プログラムが1秒間続き、その1秒間にユーザー時間として0秒、システム時間として0秒を使用したことを意味します。これはまさに私たちがプログラムに期待すべきことです。
プログラムがスリープしているときは、カーネルがプログラムの処理をスケジュールせず、no-opsも実行せず、実行されないため、システム時間が消費されないことを意味します。