Linux系統中C語言程式設計的硬體和GLibC庫細節的實現

來源:互聯網
上載者:User
關鍵字 硬體 C語言 Linux GLibC庫

熟悉了基本的程式設計方法之後,我們的興趣就在於,電腦如何實現這一切的呢? 在那些應用層 API 和底層系統硬體之間,作業系統和庫函數究竟做了些什麼?

首先看下 Linux 時間處理的一般過程:

圖 1. 時間處理過程





應用程式部分已經在第一部分詳細介紹過了,在第二部分我將介紹硬體和 GlibC 相關實現的一些概況。

硬體

PC 機裡常見的時鐘硬體有以下這些。

RTC (Real Time Clock,系統時鐘)

人們需要知道時間的時候,可以看看鐘錶。 電腦系統中鐘錶類似的硬體就是外部時鐘。 它依靠主機板上的電池,在系統斷電的情況下,也能維持時鐘的準確性。 電腦需要知道時間的時候,就需要讀取該時鐘。

在 x86 體系中,這個時鐘一般被稱為 Real Time Clock。 RTC 是主機板上的一個 HTTP://www.aliyun.com/zixun/aggregation/19282.html">CMOS 晶片,比如 Motorola 146818,該晶片獨立于 CPU 和其他晶片,可以通過 0x70 和 0x71 埠操作 RTC。 RTC 可以週期性地在 IRQ 8 上觸發中斷,但精度很低,從 2HZ 到 8192HZ。

以 Motorola 146818 為例,軟體可以通過 I/O 指令讀寫以下這些值:

圖 2. Motorola 146818





可以看到,RTC 能提供精確到秒的即時時間值。

TSC (Time Stamp Counter)

CPU 執行指令需要一個外部振盪器產生時鐘信號,從 CLK 管腳輸入。 x86 提供了一個 TSC 寄存器,該寄存器的值在每次收到一個時鐘信號時加一。 比如 CPU 的主頻為 1GHZ,則每一秒時間內,TSC 寄存器的值將增加 1G 次,或者說每一個納秒加一次。 x86 還提供了 rtdsc 指令來讀取該值,因此 TSC 也可以作為時鐘設備。 TSC 提供了比 RTC 更高精度的時間,即納秒級的時間精度。

PIT (Programmable Interval Timer)

PIT 是 Programmable Interval Timer 的縮寫,該11585.html">硬體設備能定時產生中斷。 早期的 PIT 設備是 8254,現在多數可以集成在 Intel 的 I/O Control Hub 電路中,可以通過埠 0x40~0x43 訪問 PIT。 系統利用 PIT 來產生週期性的時鐘中斷,時鐘中斷通過 8259A 的 IRQ0 向 CPU 報告。 它的精度不高,其入口 clock 的頻率為 1MHz,理論上能產生的最高時鐘頻率略小於 0.5MHz。 實際系統往往使用 100 或者 1000Hz 的 PIT。

HPET (High Precision Event Timer)

PIT 的精度較低,HPET 被設計來替代 PIT 提供高精度時鐘中斷(至少 10MHz)。 它是由微軟和 Intel 17872.html">聯合開發的。 一個 HPET 包括了一個固定頻率的數值增加的計數器以及 3 到 32 個獨立的計時器,這每一個計時器有包涵了一個比較器和一個寄存器(保存一個數值,表示觸發中斷的時機)。 每一個比較器都比較計數器中的數值和寄存器中的數值,當這兩個數值相等時,將產生一個中斷。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.