linux 定時器和時間管理 自學筆記

來源:互聯網
上載者:User

系統定時器是一種可程式化硬體晶片,它能以固定頻率產生中斷。該中斷就是所謂的定時器中斷。該頻率可以通過編程預定,稱為節拍率(tickrate).

 

全域變數jiffies用來記錄自系統啟動以來產生的節拍的總數,總是無符號長整數(unsignedlong),在32位體繫結構上是32位,在64位體系就是64位。用volatile表示。

 

核心可以使用宏jiffies_to_clock_t()將一個由HZ表示的節拍計數轉換成一個由USER_HZ表示的節拍數。

 

系統時鐘(RTC)是用來持久存放系統時間的裝置,即使系統關閉後,它也可以靠主板上的微型電池提供的電力保持系統的計時。

 

進程的核心或者使用者時間是根據時鐘中斷髮生時,處在使用者或核心態而決定的。不太準確。

 

定時器,由結構time_list表示。核心可以保證不會再逾時時間到期前運行定時器的處理常式,但是有可能延誤定時器的執行。 mod_timer()會啟用這個定時器,如果調用時定時器未被啟用,該函數返回0,否則返回1。del_timer()可以用在被啟用或未被啟用的定時 器都可以使用這個函數,如果沒有啟用,函數返回0,否則返回1。不需要對已經逾時的定時器調用該函數。在多處理器上,可以用 del_timer_sync.

核心將定時器按它們的逾時時間劃分為5組,分塊處理策略。當定時器逾時時間接近時,定時器將隨組一起下移。

 

udelay,mdelay 都是忙迴圈將任務延遲到指定的微秒後運行。用loops_per_jiffy,可以從檔案/proc/cpuinfo 中讀到它 。減少使用它們,因為比較佔用資源。

 

set_current_state(TASK_INTERRUPTIBLE or TASK_UNINTERRUPTIBLE) 和schedule_timeout(s*HZ),讓任務延遲s秒工作。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.