Linux 計時概要

2021-04-12 23:09:56 字數 1074 閱讀 3499

1.使用者空間

使用者空間可以使用下面的函式,這些是新增加的通用介面,用來替代過時的不夠精確的gettimeofday()。

他們的精度取決於不同平台,應該都是硬體實現,struct timespec可表示的最小精度是納秒

#include

int clock_getres(clockid_t clk_id, struct timespec *res);

int clock_gettime(clockid_t clk_id, struct timespec *tp);

int clock_settime(clockid_t clk_id, const struct timespec *tp);

2.核心

核心裡面時間可檢視jiffies的值,但是它依靠時鐘中斷實現,時間精度取決於hz的定義。在linux2.4下它是1/100秒,在linux2.6下它是1/1000秒

3。自己動手

自己通過平台提供的硬體計時器做也十分容易。

比如在x86平台上

#define rdtsc(low, high) /

__a**__ __volatile__("rdtsc" : "=a" (low), "=d" (high))

#define rdtscll(val) /

__a**__ __volatile__("rdtsc" : "=a" (val))

通過兩次讀取值,得到的差就是間隔時間,這個時間單位是cpu的circle,因此需要轉換

通過下面的函式讀取/proc/cpuinfo的值即可計算1 circle的時間。顯然精度達到了circle是相當精確的,同時由於cpu越來越快,這個精度也跟著日新月異

static  __u64 get_cpu_freq(void)

while(getline(&line, &len, fd) != eof)

}fclose(fd);

out:

return freq;

}4。最精密的計時

這個靠普通的台式電腦已經是無法完成的了。只有通過邏輯分析儀才能達到納秒級的精度。在計時前後變更乙個硬體的輸出,同時使用邏輯分析儀捕獲改硬體輸出的變化,即可進行測量

linux系統指令概要

常用命令 clear 清屏 pwd print working directory的縮寫,可顯示當前所在工作目錄的全路徑 whoami 當前使用者的使用者名稱 file name 顯示詳細資訊檔案相關命令 touch 建立檔案 cp 複製檔案 mv 移動檔案,cp和mv在移動複製過程中可以修改檔名,...

linux系統指令概要

常用命令 clear 清屏 pwd print working directory的縮寫,可顯示當前所在工作目錄的全路徑 whoami 當前使用者的使用者名稱 file name 顯示詳細資訊檔案相關命令 touch 建立檔案 cp 複製檔案 mv 移動檔案,cp和mv在移動複製過程中可以修改檔名,...

Linux 記憶體管理概要

之前學習記憶體方面的都太關注於細節,就有些知其然而不知其所以然的感覺。所以這篇文章拋開細節實現,將linux記憶體管理的大概思路整理一下。linux作業系統支援多工系統,即 看上去 支援多工併發處理。實際上,系統同時執行的程序數不會超過cpu數目,因此核心會在很短的時間間隔在不同的程序之間切換 使用...