日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux 系统时间是在哪里记录的,Linux系统如何记录时间

發(fā)布時(shí)間:2025/4/5 linux 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux 系统时间是在哪里记录的,Linux系统如何记录时间 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、內(nèi)核在開(kāi)機(jī)啟動(dòng)的時(shí)候會(huì)讀取RTC硬件獲取一個(gè)時(shí)間作為初始基準(zhǔn)時(shí)間,這個(gè)基準(zhǔn)時(shí)間對(duì)應(yīng)一個(gè)jiiffies值(這個(gè)基準(zhǔn)時(shí)間換算成jiffies值的方法是:用這個(gè)時(shí)間減去1970-01-01? 00:00:00? +0000(UTC)),然后把這個(gè)時(shí)間換算成jiffies數(shù)值,這個(gè)jiffies值作為我們開(kāi)機(jī)時(shí)的基準(zhǔn)jiffies值存在。然后系統(tǒng)運(yùn)行時(shí)每個(gè)時(shí)鐘節(jié)拍的末尾都會(huì)給jiffies這個(gè)全局變量加1,因此操作系統(tǒng)就使用jiffies這個(gè)全局變量記錄下來(lái)當(dāng)前時(shí)間。當(dāng)我們需要當(dāng)前時(shí)間點(diǎn)時(shí),就用jiffies這個(gè)時(shí)間點(diǎn)去計(jì)算(計(jì)算方法就是先把這個(gè)jiffies值對(duì)應(yīng)的時(shí)間段計(jì)算出來(lái),然后再加上1970-01-01 ? 00:00:00? +0000(UTC)即可得到這個(gè)時(shí)間點(diǎn))

2、其實(shí)操作系統(tǒng)只在開(kāi)機(jī)的時(shí)候讀取一次RTC,整個(gè)系統(tǒng)運(yùn)行過(guò)程中RTC是無(wú)作用的。RTC的真正作用其實(shí)是在操作系統(tǒng)OS的兩次開(kāi)機(jī)之間進(jìn)行時(shí)間的保存。

3、理解時(shí)一定要點(diǎn)時(shí)間和段時(shí)間結(jié)合起來(lái)理解。jiffies這個(gè)變量記錄的其實(shí)是段時(shí)間(其實(shí)就是當(dāng)前時(shí)間和1970-01-01? 00:00:00? +0000(UTC)這個(gè)時(shí)間的差值)。

4、一個(gè)時(shí)間節(jié)拍的時(shí)間取決于操作系統(tǒng)的配置,現(xiàn)代Linux系統(tǒng)一般是10ms或者是1ms。這個(gè)時(shí)間其實(shí)就是調(diào)度時(shí)間,在內(nèi)核中用HZ來(lái)記錄和表示。如果HZ定義為1000,那么時(shí)鐘節(jié)拍就是1/HZ,也就是1ms。學(xué)習(xí)驅(qū)動(dòng)會(huì)用到這些知識(shí)。

5、Linux中與時(shí)間相關(guān)的系統(tǒng)調(diào)用

(1)、常用的時(shí)間相關(guān)的API和C庫(kù)函數(shù)有9個(gè):time、ctime、localtime、gmtime、mktime、asctime、strftime、gettimeofday、settimeofday

它們的關(guān)系如下圖:

(2)、time系統(tǒng)調(diào)用返回當(dāng)前時(shí)間以秒為單位的距離1970-01-01? 00:00:00? +0000(UTC)過(guò)去的秒數(shù)。這個(gè)time內(nèi)部就是用jiffies換算得到的秒數(shù)。其他函數(shù)基本都是圍繞著time來(lái)工作的。

(3)、gmtime和localtime會(huì)把time得到的秒數(shù)變成一個(gè)struct tm結(jié)構(gòu)體表示的時(shí)間。區(qū)別是gmtime得到的是國(guó)際時(shí)間,而localtime得到的是本地(指的是你運(yùn)行l(wèi)ocaltime函數(shù)的程序所在的計(jì)算機(jī)所設(shè)置的時(shí)區(qū)對(duì)應(yīng)的本地時(shí)間)時(shí)間。mktime用來(lái)完成相反方向的轉(zhuǎn)換(struct tm到time_t).

(4)、如果從struct tm出發(fā)想得到字符串格式的時(shí)間,可以用asctime或者strftime都可以。(如果從time_t出發(fā)想得到字符串格式的時(shí)間用ctime即可)。

(5)、gettimeofday返回的時(shí)間是由struct timeval和struct timezone這兩個(gè)結(jié)構(gòu)體共同表示的,其中timeval表示時(shí)間,而timezone表示時(shí)區(qū)。settimeofday是用來(lái)設(shè)置當(dāng)前的時(shí)間和時(shí)區(qū)的。

總結(jié):不管是用哪一個(gè)系統(tǒng)調(diào)用,最終得到的時(shí)間本質(zhì)上都是一個(gè)時(shí)間(這個(gè)時(shí)間最終都是從kernel中記錄的jiffies中計(jì)算得來(lái)的),只不過(guò)不同的函數(shù)返回的時(shí)間的格式不同,精度不同。

總結(jié)

以上是生活随笔為你收集整理的linux 系统时间是在哪里记录的,Linux系统如何记录时间的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。