軟定時器
時鐘又稱為定時器,負責維護時間,防止程序壟斷cpu。
時鐘由三個部件構成:晶體振盪器、計數器和儲存暫存器。晶體振盪器產生精確地週期性訊號,該訊號通過電路被傳送給計數器,當計數器變為0時就產生乙個cpu中斷。
可程式設計時鐘的優勢在於中斷頻率可以由軟體控制,它有不同的操作模式
完成模式
在一次完成模式下,當時鐘啟動時,它把儲存暫存器的值複製到計數器中。然後,來自晶體的每乙個脈衝使計數器減1,當計數器變為0時,產生乙個中斷,並停止工作,直到軟體再一次顯式地啟動它。
方波模式
在方波模式下,當計數器變為0並且產生中斷後,儲存暫存器的值自動複製到計數器中,並且整個過程無限期地再次重複下去,這些週期性的中斷稱為時鐘滴答。
時鐘硬體所做的全部工作是根據已知的時間間隔產生中斷,而涉及時間的其他所有工作都必須由軟體——時鐘驅動程式完成。它的任務大多情況下為:
維護日時間。
防止程序超時執行。
對cpu使用情況記賬。
處理使用者程序提出的alarm系統呼叫。
為系統本身各部分提供監視定時器。
完成概要剖析、監視和統計資訊收集。
即維持實際時間,在每個時鐘滴答將計數器加1即可實現。但要注意位溢位,可以通過三種方法解決:
使用64位計數器:缺點是維護代價較高。
以秒為單位代替時鐘滴答:需要使用輔助計數器記錄時鐘滴答。
對時鐘滴答計數:相對於系統引導時間而不是固定外部時間。
每當啟動乙個程序時,排程程式就將乙個計數器初始化為以時鐘滴答為單位的該程序時間片的取值。每次時鐘中斷時,時鐘驅動程式將時間片計數器減1。當計數器變為0時,時鐘驅動程式呼叫排程程式啟用另乙個程序。
每當乙個程序啟動時,便啟動乙個不同於主系統定時器的輔助定時器。當程序終止時,讀出這個定時器的值就可以直到該程序執行了多長時間。為了精確記賬,當中斷發生時,需要將輔助定時器儲存起來,並在中斷結束後恢復。
程序可以請求作業系統在一定時間間隔之後向它報警,經常被用於網路資料報超時重發中。
如果時鐘驅動程式沒有足夠的時鐘處理每個請求,就必須使用乙個物理時鐘模擬多個虛擬時鐘。解決方法是,維護一張表,將所有未完成的定時器的訊號時刻記入表中,還要維護乙個變數給出下乙個訊號的時刻。當日時間更新時,時鐘驅動程式進行檢查了解最近訊號是否已經發生,並搜尋下乙個要發生的訊號時刻。
在時鐘中斷期間,時鐘驅動程式需要:將實際時間增加1,將時間片減1並檢查是否為0,對cpu記賬,將報警計數器減1.
軟定時器避免了中斷。無論何時當核心因某種原因在執行時,在它返回到使用者態之前,都要檢查實時時鐘以了解軟定時器是否到期。如果已經到期,則執行被排程事件而無需切換到核心態,因為系統已經在核心態。在完成工作後,軟定時器復位。
軟定時器會因為以下原因進入核心的頻率而波動:
系統呼叫
tlb未命中
頁面故障
i/o中斷
cpu變空閒
在一段時間內可能不存在以上行為,沒有軟定時器鬧響,為了在這些時間間隔上設定乙個最大值,可以將軟定時器設定為每隔一定時間鬧響一次。
作業系統(9) CPU時鐘
經常我們在一些演算法題或一些調優教程中,會看到時鐘的概念,那麼什麼是cpu時鐘呢?今天我們就來扒一扒。首先,計算機中根本沒有鐘這個物體,只有晶振。通常人們說的時鐘頻率就是晶振的頻率,這個引數與具體使用的晶振有關,就好像你不能直接問我電阻有多大,這要看具體是什麼電阻。處理器晶元是在特定的時鐘頻率下進行...
作業系統 作業系統介面
介面表現為函式呼叫,由作業系統提供,連線作業系統和應用軟體。出於安全性考慮,應用程式不能直接在記憶體中任意訪問 將核心程式和使用者程式隔離 通過比較訪問資料段cpl和rpl的特權級和當前段dpl的特權級之間的關係 應用程式呼叫庫函式printf printf呼叫庫中的write函式 write將函式...
作業系統(作業系統引論)
方便性 方便使用者進行操作計算機 有效性提高系統資源的利用率 提高系統的吞吐量,加速程式的執行 可擴充性 方便地增添新的模組和功能,以及對原有的功能模組進行修改 開放性能夠遵循世界標準規範 os作為使用者和計算機硬體系統之間的介面 使用者能夠通過作業系統來使用計算機系統 os作為計算機資源的管理者 ...