linux 不同用户时间,Linux时间子系统之(一):时间的基本概念
Linux時(shí)間子系統(tǒng)之(一):時(shí)間的基本概念
作者:linuxer 發(fā)布于:2014-12-23 12:22
分類(lèi):時(shí)間子系統(tǒng)
本文使用Q & A的方式來(lái)和大家以前探討一下時(shí)間的基本概念
一、什么是時(shí)間?
這個(gè)問(wèn)題實(shí)在是太復(fù)雜了,我都不知道這是一個(gè)物理學(xué)、宇宙學(xué)、還是熱力學(xué)異或是哲學(xué)問(wèn)題,我只是想從幾個(gè)側(cè)面來(lái)了解一下時(shí)間這個(gè)概念。本節(jié)內(nèi)容都是我坐在公交車(chē)上瞎想的,對(duì)物理學(xué)有興趣的人可以指出我的錯(cuò)誤(一個(gè)搞linux kernel的人不會(huì)有太深刻的物理學(xué)知識(shí)的),對(duì)Linux時(shí)間子系統(tǒng)有興趣的人還是忽略這個(gè)小節(jié)吧。
1、時(shí)間和空間以及相對(duì)性
有沒(méi)有絕對(duì)時(shí)間的概念呢?時(shí)間是否是獨(dú)立于一切存在的呢?相信有絕對(duì)時(shí)間的存在比較符合人類(lèi)的思維,也就是說(shuō),有一根絕對(duì)時(shí)間軸存在,任何事件都可以投射在這個(gè)時(shí)間軸的某個(gè)點(diǎn)上,不論觀察者處于什么狀態(tài),大家共享一個(gè)絕對(duì)的時(shí)間軸。在這樣的時(shí)間框架下,同時(shí)的概念是絕對(duì)的,只要發(fā)生在時(shí)間軸的同一點(diǎn)上,那么兩個(gè)事件就是同時(shí)發(fā)生。如果兩個(gè)事件不同時(shí)發(fā)生,那么他們之間的間隔也是絕對(duì)的,所有感知到的時(shí)間間隔都是相同的。與之相對(duì)的是絕對(duì)空間的概念。任何事件發(fā)生的地點(diǎn)都可以對(duì)應(yīng)到絕對(duì)空間中的一個(gè)位置點(diǎn),兩個(gè)位置點(diǎn)的長(zhǎng)度是絕對(duì)的,任何觀察者測(cè)量的結(jié)果都是一樣的,無(wú)論觀察者處于什么樣的狀態(tài)。
當(dāng)然,了解狹義相對(duì)論的同學(xué)應(yīng)該是可以建立起來(lái)自己的時(shí)空觀,其實(shí)沒(méi)有絕對(duì)的時(shí)間和空間(時(shí)間和空間是相對(duì)的而且是有關(guān)聯(lián)的,組成四維時(shí)空),同時(shí)是相對(duì)的(相對(duì)于自己的參考系),事件A和事件B先后發(fā)生,位于不同的慣性參考系的觀察者可以不同的觀測(cè)結(jié)果,可能一個(gè)認(rèn)為A和B相關(guān)1秒,而另外一個(gè)慣性參考系的人認(rèn)為A和B之間相隔1.2秒。當(dāng)然,我們研究linux kernel中的時(shí)間子系統(tǒng),這里的參考系不可能是以光速級(jí)別在運(yùn)動(dòng),因此傳統(tǒng)的牛頓的時(shí)空觀也是OK的,它是愛(ài)因斯坦時(shí)空觀的一個(gè)特例。
2、時(shí)間的方向
時(shí)間有沒(méi)有起點(diǎn)和終點(diǎn)?時(shí)間的箭頭指向何方?什么是現(xiàn)在?什么是未來(lái)?時(shí)間是不是可逆的?有沒(méi)有可能穿越?
根據(jù)熱力學(xué)第二定律,對(duì)于一個(gè)孤立系統(tǒng),其內(nèi)部自發(fā)進(jìn)行的與熱相關(guān)的過(guò)程必然向熵增的方向進(jìn)行。一個(gè)孤立系統(tǒng)如果不受外界任何影響,且系統(tǒng)最終處于平衡態(tài),那么在平衡態(tài)時(shí),系統(tǒng)的熵取最大值。從這個(gè)角度看,時(shí)間的方向就是熵增的方向,并且是不可逆的。
此外,當(dāng)時(shí)間沿著它的方向流動(dòng)的時(shí)候,是連續(xù)的,還是有一個(gè)基本的單位,一份一份的流動(dòng)?我想如果能量的交換(熱交換)是一份一份的,那么時(shí)間也是離散的。
3、感知時(shí)間
時(shí)間是和變化相關(guān)的,如果一切處于靜止態(tài),沒(méi)有位移、沒(méi)有能量的變化,那么時(shí)間還有存在的意義嗎?物體從一個(gè)位置A移動(dòng)到了另外一個(gè)位置B,觀察者通過(guò)感知位置的變化來(lái)感知時(shí)間,判斷事件的先后順序。當(dāng)一切處于靜止?fàn)顟B(tài),沒(méi)有任何的運(yùn)動(dòng),各種恒星和行星都處于靜止態(tài),電子不再?lài)@原子核進(jìn)行高速運(yùn)動(dòng),宇宙中的所有的系統(tǒng)沒(méi)有能量的交換,那么時(shí)間也就停止了,或者說(shuō)不存在了。本質(zhì)上,宇宙的狀態(tài)和時(shí)間軸應(yīng)該是一一對(duì)應(yīng)的,如果宇宙的狀態(tài)只有一種,那么時(shí)間軸就停止在一個(gè)點(diǎn)上,不再流動(dòng)了。
二、度量時(shí)間
1、如何定義秒?
在定義秒這個(gè)術(shù)語(yǔ)的時(shí)候是有兩個(gè)標(biāo)準(zhǔn)的:
(1)以銫133的振蕩頻率來(lái)定義秒。
(2)依據(jù)地球自轉(zhuǎn)和公轉(zhuǎn)來(lái)定義秒。
毫無(wú)疑問(wèn),第二種方法是符合人類(lèi)習(xí)慣的,大家已經(jīng)習(xí)慣了一天24個(gè)小時(shí),每個(gè)小時(shí)60分鐘,一分鐘包括60秒數(shù)。我們可以用平均太陽(yáng)日的1/86400來(lái)定義,也可以用繞太陽(yáng)軌道公轉(zhuǎn)一年的時(shí)間來(lái)定義秒,但是這種基于天體運(yùn)動(dòng)而定義的秒其實(shí)是不精準(zhǔn)的,因?yàn)榈厍虻淖赞D(zhuǎn)和公轉(zhuǎn)的時(shí)間不是一個(gè)恒定的值。由此,以銫133的振蕩頻率這樣的物理屬性來(lái)定義秒實(shí)際上可以賦予秒一個(gè)恒定的時(shí)間長(zhǎng)度。
對(duì)于linux kernel而言,它采用了第一種定義的秒,并且參考點(diǎn)(linux epoch)也是UTC時(shí)間,UTC這個(gè)時(shí)間標(biāo)準(zhǔn)就是采用第一種方式來(lái)定義時(shí)間的。歷史上,POSIX標(biāo)準(zhǔn)曾經(jīng)將時(shí)間參考點(diǎn)設(shè)定為1970年1月1日0點(diǎn)0分0秒(GMT),GMT就是采用第二種方法定義時(shí)間的,后面修正為UTC時(shí)間。
定義了秒之后,我們可以進(jìn)一步細(xì)分為毫秒、微秒、納秒等,也可以組織成分鐘、小時(shí)、日、月、年等概念。
2、如何處理閏秒(leap seconds)?
正是因?yàn)閁TC時(shí)間和我們?nèi)粘J褂玫娜諝v時(shí)間有差異,因此才有閏秒(leap second)這個(gè)概念。雖然你UTC時(shí)間使用嚴(yán)格的定義,使用原子鐘作為參考,秒的概念被精準(zhǔn)的定義,但是,它還是要向現(xiàn)實(shí)低頭,因?yàn)閺V大人民群眾喜聞樂(lè)見(jiàn)的是和地球自轉(zhuǎn)和公轉(zhuǎn)相關(guān)的日歷時(shí)間。為了讓UTC時(shí)間和人民群眾的日歷時(shí)間保持一致,在適當(dāng)?shù)臅r(shí)間點(diǎn)(誤差累積到1秒的時(shí)候)對(duì)UTC時(shí)間進(jìn)行增加或者減少一秒的的操作,這就是閏秒的概念了。
由于目前地球的自轉(zhuǎn)一直在變慢,因此我們的日歷時(shí)間(GMT)是在變長(zhǎng)的,因此目前的閏秒調(diào)整都是+1秒的操作。未來(lái)是否地球自轉(zhuǎn)會(huì)變快,誰(shuí)知道呢?
對(duì)于linux kernel而言,雖然epoch是UTC時(shí)間,不過(guò)內(nèi)核不考慮閏秒問(wèn)題。對(duì)于一個(gè)天文學(xué)意義上的較短的時(shí)間段(例如15個(gè)月)UTC和GMT是基本相同的,大部分的應(yīng)用其實(shí)也基本是可以正常工作的。對(duì)這個(gè)問(wèn)題的解決來(lái)自具體的應(yīng)用場(chǎng)景和系統(tǒng)實(shí)現(xiàn),內(nèi)核只是支持了NTP協(xié)議,可以和外部的時(shí)間服務(wù)器進(jìn)行同步,而外部的那些時(shí)間同步服務(wù)器都是支持UTC的,讓它們?nèi)タ紤]閏秒吧,linux kernel只需要保持和它們同步就OK了。
3、如何處理閏年
科學(xué)必須用來(lái)指導(dǎo)人類(lèi)的生產(chǎn)和生活,否則就沒(méi)有意義了。在精確定義了時(shí)間的度量后,我們可以用科學(xué)的方法來(lái)組織時(shí)間。例如:地球繞太陽(yáng)公轉(zhuǎn)的周期是365天6小時(shí)9分鐘10秒(或者說(shuō)365.2564天)。不是整數(shù)天則需要特別處理,例如:考慮平年365天,閏年366天,每四年有一個(gè)閏年。如果這樣的話,0.2564 x 4 = 1.0256,也就是說(shuō),這樣的處理就多算了0.0256天,怎么辦?累積長(zhǎng)了也是一個(gè)不小的誤差。根據(jù)計(jì)算,每100次閏年計(jì)算(周期400年),就多了2.56天,因此,定義在能被100整除的年份中(如果計(jì)算周期是400年,那么有4個(gè)這樣的年份),選取3個(gè)不進(jìn)行閏年,只有能被400整除的年份才閏年。這樣計(jì)算的結(jié)果就是每400年就少算了0.44天,這樣的計(jì)算可以無(wú)窮無(wú)盡計(jì)算下去。
4、如何定義基準(zhǔn)?
時(shí)間有絕對(duì)和相對(duì)的概念。例如1小時(shí)候我們就去吃飯。這里就是一個(gè)相對(duì)時(shí)間的概念,1小時(shí)是相對(duì)當(dāng)前時(shí)間點(diǎn)而言。1949年10月1日,中華人民共和國(guó)成立,這里的時(shí)間就是絕對(duì)時(shí)間。當(dāng)然,實(shí)際上,這里的絕對(duì)時(shí)間也是相對(duì)時(shí)間,只不過(guò)所有地球上的人都使用同一個(gè)基準(zhǔn)點(diǎn)的時(shí)候,這個(gè)時(shí)間表示就是一個(gè)普遍適用的絕對(duì)時(shí)間了。
對(duì)于一個(gè)系統(tǒng)而言,需要定義一個(gè)epoch,所有的時(shí)間表示是基于這個(gè)基準(zhǔn)點(diǎn)的,對(duì)于linux而言,采用了和unix epoch一樣的時(shí)間點(diǎn):1970年1月1日0點(diǎn)0分0秒(UTC)。NTP協(xié)議使用的基準(zhǔn)點(diǎn)是:1900年1月1日0點(diǎn)0分0秒(UTC)。GPS系統(tǒng)使用的基準(zhǔn)點(diǎn)是:1980年1月6日0點(diǎn)0分0秒(UTC)。每個(gè)系統(tǒng)都可以根據(jù)自己的邏輯定義自己epoch,例如unix epoch的基準(zhǔn)點(diǎn)是因?yàn)閡nix操作系統(tǒng)是在1970年左右成型的。
三、Linux kernel中和時(shí)間相關(guān)的基本概念
1、系統(tǒng)時(shí)鐘(system clock)
我們?cè)谥暗奈恼轮姓f(shuō)過(guò),時(shí)間就像是一條沒(méi)有起點(diǎn)、沒(méi)有終點(diǎn)的線段,除了要給出度量單位(例如:秒),還有給出參考點(diǎn)。對(duì)于linux kernel而言,這個(gè)參考點(diǎn)就是Linux Epoch。所謂linux Epoch其實(shí)就是1970年1月1日0點(diǎn)0分0秒(UTC)的時(shí)間點(diǎn)。雖然人類(lèi)喜歡年、月、日、時(shí)、分、秒這些概念,不過(guò)對(duì)于計(jì)算機(jī),更喜歡使用當(dāng)前的時(shí)間點(diǎn)到linux epoch的秒數(shù)。一個(gè)符合POSIX標(biāo)準(zhǔn)的系統(tǒng)必須提供系統(tǒng)時(shí)鐘,以不小于秒的精度來(lái)記錄到linux epoch的時(shí)間值。
內(nèi)核支持的system clock定義如下:
#define CLOCK_REALTIME??????????? 0
#define CLOCK_MONOTONIC??????????? 1
……
CLOCK_REALTIME是描述真實(shí)世界的時(shí)鐘(這里的英文realtime有兩個(gè)意思,一個(gè)表示真實(shí)的時(shí)間的意思,另外一個(gè)是實(shí)時(shí)性的意思,其實(shí)不止中文有歧義,英文也是一樣的,需要根據(jù)上下文判斷,我們這個(gè)場(chǎng)景當(dāng)然不是講實(shí)時(shí)性),就類(lèi)似掛在墻上的鐘表一樣,告知人類(lèi)當(dāng)前的時(shí)間。當(dāng)然,家里的鐘表你當(dāng)然可以按照你的意愿向前或者向后調(diào)整。CLOCK_MONOTONIC是一個(gè)禁止人為設(shè)定的真實(shí)世界的時(shí)鐘,你沒(méi)有辦法設(shè)定它,但是可以通過(guò)NTP協(xié)議進(jìn)行調(diào)整。更多的system clock ID會(huì)在后續(xù)的文章中給出詳細(xì)定義
2、 broken-down POSIX time
在time line上以linux epoch為參考點(diǎn),用到參考點(diǎn)的秒數(shù)來(lái)表示timeline上的某個(gè)時(shí)間點(diǎn)的方法對(duì)于計(jì)算機(jī)而言當(dāng)然是方便的,不過(guò)對(duì)于使用計(jì)算機(jī)的人類(lèi)而言,我們更習(xí)慣broken-down time,也就是將那個(gè)冰冷的到參考點(diǎn)的秒數(shù)值分解成年月日時(shí)分秒。在內(nèi)核中用下面的數(shù)據(jù)結(jié)構(gòu)表示(注釋非常詳細(xì),這里不再贅述):
struct tm {
/*
* the number of seconds after the minute, normally in the range
* 0 to 59, but can be up to 60 to allow for leap seconds
*/
int tm_sec;
/* the number of minutes after the hour, in the range 0 to 59*/
int tm_min;
/* the number of hours past midnight, in the range 0 to 23 */
int tm_hour;
/* the day of the month, in the range 1 to 31 */
int tm_mday;
/* the number of months since January, in the range 0 to 11 */
int tm_mon;
/* the number of years since 1900 */ -----以NTP epoch為基準(zhǔn)點(diǎn)
long tm_year;
/* the number of days since Sunday, in the range 0 to 6 */
int tm_wday;
/* the number of days since January 1, in the range 0 to 365 */
int tm_yday;
};
3、不同精度的時(shí)間表示
傳統(tǒng)的unix使用了基于秒的時(shí)間定義,相關(guān)的數(shù)據(jù)結(jié)構(gòu)是time_t:
typedef long??????? time_t;
time_t是POSIX標(biāo)準(zhǔn)定義的一個(gè)以秒計(jì)的時(shí)間值。例如大家都比較熟悉的time函數(shù),可以獲取一個(gè)從linux Epoch到當(dāng)前時(shí)間點(diǎn)的秒值,該函數(shù)的返回值類(lèi)型就是time_t的。如果time_t被實(shí)現(xiàn)成一個(gè)signed 32-bit integer,那么實(shí)際上在2038年的時(shí)候就會(huì)有溢出問(wèn)題。
隨著應(yīng)用的發(fā)展,秒精度已經(jīng)無(wú)法滿足要求,因此出現(xiàn)了微秒精度的時(shí)間表示:
struct timeval {
time_t??????? tv_sec;??????? /* seconds */
suseconds_t??? tv_usec;??? /* microseconds */
};
struct timeval 的概念和time_t是一樣的,只不過(guò)多了一個(gè)微秒的成員,將時(shí)間的精度推進(jìn)到微秒級(jí)別。在計(jì)算當(dāng)前時(shí)刻到epoch時(shí)間點(diǎn)的微秒數(shù)值的時(shí)候可以使用公式:tv_sec x 10^6 + tv_usec。
由于實(shí)時(shí)應(yīng)用程序的需求,POSIX標(biāo)準(zhǔn)最終將時(shí)間精度推進(jìn)到納秒,納秒精度的時(shí)間表示如下:
struct timespec {
time_t??? tv_sec;??????????? /* seconds */
long??????? tv_nsec;??????? /* nanoseconds */
};
根據(jù)POSIX標(biāo)準(zhǔn),timeline上一個(gè)時(shí)間點(diǎn)的值用struct timespec來(lái)表示,它應(yīng)該最少包括:
成員數(shù)據(jù)類(lèi)型
成員的名字
描述
time_t
tv_sec
該時(shí)間點(diǎn)上的秒值,僅在大于或者等于0的時(shí)候有效。
long
tv_nsec
該時(shí)間點(diǎn)上的ns值,僅在大于或者等于0,并且小于10^9納秒的時(shí)候有效。
struct timespec和struct timeval概念類(lèi)似,這里不再贅述。
原創(chuàng)文章,轉(zhuǎn)發(fā)請(qǐng)注明出處。蝸窩科技
評(píng)論:
2021-02-15 12:19
為你的這句話點(diǎn)贊
2021-02-15 12:21
@張連聘Linc Zhang:經(jīng)濟(jì)基礎(chǔ)決定上層建筑,相信我,騷年,大膽的、勇敢的、奮不顧身的去掙錢(qián)混飯吃吧,但有一點(diǎn),為自己的理想保留一個(gè)空間,有空就去打掃它,給它澆澆水,施施肥,等到經(jīng)濟(jì)基礎(chǔ)打好了,我們?cè)俑哟竽懙摹⒂赂业摹^不顧身的去追求內(nèi)心的愉悅.......
2021-02-15 12:18
為你的這句話點(diǎn)贊。
wakawaka
2017-07-26 10:02
你好,我最近在一個(gè)APP上設(shè)置時(shí)區(qū),用C++寫(xiě)的,但是不知道怎么解析linux中的時(shí)區(qū)文件,通過(guò)時(shí)區(qū)換算當(dāng)前時(shí)間,有沒(méi)有相關(guān)的庫(kù)介紹
2017-05-17 13:45
老板,你好。
文中有“如果time_t被實(shí)現(xiàn)成一個(gè)signed 32-bit integer,那么實(shí)際上在2038年的時(shí)候就會(huì)有溢出問(wèn)題”,我想請(qǐng)問(wèn)2038年是怎么算出來(lái)的,我按32無(wú)符號(hào)算才136年呢?
2017-05-17 15:02
@江南書(shū)生:有符號(hào)的32bit的整數(shù)最大值是0x7fffffff,而一年等于多少秒呢?等于365 x 24 x 3600,這兩個(gè)數(shù)相除等于68,而linux epoch從1970年開(kāi)始,1970 + 68 = 2038
2017-05-17 15:04
@linuxer:明白了,看錯(cuò)了,嘿嘿
sched_fork
2015-11-11 15:42
博主,你的文章寫(xiě)的很好。可貴的是,在寫(xiě)一個(gè) timer 子系統(tǒng)還能道出這么多物理學(xué)相關(guān)的知識(shí)。
請(qǐng)問(wèn)一下你研究一個(gè)子系統(tǒng)是怎么樣的順序呢?
是先閱讀相關(guān)背景知識(shí),然后通讀該子系統(tǒng)代碼,再整理出一個(gè)輪廓框架,最后寫(xiě)作嗎?
還有一點(diǎn),讀代碼的時(shí)候,你是怎么知道代碼背后的知識(shí)的?例如從 time_t 和 struct timeval 這樣的代碼,知道背后 posix 演進(jìn)的過(guò)程。
2015-11-11 18:00
@sched_fork:呵呵~~~我本身是一個(gè)物理學(xué)和數(shù)學(xué)愛(ài)好者,當(dāng)然,僅僅限于“愛(ài)好者”,因此,有時(shí)候就會(huì)喜歡亂想,亂寫(xiě),其實(shí)那些和理解linux kernel的各個(gè)子系統(tǒng)沒(méi)有任何的關(guān)系。
知識(shí)的獲取是和人的思維習(xí)慣相關(guān)的,多思考,多問(wèn)問(wèn)題,自己先分析,然后從網(wǎng)絡(luò)找答案驗(yàn)證自己的思路.....
2015-04-21 17:16
很好的文章
2015-01-23 14:43
隨著應(yīng)用的發(fā)展,秒精度已經(jīng)無(wú)法滿足要求,因此出現(xiàn)了毫秒精度的時(shí)間表示:
struct timeval {
time_t????????tv_sec;????????/* seconds */
suseconds_t????tv_usec;????/* microseconds */
};
struct timeval 的概念和time_t是一樣的,只不過(guò)多了一個(gè)毫秒的成員,將時(shí)間的精度推進(jìn)到毫秒級(jí)別。在計(jì)算當(dāng)前時(shí)刻到epoch時(shí)間點(diǎn)的毫秒數(shù)值的時(shí)候可以使用公式:tv_sec x 10^6 + tv_usec。
這里說(shuō)的是微妙,不是毫秒。
2015-01-26 12:12
@haichunzhao:多謝指正,我公式用的10^6,不過(guò)手寫(xiě)就錯(cuò)了,^_^
Ash
2015-01-26 20:13
@haichunzhao:我一直很奇怪:在一般都是1000HZ,也就是1ms一次的滴答下,怎么得到us級(jí)別的精度?
2015-01-27 11:56
@Ash:低精度timer是基于tick的,實(shí)際上,高精度timer不是base on tick的,它是基于clockevent和clock source的,假設(shè)一個(gè)晶振是13M,那么每個(gè)clock就是1/13個(gè)us,通過(guò)對(duì)clock的計(jì)數(shù),當(dāng)然很容易達(dá)到us的精度了。更具體的內(nèi)容會(huì)在高精度timer文檔中描述,BTW,這份文檔還沒(méi)有開(kāi)始寫(xiě),呵呵。
Ash
2015-01-27 16:32
@linuxer:哦,就相當(dāng)于有一個(gè)寄存器級(jí)別的jiffies在計(jì)數(shù),所以能夠達(dá)到更高的精度。那看來(lái)是我的采用的soc架構(gòu)不支持這個(gè),于是退而求其次采用了低精度的jiffies作為clocksource。我以為是有什么特殊的算法,能夠?qū)崿F(xiàn)高精度呢。感謝了。
cade
2017-03-30 14:20
@linuxer:請(qǐng)教下
這base on tick 和base on clockevent/clocksource兩種定時(shí)器硬件實(shí)現(xiàn)上有什么不同?一般是arm實(shí)現(xiàn)的嗎?
在driver中使用時(shí)有接口可以設(shè)置精度嗎比如要精確到ns/us/ms/s。。。
定時(shí)器到期就一定意味著GIC向cpu發(fā)送中斷,進(jìn)入interrupt context?
2017-03-31 19:23
@cade:這base on tick 和base on clockevent/clocksource兩種定時(shí)器硬件實(shí)現(xiàn)上有什么不同?一般是arm實(shí)現(xiàn)的嗎?
==============
低精度timer是基于tick的,而對(duì)于周期性tick而言,HW timer需要能夠周期性的產(chǎn)生中斷。
高精度timer是基于clockevent driver的,需要HW timer具備one shot的功能。
在driver中使用時(shí)有接口可以設(shè)置精度嗎比如要精確到ns/us/ms/s
===============
不能
定時(shí)器到期就一定意味著GIC向cpu發(fā)送中斷,進(jìn)入interrupt context?
===============
hw timer到期當(dāng)然會(huì)觸發(fā)中斷了
cade
2017-03-31 19:47
@linuxer:謝謝!這幾天一直在拜讀timer系列文件,寫(xiě)的很好!
原先從來(lái)沒(méi)有看過(guò)timer,一直有個(gè)疑問(wèn)
“HW timer的哪些是ARM 實(shí)現(xiàn)的,哪些是SOC實(shí)現(xiàn)的?”
我看下來(lái)的結(jié)合自己的認(rèn)識(shí)是:
system counter/local timer----arm實(shí)現(xiàn)了;
RTC 用來(lái)實(shí)現(xiàn)alarmtimer,可以設(shè)定wall time---soc廠商實(shí)現(xiàn)
不知是這樣嗎?
2015-01-27 14:00
@Ash:kernel會(huì)選擇最好的clocksource,一般的clocksource都是MHZ,會(huì)比1000HZ大的,所以能精確到us;
Ash
2015-01-27 16:33
@haichunzhao:恩,看來(lái)是這樣的,是我之前找錯(cuò)方向了。謝謝!
star
2015-01-21 11:19
已從量子物理轉(zhuǎn)到嵌入式混飯吃...
wowo
2015-01-21 12:19
@star:我覺(jué)得這才是這個(gè)社會(huì)的無(wú)奈,理想狀態(tài)下,搞量子物理的一定要比搞嵌入式的掙的錢(qián)更多,哪怕他一輩子什么都沒(méi)搞出來(lái)……
2015-01-22 10:44
@wowo:是啊,其實(shí)我的理想是
忙了好一陣子。
要把這段時(shí)間沒(méi)仔細(xì)看的文章讀一遍了。
2015-01-22 10:44
@tigger:我的理想是種地。
wowo
2015-01-22 12:21
@tigger:呵呵,可以去包點(diǎn)地開(kāi)個(gè)農(nóng)場(chǎng)啊。
2014-12-23 18:12
如果不是為了靠linux kernel混口飯吃,我早就遁入空門(mén)研究物理學(xué)和數(shù)學(xué)了,^_^
2014-12-24 10:23
@linuxer:幸好我逼迫自己嘗試喜歡linux kernel
要不然早就沒(méi)飯吃了
^_^
2014-12-24 13:08
@tigger:經(jīng)濟(jì)基礎(chǔ)決定上層建筑,相信我,騷年,大膽的、勇敢的、奮不顧身的去掙錢(qián)混飯吃吧,但有一點(diǎn),為自己的理想保留一個(gè)空間,有空就去打掃它,給它澆澆水,施施肥,等到經(jīng)濟(jì)基礎(chǔ)打好了,我們?cè)俑哟竽懙摹⒂赂业摹^不顧身的去追求內(nèi)心的愉悅.......
溫柔海洋
2016-07-06 15:24
@linuxer:中國(guó)制造業(yè)本來(lái)就不發(fā)達(dá),整天互聯(lián)網(wǎng)+制造泡泡。
wowo
2014-12-23 15:28
我只想說(shuō)騷年你又升華了,哈哈。等下班了得好好研究研究,窺探一下天機(jī)~~~~
發(fā)表評(píng)論:
昵稱(chēng)
郵件地址 (選填)
個(gè)人主頁(yè) (選填)
總結(jié)
以上是生活随笔為你收集整理的linux 不同用户时间,Linux时间子系统之(一):时间的基本概念的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: 开源排版软件 Scribus
- 下一篇: 百会项目与redmine的对比
