作業系統設計與實現的乙個重要原則就是策略與機制的分離,其目的是為了提供系統(設計、使用)的靈活性。
文獻1是最早提出了策略(policy)與機制(mechanism)分離原則的。策略(按定義)編碼在使用者級軟體中,該軟體位於核心外部但與核心通訊。核心中提供了實現這些策略的機制。
《operating system concepts》:作業系統設計與實現的乙個重要原則是策略與機制的分離。機制決定如何做(how),而策略決定做什麼(what)。例如,timer結構(見1.4.3節)是一種保護cpu的機制,但是為特定使用者設定多長時間的計時器是由策略決定。
策略與機制分離對於靈活性來說很重要。策略可能會隨著位置或時間的改變而改變。在最壞的情況下,策略的每一次改變都需要底層機制的改變。比較好的情況是有乙個足夠靈活的通用機制,它能夠在一系列策略中發揮作用,策略的改變僅需要重新定義系統的某些引數。例如,考慮一種機制,給予某些型別程式的優先順序高於其他型別程式,如果該機制與策略正確分離,則可以使用它來支援乙個策略決策,即給予i/o密集型程式優先順序應高於cpu密集型程式,也可以用於支援相反的策略。
基於微核心的作業系統(在第2.8.3節中討論過)通過實現一組基本的簡單構造塊,將機制與策略分離發揮到了極致。這些塊幾乎不受策略限制,允許通過使用者建立的核心模組或使用者程式本身新增更高階的機制和策略。相比之下,以windows為例,它是乙個非常流行的商業作業系統,已有30多年的歷史。微軟已經將機制和策略緊密地編碼到系統中,以便在執行windows作業系統的所有裝置上實施全域性的外觀和感覺。全部應用程式具有類似的介面,因為介面本身內置於核心和系統庫中。蘋果在macos和ios作業系統上也採取了類似的策略。
我們可以對商業作業系統和開源作業系統進行類似的比較。例如,將上面討論過的windows與linux進行對比,linux是一種在各種計算裝置上執行的開源作業系統,已經有25年的歷史了。「標準」linux核心有乙個特定的cpu排程演算法(在第5.7.1節中介紹),這是一種支援特定策略的機制。但是,任何人都可以自由修改或替換排程程式以支援不同的策略。
策略決策對所有資源分配都很重要。無論何時,只要決定是否分配資源,就必須作出策略決定。無論何時,只要問題是「如何做」而不是「是什麼」,這就必須要由機制決定。
詳細內容請看:
機制與策略
劉建文 key 機制 策略 方法 方 policy mechanism 作為一名驅動程式的編寫者,你需要在程式設計所需的時間以及驅動程式的靈活性之間選擇乙個可接受的折衷方案。雖然用 靈活 這個詞來形容驅動程式顯得有些奇怪,但我用這個詞實際上是強調裝置驅動程式的作用在於提供機制 mechanism 而...
架構策略與原則
最近有不少的文章關注企業架構的角色及其與業務戰略對齊的重要性。引用chris curran的描述 在企業架構戰略 艱苦摸索而得的16條經驗的討論中,curran寫到 業務部門與it夥伴之間良好的可靠與信賴能夠 ea是否成功。可靠性通常能夠通過開展聯合的戰略計畫工作來獲得,每次乙個專案。curran接...
Linux下驅動 分層 分離機制學習筆記
一 分層 分離的概念 分層即把硬體相關和相對穩定的東西給抽出來,並向上提供統一的介面,每一層專注於自己的事情,比如輸入子系統。後續文章中會繼續介紹相關例子 分離即把硬體相關和相對穩定的東西給分離開來,實際上即是bus dev drv模型 平台匯流排 平台裝置 平台驅動 本文章中的led驅動即使用了此...