歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 初探linux子系統集之timer子系統(一)

初探linux子系統集之timer子系統(一)

日期:2017/3/1 12:17:17   编辑:關於Linux

一般來說要讓整個linux系統跑起來,那麼一個必須的就是linux的時鐘,也就是時間子系統了,這裡正好工作需要,那麼就研究下linux下的時間子系統了。

linux內核必須完成兩種主要的定時測量。一個是計時,保存當前的時間和日期,以便能通過time(),gettimeofday()等系統調用,返回給用戶程序,另一個是定時,這種機制主要是告訴內核或者應用程序,某一時間間隔已經過去了,觸發回調函數,然後做一些事情。

對於硬件主要有實時時鐘RTC和CPU本地Timer,其中RTC是cpu外部的其他芯片,或者內部的模塊,不過都是需要外部單獨提供類似紐扣電池供電。Linux只用RTC來獲取時間和日期,關於RTC以後在rtc子系統裡面再詳細介紹。CPU本地Timer其實就是用的CPU內部的Timer模塊,一般是CPU的Timer模塊可以計數,當然這個是通過晶振再加上倍頻分頻等給主芯片的,然後主芯片內部根據跑的不同主頻來實現計數,這個計數只能遞增或者遞減,然後溢出後會有中斷,一般是可以設置這個溢出的值的。嵌入式系統要跑起來,都需要時鐘,具體的移植代碼主要在arch下,根據不同的體系做不通的移植。

linux具有Dynamic Ticks和High Resolution Timer, 詳細可以參考kernel/time/Kconfig下。

config TICK_ONESHOT
	bool

config NO_HZ
	bool "Tickless System (Dynamic Ticks)"
	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
	select TICK_ONESHOT
	help
	  This option enables a tickless system: timer interrupts will
	  only trigger on an as-needed basis both when the system is
	  busy and when the system is idle.

config HIGH_RES_TIMERS
	bool "High Resolution Timer Support"
	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
	select TICK_ONESHOT
	help
	  This option enables high resolution timer support. If your
	  hardware is not capable then this option only increases
	  the size of the kernel image.

其中CONFIG_NO_HZ用來控制Dynamic Ticks,CONFIG_HIGH_REST_TIMERS控制High Resolution Timer。

若是沒有選擇上述的高精度timer和動態tick的話,那麼就用linux系統的低精度timer了,簡單地介紹了下基礎知識,那麼接下去再來學習吧!

Copyright © Linux教程網 All Rights Reserved