《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > linux世界里的時間

linux世界里的時間

2017-06-21
關鍵詞: Linux 計數器

      通常,操作系統可以使用三種方法來表示系統的當前時間與日期:

 ?、僮詈唵蔚囊环N方法就是直接用一個64位的計數器來對時鐘滴答進行計數。

  ②第二種方法就是用一個32位計數器來對秒進行計數,同時還用一個32位的輔助計數器對時鐘滴答計數,之子累積到一秒為止。因為232超過136年,因此這種方法直至22世紀都可以讓系統工作得很好。

 ?、鄣谌N方法也是按時鐘滴答進行計數,但是是相對于系統啟動以來的滴答次數,而不是相對于相對于某個確定的外部時刻;當讀外部后備時鐘(如RTC)或用戶輸入實際時間時,根據當前的滴答次數計算系統當前時間。

  UNIX類操作系統通常都采用第三種方法來維護系統的時間與日期。

  1 基本概念

  首先,有必要明確一些Linux內核時鐘驅動中的基本概念。

  (1)時鐘周期(clock cycle)的頻率:8253/8254 PIT的本質就是對由晶體振蕩器產生的時鐘周期進行計數,晶體振蕩器在1秒時間內產生的時鐘脈沖個數就是時鐘周期的頻率。

  Linux用宏CLOCK_TICK_RATE來表示8254 PIT的輸入時鐘脈沖的頻率(在PC機中這個值通常是1193180HZ),該宏定義在include/asm-i386/timex.h頭文件中:

  #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */

  (2)時鐘滴答(clock tick):我們知道,當PIT通道0的計數器減到0值時,它就在IRQ0上產生一次時鐘中斷,也即一次時鐘滴答。PIT通道0的計數器的初始值決定了要過多少時鐘周期才產生一次時鐘中斷,因此也就決定了一次時鐘滴答的時間間隔長度。

  (3)時鐘滴答的頻率(HZ):也即1秒時間內PIT所產生的時鐘滴答次數。類似地,這個值也是由PIT通道0的計數器初值決定的(反過來說, 確定了時鐘滴答的頻率值后也就可以確定8254 PIT通道0的計數器初值)。Linux內核用宏HZ來表示時鐘滴答的頻率,而且在不同的平臺上HZ有不同的定義值。對于ALPHA和IA62平臺HZ的 值是1024,對于SPARC、MIPS、ARM和i386等平臺HZ的值都是100。該宏在i386平臺上的定義如下(include/asm- i386/param.h):

  #ifndef HZ

  #define HZ 100

  #endif

  根據HZ的值,我們也可以知道一次時鐘滴答的具體時間間隔應該是(1000ms/HZ)=10ms。

  (4)時鐘滴答的時間間隔:Linux用全局變量tick來表示時鐘滴答的時間間隔長度,該變量定義在kernel/timer.c文件中,如下:

  long tick = (1000000 + HZ/2) / HZ; /* timer interrupt period */

  tick變量的單位是微妙(μs),由于在不同平臺上宏HZ的值會有所不同,因此方程式tick=1000000÷HZ的結果可能會是個小數, 因此將其進行四舍五入成一個整數,所以Linux將tick定義成(1000000+HZ/2)/HZ,其中被除數表達式中的HZ/2的作用就是用來將 tick值向上圓整成一個整型數。

  另外,Linux還用宏TICK_SIZE來作為tick變量的引用別名(alias),其定義如下(arch/i386/kernel/time.c):

  #define TICK_SIZE tick

  (5)宏LATCH:Linux用宏LATCH來定義要寫到PIT通道0的計數器中的值,它表示PIT將沒隔多少個時鐘周期產生一次時鐘中斷。顯然LATCH應該由下列公式計算:

  LATCH=(1秒之內的時鐘周期個數)÷(1秒之內的時鐘中斷次數)=(CLOCK_TICK_RATE)÷(HZ)

  類似地,上述公式的結果可能會是個小數,應該對其進行四舍五入。所以,Linux將LATCH定義為(include/linux/timex.h):

  /* LATCH is used in the interval timer and ftape setup. */

  #define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */

  類似地,被除數表達式中的HZ/2也是用來將LATCH向上圓整成一個整數。

  2 表示系統當前時間的內核數據結構

  作為一種UNIX類操作系統,Linux內核顯然采用本節一開始所述的第三種方法來表示系統的當前時間。Linux內核在表示系統當前時間時用到了三個重要的數據結構:

 ?、偃肿兞縥iffies:這是一個32位的無符號整數,用來表示自內核上一次啟動以來的時鐘滴答次數。每發生一次時鐘滴答,內核的時鐘中斷處 理函數timer_interrupt()都要將該全局變量jiffies加1。該變量定義在kernel/timer.c源文件中,如下所示:

  unsigned long volatile jiffies;

  C語言限定符volatile表示jiffies是一個易該變的變量,因此編譯器將使對該變量的訪問從不通過CPU內部cache來進行。

  ②全局變量xtime:它是一個timeval結構類型的變量,用來表示當前時間距UNIX時間基準1970-01-01 00:00:00的相對秒數值。結構timeval是Linux內核表示時間的一種格式(Linux內核對時間的表示有多種格式,每種格式都有不同的時間 精度),其時間精度是微秒。該結構是內核表示時間時最常用的一種格式,它定義在頭文件include/linux/time.h中,如下所示:

  struct timeval {

  time_t tv_sec; /* seconds */

  suseconds_t tv_usec; /* microseconds */

  };

  其中,成員tv_sec表示當前時間距UNIX時間基準的秒數值,而成員tv_usec則表示一秒之內的微秒值,且1000000>tv_usec>=0。

  Linux內核通過timeval結構類型的全局變量xtime來維持當前時間,該變量定義在kernel/timer.c文件中,如下所示:

  /* The current time */

  volatile struct timeval xtime __attribute__ ((aligned (16)));

  但是,全局變量xtime所維持的當前時間通常是供用戶來檢索和設置的,而其他內核模塊通常很少使用它(其他內核模塊用得最多的是 jiffies),因此對xtime的更新并不是一項緊迫的任務,所以這一工作通常被延遲到時鐘中斷的底半部分(bottom half)中來進行。由于bottom half的執行時間帶有不確定性,因此為了記住內核上一次更新xtime是什么時候,Linux內核定義了一個類似于jiffies的全局變量 wall_jiffies,來保存內核上一次更新xtime時的jiffies值。時鐘中斷的底半部分每一次更新xtime的時侯都會將 wall_jiffies更新為當時的jiffies值。全局變量wall_jiffies定義在kernel/timer.c文件中:

  /* jiffies at the most recent update of wall time */

  unsigned long wall_jiffies;

 ?、廴肿兞縮ys_tz:它是一個timezone結構類型的全局變量,表示系統當前的時區信息。結構類型timezone定義在include/linux/time.h頭文件中,如下所示:

  struct timezone {

  int tz_minuteswest; /* minutes west of Greenwich */

  int tz_dsttime; /* type of dst correction */

  };

  基于上述結構,Linux在kernel/time.c文件中定義了全局變量sys_tz表示系統當前所處的時區信息,如下所示:

  struct timezone sys_tz;

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          噜噜噜久久亚洲精品国产品小说| 日韩一级裸体免费视频| 欧美日韩一区精品| 久久亚洲一区二区三区四区| 国产精品色婷婷久久58| 欧美在线免费视屏| 亚洲女人天堂成人av在线| 欧美日韩精品免费观看| 欧美一区二区三区婷婷月色| av成人免费在线观看| 久久精品国产亚洲aⅴ| 国产一区 二区 三区一级| 另类欧美日韩国产在线| 黄色精品在线看| 国产精品日韩精品欧美精品| 久久精品一本| 国产日韩欧美亚洲| 亚洲黄色在线| 免费久久99精品国产自| 久久久999精品视频| 国产日韩精品在线播放| 欧美日韩国产专区| 国产日韩亚洲欧美精品| 免费日韩成人| 欧美日韩ab片| 国产欧美一区二区精品仙草咪| 久久亚洲风情| 欧美日韩伊人| 一区二区久久| 国产女主播一区二区| 亚洲国产精品一区二区尤物区| 欧美成人a视频| 欧美另类在线观看| 欧美α欧美αv大片| 亚洲第一精品电影| 亚洲欧美影院| 亚洲黄色小视频| 国内久久精品| 欧美电影免费观看网站| 久久岛国电影| 亚洲精品视频在线观看免费| 亚洲国产日韩一区二区| 噜噜噜躁狠狠躁狠狠精品视频| 亚洲综合日韩中文字幕v在线| 国产精品男gay被猛男狂揉视频| 亚洲综合国产| 国产精品成人观看视频国产奇米| 欧美午夜精品理论片a级大开眼界| 欧美成人午夜| 日韩亚洲国产精品| 亚洲精品在线免费| 欧美高清在线精品一区| 亚洲国产精品99久久久久久久久| 欧美激情视频在线播放| 在线视频你懂得一区| 国产精品网站视频| 亚洲精品久久久久久一区二区| 国产精品毛片在线| 99xxxx成人网| 久久久久久久久岛国免费| 欧美午夜久久| 久久先锋影音av| 一区二区三区免费网站| 亚洲综合清纯丝袜自拍| 欧美黑人一区二区三区| 狠狠色狠狠色综合| 亚洲国产日日夜夜| 亚洲天堂网站在线观看视频| 在线播放国产一区中文字幕剧情欧美| 久久久久久久综合日本| 亚洲精品一二区| 欧美日韩日日骚| 一色屋精品视频在线看| 一区二区三区回区在观看免费视频| 亚洲免费观看高清完整版在线观看熊| 欧美电影电视剧在线观看| 欧美1区免费| 欧美影院久久久| 欧美激情欧美狂野欧美精品| 亚洲二区视频在线| 欧美精品一线| 性久久久久久久久| 久久爱另类一区二区小说| 在线成人中文字幕| 99ri日韩精品视频| 亚洲乱码精品一二三四区日韩在线| 国产精品久久久久久影视| 亚洲天堂av在线免费| 狠狠色狠狠色综合| 欧美日韩精品一区视频| 亚洲一区日韩在线| 久久成人18免费网站| 国产一区二区三区不卡在线观看| 亚洲国产一区二区三区在线播| 一区二区三区四区五区在线| 日韩亚洲在线观看| 国产美女精品在线| 欧美国产专区| 老妇喷水一区二区三区| 亚洲视频在线观看| 精品二区视频| 欧美一区二区三区四区在线观看地址| 麻豆成人综合网| 亚洲欧美激情诱惑| 亚洲欧洲美洲综合色网| 91久久国产综合久久91精品网站| 亚洲精品色图| 国产美女精品| 亚洲免费在线电影| 欧美午夜精品久久久久久浪潮| 亚洲一区二区三区视频播放| 久久久最新网址| 夜夜精品视频| 亚洲日本欧美日韩高观看| 欧美日韩国产一级片| 亚洲女同精品视频| 国产综合亚洲精品一区二| 国产欧美va欧美va香蕉在| 欧美日韩一视频区二区| 国产精品一二| 国产精品丝袜91| 欧美www视频在线观看| 久热精品视频在线| 亚洲一区三区电影在线观看| 亚洲精品资源美女情侣酒店| 国产精品swag| 红桃视频亚洲| 伊人色综合久久天天五月婷| 一区二区欧美在线| 国产精品精品视频| 欧美一级视频免费在线观看| 亚洲一区二区三区午夜| 国产一区二区三区在线观看视频| 亚洲第一级黄色片| 久久国产视频网站| 亚洲自拍偷拍网址| 欧美激情综合色综合啪啪| 中文久久乱码一区二区| 亚洲午夜女主播在线直播| 亚洲精品美女在线观看| 亚洲视频一区二区在线观看| 国产亚洲欧美一区二区| 中日韩美女免费视频网站在线观看| 欧美日韩高清不卡| 国产精品亚洲综合天堂夜夜| 欧美在线在线| 久久久青草青青国产亚洲免观| 欧美激情免费观看| 雨宫琴音一区二区在线| 在线亚洲成人| 久久精品国产免费观看| 国产精品免费观看视频| 欧美精品日韩一本| 久久综合免费视频影院| 欧美99久久| 国产精品青草综合久久久久99| 欧美一区二区三区免费大片| 性欧美xxxx视频在线观看| 极品中文字幕一区| 狠狠色狠狠色综合日日91app| 亚洲精品永久免费精品| 欧美精品在欧美一区二区少妇| 亚洲午夜久久久久久久久电影院| 国产精品视频xxx| 一区在线视频观看| 欧美成人免费观看| 蜜桃av噜噜一区| 亚洲欧美欧美一区二区三区| 欧美成人自拍视频| 欧美在线视频网站| 国产精品羞羞答答| 国产精品扒开腿做爽爽爽视频| 亚洲国产精品久久久久婷婷884| 9人人澡人人爽人人精品| 日韩午夜在线电影| 亚洲欧美激情四射在线日| 一区二区三区在线免费观看| 国产伦精品一区二区三区四区免费| 国产精品视屏| 美女国内精品自产拍在线播放| 国产精品久久久久久久app| 中文亚洲欧美| 亚洲精品日韩久久| 欧美大片在线观看一区二区| 91久久精品一区| 亚洲一区二区三区欧美| 亚洲福利小视频| 久久五月天婷婷| 免费欧美在线视频| 国产视频一区在线观看一区免费| 亚洲精品看片| 久久综合狠狠综合久久综青草| 欧美一区二区三区视频在线观看| 久久婷婷人人澡人人喊人人爽| 国产精品日韩精品欧美在线| 欧美亚洲动漫精品| 欧美日韩亚洲视频一区| 亚洲人午夜精品免费| 艳妇臀荡乳欲伦亚洲一区| 极品裸体白嫩激情啪啪国产精品| 亚洲人成网站999久久久综合| 亚洲亚洲精品三区日韩精品在线视频| 久久久久久久999精品视频| 欧美激情中文不卡| 亚洲激情第一页| 久久精品国产精品亚洲精品| 国产一区二区日韩精品欧美精品| 亚洲日本久久| 国产一区二区毛片| 欧美在线关看| 国产亚洲精品久久久久久| **欧美日韩vr在线| 欧美一级免费视频| 亚洲一区二区av电影| 午夜视频在线观看一区二区| 欧美激情精品久久久六区热门| 欧美在线观看网址综合| 欧美日韩一区二区在线播放| 国产精品v欧美精品v日韩| 久久人人爽人人爽爽久久| 亚洲桃花岛网站| 国产精品久久亚洲7777| 最新亚洲激情| 亚洲国产精品一区二区尤物区| 国产精品久久二区二区| 在线观看国产日韩| 欧美日韩在线播放| 久久久久久电影| 欧美不卡福利| 欧美精品在线播放| 久久综合九色综合欧美狠狠| 在线精品在线| 国产精品久久久久久影院8一贰佰| 国产综合色在线视频区| 伊人久久大香线蕉综合热线| 国产婷婷色一区二区三区四区| 国产亚洲精品一区二555| 在线播放豆国产99亚洲| 国产一区二区三区高清| 欧美一区激情| 亚洲国产精品久久| 亚洲一二区在线| 国产精品国产三级国产a| 久久久久一区二区三区| 国产亚洲欧洲一区高清在线观看| 亚洲激情在线观看| 狠狠色狠狠色综合| 欧美激情一区二区三区在线| 久久综合色综合88| 国产日韩欧美夫妻视频在线观看| 亚洲欧美在线视频观看| 狠狠做深爱婷婷久久综合一区| 亚洲日本在线视频观看| 欧美伦理一区二区| 国产伊人精品| 国产精品美女一区二区在线观看| 欧美一区二区三区喷汁尤物| 久久久久国产精品午夜一区| 国产免费成人在线视频| 欧美日韩国产在线观看| 在线免费观看视频一区| 久久久久99精品国产片| 久久国产精品久久国产精品| 欧美大片在线观看一区二区| 久久免费的精品国产v∧| 国内一区二区三区| 亚洲欧美日韩一区在线观看| 国产精品第一区| 欧美一区二区三区免费大片| 亚洲综合成人在线| 一区二区三区成人精品| 欧美国产丝袜视频| 在线欧美亚洲| 国内精品免费午夜毛片| 亚洲毛片在线看| 亚洲大黄网站| 伊人成年综合电影网| 亚洲影院污污.| 玖玖在线精品| 欧美成va人片在线观看| 亚洲欧洲日韩在线| 国模精品娜娜一二三区| 日韩视频永久免费观看| 在线视频成人| 久久九九有精品国产23| 国产一区欧美日韩| 亚洲永久精品大片| 国产精品国产三级国产普通话99| 亚洲欧美日韩国产精品| 新67194成人永久网站| 国产午夜亚洲精品羞羞网站| 欧美紧缚bdsm在线视频| 欧美日韩国产91| 亚洲精品国精品久久99热| 国产精品毛片a∨一区二区三区|国| 亚洲主播在线播放| 欧美日韩国产影院| 精品1区2区| 欧美精品性视频| 性色av一区二区三区在线观看| 欧美日韩一区二区三区免费| 欧美成人午夜剧场免费观看| 久久久国产精品一区二区中文| 老牛嫩草一区二区三区日本| 亚洲美女av网站| 亚洲国产欧美久久| 欧美精品色综合| 性色av一区二区三区红粉影视| 国产精品久久久久婷婷| 亚洲激情六月丁香| 欧美激情亚洲精品| 亚洲国产精品123| 国产久一道中文一区| 免费观看成人鲁鲁鲁鲁鲁视频| 一区二区三区高清| 亚洲一区二区三区午夜| 日韩视频永久免费观看| 久久久久国产一区二区| 欧美一级黄色网| 久久久久国产精品午夜一区| 欧美激情第1页| 亚洲国产精品成人一区二区| 毛片基地黄久久久久久天堂| 亚洲午夜视频| 欧美日韩一区二区在线播放| 午夜影院日韩| 欧美激情2020午夜免费观看| 亚洲国产精品视频一区|