天天看點

《UNIX環境進階程式設計(第3版)》——1.10 時間值

本節書摘來自異步社群《unix環境進階程式設計(第3版)》一書中的第1章,第1.10節,作者:【美】w. richard stevens , stephen a.rago著,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

曆史上,unix系統使用過兩種不同的時間值。

(1)月曆時間。該值是自協調世界時(coordinated universal time,utc)1970年1月1日00:00:00這個特定時間以來所經過的秒數累計值(早期的手冊稱utc為格林尼治标準時間)。這些時間值可用于記錄檔案最近一次的修改時間等。

系統基本資料類型time_t用于儲存這種時間值。

(2)程序時間。也被稱為cpu時間,用以度量程序使用的中央處理器資源。程序時間以時鐘滴答計算。每秒鐘曾經取為50、60或100個時鐘滴答。

系統基本資料類型clock_t儲存這種時間值。2.5.4節将說明如何用sysconf函數得到每秒的時鐘滴答數。

當度量一個程序的執行時間時(見3.9節),unix系統為一個程序維護了3個程序時間值:

時鐘時間;

使用者cpu時間;

系統cpu時間。

時鐘時間又稱為牆上時鐘時間(wall clock time),它是程序運作的時間總量,其值與系統中同時運作的程序數有關。每當在本書中提到時鐘時間時,都是在系統中沒有其他活動時進行度量的。

使用者cpu時間是執行使用者指令所用的時間量。系統cpu時間是為該程序執行核心程式所經曆的時間。例如,每當一個程序執行一個系統服務時,如read或write,在核心内執行該服務所花費的時間就計入該程序的系統cpu時間。使用者cpu時間和系統cpu時間之和常被稱為cpu時間。

要取得任一程序的時鐘時間、使用者時間和系統時間是很容易的——隻要執行指令time(1),其參數是要度量其執行時間的指令,例如:

time指令的輸出格式與所使用的shell有關,其原因是某些shell并不運作/usr/bin/time,而是使用一個内置函數測量指令運作所使用的時間。

繼續閱讀