
第十一章
時間
在現代的作業系統中,時間可用於各種目的,許多程式都需要記錄時間。核心會以三種
方式量測流逝的時間:
壁鐘時間
(
或真實時間
)
這是真實世界中的實際時間和日期—也就是,人們可以在壁鐘上看到的時間。行程
會在與用戶互動或是替事件記錄時間戳記之際,使用壁鐘時間(wall time)。
行程時間
就是一個行程在處理器上執行所花的時間。它可以是行程自己執行所花的時間(用
戶時間),或是核心替行程工作所花的時間(系統時間)。之所以要在乎行程時間,
主要是為了剖析(profiling)、稽核(auditing)與統計(statistical)之目的;例如,
量測特定演算法需要花多少處理器時間才能完成。壁鐘時間會讓人誤解行程時間;
因為,由於 Linux 多任務的本質,壁鐘時間一般會高於行程時間。相反的,考慮多
處理器及多執行緒行程的情況,單就一項操作來說,行程時間實際上會超過壁鐘時
間!
單調時間
此時間來源會線性嚴格遞增(strictly linearly increasing)。多數作業系統,包括
Linux,會使用 system uptime(從開機起算,系統已經運作了多久的時間)。壁鐘時
間有可能會變動—例如,因為用戶會設定它,而且因為時鐘會偏移,所以系統會持
續調整時間—此外,例如,閏秒(leap seconds)也會讓壁鐘時間變得不精確。另一
方面,system uptime 是時間的一個具確定性與不變性的表示法。一個單調時間來源
(monotonic time source)的重要面向不在於當前值,而是可以保證時間來源是線性 ...