歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 時鐘管理

Linux 時鐘管理

日期:2017/2/28 16:32:43   编辑:Linux教程

簡介: 時鐘管理是操作系統不可或缺的一個重要組成部分。無論是應用程序還是內核本身都在大量使用各種各樣的timer。本文介紹了Linux操作系統曾經使用和現在正在使用的時鐘管理機制,著重闡述了內核時鐘子系統的整體架構以及在x86平台上的應用。

Linux 中的定時器

在 Linux 內核中主要有兩種類型的定時器。一類稱為 timeout 類型,另一類稱為 timer 類型。timeout 類型的定時器通常用於檢測各種錯誤條件,例如用於檢測網卡收發數據包是否會超時的定時器,IO 設備的讀寫是否會超時的定時器等等。通常情況下這些錯誤很少發生,因此,使用 timeout 類型的定時器一般在超時之前就會被移除,從而很少產生真正的函數調用和系統開銷。總的來說,使用 timeout 類型的定時器產生的系統開銷很小,它是下文提及的 timer wheel 通常使用的環境。此外,在使用 timeout 類型定時器的地方往往並不關心超時處理,因此超時精確與否,早 0.01 秒或者晚 0.01 秒並不十分重要,這在下文論述 deferrable timers 時會進一步介紹。timer 類型的定時器與 timeout 類型的定時器正相反,使用 timer 類型的定時器往往要求在精確的時鐘條件下完成特定的事件,通常是周期性的並且依賴超時機制進行處理。例如設備驅動通常會定時讀寫設備來進行數據交互。如何高效的管理 timer 類型的定時器對提高系統的處理效率十分重要,下文在介紹 hrtimer 時會有更加詳細的論述。

內核需要進行時鐘管理,離不開底層的硬件支持。在早期是通過 8253 芯片提供的 PIT(Programmable Interval Timer)來提供時鐘,但是 PIT 的頻率很低,只能提供最高 1ms 的時鐘精度,由於 PIT 觸發的中斷速度太慢,會導致很大的時延,對於像音視頻這類對時間精度要求更高的應用並不足夠,會極大的影響用戶體驗。隨著硬件平台的不斷發展變化,陸續出現了 TSC(Time Stamp Counter),HPET(High Precision Event Timer),ACPI PM Timer(ACPI Power Management Timer),CPU Local APIC Timer 等精度更高的時鐘。這些時鐘陸續被 Linux 的時鐘子系統所采納,從而不斷的提高 Linux 時鐘子系統的性能和靈活性。這些不同的時鐘會在下文不同的章節中分別進行介紹。

Copyright © Linux教程網 All Rights Reserved