核心檔案include/asm-generic/param.h定義了兩者的值:
# undef hz
# define hz config_hz /* internal kernel timer frequency */
# define user_hz 100 /* some user inte***ces are */
# define clocks_per_sec (user_hz) /* in "ticks" like times() */
其中config_hz為通過make menuconfig配置的hz值,一般為1000,即每秒鐘jiffies增加1000個計數。實際值可參見**中include/generated/autoconf.h檔案。user_hz固定為100,使用者層呼叫times系統呼叫,返回的是按照user_hz計算的jiffies值。
u64 jiffies_64_to_clock_t(u64 x)
syscall_define1(times, struct tms __user *, tbuf)
兩者定義的差別導致使用者層與核心互動時,需要進行轉換。除了以上的64位轉換函式jiffies_64_to_clock_t。核心還提供了另外兩個互換函式:
kernel/time.c
clock_t jiffies_to_clock_t(unsigned long x)
unsigned long clock_t_to_jiffies(unsigned long x)
static int old_dev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
case brctl_set_bridge_max_age:
}
網路中鄰居表的locktime引數,預設設定的是乙個hz,通過proc檔案可讀取:
cat /proc/sys/net/ipv4/neigh/ens160/locktime
100
linux-3.10.0
使用者態與核心態(使用者空間與核心)
unix和linux的體系架構.png 三者之間的關係如下 核心態 cpu可以訪問記憶體的所有資料,包括外圍裝置,例如硬碟,網絡卡,cpu也可以將自己從乙個程式切換到另乙個程式。使用者態 只能受限的訪問記憶體,且不允許訪問外圍裝置,占用cpu的能力被剝奪,cpu資源可以被其他程式獲取。為什麼要有使用...
核心與使用者模式
1.windows使用兩種處理器特權級別 1.核心 2.使用者 2.幾乎所有的 都在使用者模式,除了作業系統和硬體驅動 3.使用者模式不能直接訪問硬體,它被限制只能訪問cpu上所有暫存器和可用指令的乙個子集,所以我們為了改變硬體或者修改核心中的狀態,必須依賴api 4.進入核心模式的方式 sysen...
核心態與使用者態
核心態與使用者態是作業系統的兩種執行級別,intel cpu提供ring0 ring3三種級別的執行模式。ring0級別最高,ring3最低。其中特權級0 ring0 是留給作業系統 裝置驅動程式 使用的,它們工作於系統核心態 而特權極3 ring3 則給普通的使用者程式使用,它們工作在使用者態。執...