在Linux的0號中斷是一個定時器中斷。在固定的時間間隔都發生一次中斷,也是說每秒發生該中斷的頻率都是固定的。該頻率是常量HZ,該值一般是在100 ~ 1000之間。該中斷的作用是為了定時更新系統日期和時間,使系統時間不斷地得到跳轉。另外該中斷的中斷處理函數除了更新系統時間外,還需要更新本地CPU統計數。指的是調用scheduler_tick遞減進程的時間片,若進程的時間片遞減到0,進程則被調度出去而放棄CPU使用權。
Linux的OS時鐘的物理產生原因是可編程定時/計數器產生的輸出脈沖,這個脈沖送入CPU,就可以引發一個中斷請求信號,我們就把它叫做時鐘中斷。
“時鐘中斷”是特別重要的一個中斷,因為整個操作系統的活動都受到它的激勵。系統利用時鐘中斷維持系統時間、促使環境的切換,以保證所有進程共享CPU;利用時鐘中斷進行記帳、監督系統工作以及確定未來的調度優先級等工作。可以說,“時鐘中斷”是整個操作系統的脈搏。
時鐘中斷的物理產生如圖所示:

操作系統對可編程定時/計數器進行有關初始化,然后定時/計數器就對輸入脈沖進行計數(分頻),產生的三個輸出脈沖Out0、Out1、Out2各有用途,很多接口書都介紹了這個問題,我們只看Out0上的輸出脈沖,這個脈沖信號接到中斷控制器8259A_1的0號管腳,觸發一個周期性的中斷,我們就把這個中斷叫做時鐘中斷,時鐘中斷的周期,也就是脈沖信號的周期,我們叫做“滴答”或“時標”(tick)。從本質上說,時鐘中斷只是一個周期性的信號,完全是硬件行為,該信號觸發CPU去執行一個中斷服務程序,但是為了方便,我們就把這個服務程序叫做時鐘中斷。
IBM PC中使用的是8253或8254芯片。有關該芯片的詳細知識我們不再詳述,只大體介紹以下它的組成和作用,如下表5.1所示:
表 8253/8254的組成及作用
| 名稱 | 端口地址 | 工作方式 | 產生的輸出脈沖的用途 |
| 計數器0 | 0x40 | 方式3 | 時鐘中斷,也叫系統時鐘 |
| 計數器1 | 0x41 | 方式2 | 動態存儲器刷新 |
| 計數器2 | 0x42 | 方式3 | 揚聲器發聲 |
| 控制寄存器 | 0x43 | / 學習交流
熱門圖片
猜你喜歡的新聞
新聞熱點 2019-10-23 09:17:05
2019-10-21 09:20:02
2019-10-21 09:00:12
2019-09-26 08:57:12
2019-09-25 08:46:36
2019-09-25 08:15:43
疑難解答 |