1. 程式人生 > >11---定時器和時間管理

11---定時器和時間管理

核心中哪些函式需要定期執行?

  • 對排程程式中的佇列進行平衡調整的函式
  • 對螢幕進行重新整理的函式

核心如何計算和管理時間,HZ、節拍和節拍率是什麼?

核心藉助系統定時器計算流失的時間,系統定時器以一定的頻率(預定義,也稱節拍率或HZ)觸發時鐘中斷,核心通過兩次時鐘中斷的間隔計算(也稱為節拍)和管理時間。

什麼是系統執行時間?

自系統啟動開始所經歷的時間。

系統定時器使用高頻率有哪些優點?

  • 更高的時鐘中斷解析度可提高時間驅動事件的解析度
  • 提高時間驅動事件的準確度
  • 核心定時器能夠以更高的頻度和更高的準確度執行
  • 依賴定時值執行的系統呼叫,如poll( )和select()能夠以更高的精度執行
  • 對諸如資源消耗和系統執行時間等的測量會有更精細的解析度
  • 提高程序搶佔的準確度

系統定時器使用高頻率有哪些缺點?

節拍越高,時鐘中斷頻率越高,系統的負擔越重,中斷處理程式佔用的處理器時間越多,打斷處理器快取記憶體並增加耗電。

jiffies作用是什麼?

記錄自系統啟動以來產生的節拍總數,啟動時,核心將該變數初始化為0,此後,每次時鐘中斷程式增加該變數的值。

如何計算系統執行時間?

一秒內時鐘中斷的次數為HZ,jiffies一秒內增加的值為HZ,系統執行時間(以秒為單位)=jiffies/HZ

jiffies的資料型別為什麼?

無符號長整型

什麼是實時時鐘RTC?

用來持久存放系統時間的裝置,在關閉時,利用主機板上的微型電池提供的電力保持系統計時。

實時時鐘的作用是什麼?

啟動時初始化Xtime變數(牆上時間)

系統定時器的根本思想是什麼?

提供一種週期性觸發中斷機制

時鐘中斷處理程式如何實現?

  • 體系結構相關部分:作為系統定時器的中斷處理程式而註冊到核心,在產生時鐘中斷時執行
  • 體系結構無關部分:由中斷處理程式呼叫

定時器的工作原理是什麼?

先執行初始化操作;然後,設定超時時間,指定超時發生後的執行函式;最後,啟用定時器,指定的函式會在定時器到期時執行,執行完成後自動撤銷。

定時器為什麼會存在競爭條件?

因為定時器和當前執行程式碼時非同步的,所以存在潛在的競爭

如何避免競爭條件發生?

  • 使用mod_timer( )函式來改變定時器的超時時間
  • 使用del_timer_sync( )函式先等待其他定時器處理任務退出再刪除定時器
  • 保護定時器中斷處理程式的共享資料

如何實現定時器?

核心在時鐘中斷髮生後執行定時器,定時器作為軟中斷在下半部的上下文執行。具體來說,就是時鐘中斷處理程式執行update_process_times(),此函式呼叫run_local_timers()函式,接著會呼叫定時器軟中斷函式raise_softirq(Timer_softirq)函式。

在哪些情況下不能執行延時操作?

禁止中斷的程式碼、中斷上半部的上下文和持有鎖的臨界區不能執行延時操作

延遲執行的方法有哪些?

  • 忙等待(忙迴圈)在想要延遲的時間是節拍的整數倍或者精度要求不高的情況下使用。
  • 短延時(mdelay\udelay\ndelay)短暫(小於1ms)等待某個動作完成如與硬體同步的情況下使用.
  • schedule_timeout( )讓需要延遲執行的任務睡眠到大約指定延遲時間後再重新執行