發布時間:2023-04-28 作者: 來源: 閱讀量:0
時鐘不僅對整個計算機系統的實現是重要的,對理解操作系統的理論同樣很重要,計算機的很多活動都是通過定時測量來驅動的,計算機系統的定時測量功能對用戶通常是不可見的。例如,熒幕保護功能的實現,就是利用定時器。我們可以讓操作系統的內核跟蹤用戶最后一次按鍵或移動鼠標后經過了多少時間,如果這個時間達到一個用戶設定的閾值,熒幕會自動進入被保護狀態。
計算機中當前時間顯示功能、實時通訊程序等與時間相關的軟件都需要時鐘機制的支持。
大部分PC機中至少有兩個時鐘源,分別叫做RTC時鐘和OS時鐘。RTC時鐘也叫CMOS時鐘,是一塊時鐘芯片,靠電池供電,為計算機提供計時標準,是最原始、最底層的數據。OS時鐘產生于PC主板上的定時/計數芯片,在開機時有效,由OS控制。
計算機開機加電后,操作系統通過BIOS獲取當前RTC時鐘的值作為系統的初始時間,操作系統初始化后啟用自己的時鐘硬件,通常叫做可編程間隔定時器,PIT可以按照一定的頻率產生時鐘中斷,以告知內核又一個時間間隔過去了。
操作系統內核需要完成兩種主要的定時測量,一是保存當前的日期和時間,以便能通過系統調用把它們返回給用戶程序,讓用戶程序獲得當前的日期和時間。也可以由內核本身把當前時間作為檔和網絡包的時間戳。二是維持定時器,這種機制能夠告訴內核或用戶程序某一時間間隔已經過去了。操作系統依靠時鐘硬件(可編程間隔定時器)和時鐘驅動程序完成上述兩種定時測量功能。
可編程間隔定時器的功能是按指定的時間間隔產生時鐘中斷,測量逝去的時間,并觸發與時間有關的操作。主要由三部分構成:晶振、計數器、保持寄存器。
每產生一次時鐘中斷信號,操作系統內核要執行時鐘中斷處理程序,時鐘中斷處理程序完成諸如下述功能:
維護日期、時間;遞減時間片并檢查是否為零,防止進程運行超時;對CPU的使用情況記帳;遞減報警計數器。
在早期的時間片輪轉調度算法中,系統將所有的就緒進程按先來先服務的原則,排成一個隊列,每次調度時把CPU分配給隊首進程,并令其執行一個時間片,當時間片用完時,調度程序終止當前進程的執行,并將它送到就緒隊列的隊尾。時間片是一個較小的時間單元,通常為10ms到100ms?,F在很多操作系統內核對一般的分時進程采取的時間片調度策略是:從就緒隊列中選擇優先權大的進程,為其分配CPU后,令其運行一個時間片。
時間片調度算法的思想很簡單,但是其實現需要硬件和軟件的互相配合。我們在理解時鐘機制的基礎上,盡量簡單地說明時間片輪轉調度的實現過程。
在進程的控制塊中設置記錄進程在CPU上剩余運行時間的字段,在進程處于執行態的過程中,每當產生時鐘中斷信號時,內核執行時鐘中斷處理程序,在中斷處理過程中對當前進程的進程控制塊中記錄剩余執行時間的變量做遞減操作,檢測遞減后的值是否為零,當檢測到該變量值為零時轉進程調度程序,重新進行CPU的分配。由此可見,實現時間片輪轉調度在硬件上需要可編程中斷控制器、可編程間隔定時器的支持,內核在軟件實現上需要設置記錄進程在CPU上運行的剩余時間值、實現時鐘中斷的處理程序。