悟空學Linux專欄----第21篇

  今天悟空得到了一個好消息,就是八戒竟然主動邀請他去上課了,這讓悟空很是意外,意外之餘有點小感動。所以悟空一大早就來到了課室,看到八戒正在那裏睡覺。

  悟空:你是豬啊,怎麼還睡啊?

  八戒:猴哥啊,你終於來了,老師說了,你這次再不來上課,我就也不要來了。

  這時達人來了,看到悟空達人很高興,因爲他今晚應該能睡一個好覺了,最近悟空每天晚上都是凌晨來找他,搞得他每晚都沒法睡覺。

  達人:我們開始上課吧,今天我們要講的是Linux內核如何管理高精度定時器的。大家都知道,Linux內核採用紅黑樹來管理高精度定時器。爲了減少多個CPU之間上鎖的問題,Linux內核爲每個CPU定義了自己的高精度定時器,同時每個CPU又根據時間基準不同,定義了三種類型的時間基準,實時時間、啓動時間和單調時間,具體的內核組織方式,我們可以看一下下面這個圖:


  悟空:那麼老師,這裏是不是說每個CPU都有三個紅黑樹呢?

  達人:是的,每個CPU都有自己獨立的hrtimer_cpu_base結構成員,這個和低分辨率的定時器tvec_base結構體成員是一樣的。tvec_base採用了5個雙向鏈表來管理,而高精度定時器採用了三個紅黑樹來管理。

  悟空:老師,tvec_base的五個鏈表之間的定時器遷移比較複雜,那麼這三顆紅黑樹上的定時器遷移又是怎麼處理的呢?

  達人:這三顆樹是彼此獨立的,樹和樹之間沒有定時器的遷移,平時大家用的最多的高精度定時器是實時時間的高精度定時器。

  悟空:哦,原來是這樣啊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章