策略與機制相分離的本質是什么 分層邏輯策略是針對問題域問題解決得邏輯描述。是設計。是形而上的。機制是對策略的實現,可以有多種方法,不同的機制可以實現同樣的策略,是形而下的。
軟件是策略,硬件是機制。
授權是策略,訪問控制是機制。
命令是策略,實施是機制。
宏觀是策略,微觀是機制。
戰略是策略,戰術是機制
案例如:在控制系統復雜度的一種重要方法就是把策略從機制中分離出來。通過使大多數存儲管理器作為用戶級進程運行,就可以把該原則應用到存儲管理中。在Mach(Young 等人,1987)中首先應用了這種分離。下面的討論基本上是基於Mach的。
一個如何分離策略和機制的簡單例子可以參見圖3-30。
其中存儲管理系統被分為三個部分:
1) 一個底層MMU處理程序。
2) 一個作為內核一部分的缺頁中斷處理程序。
3) 一個運行在用戶空間中的外部頁面調度程序。
所有關於MMU工作的細節都被封裝在MMU處理程序中,該程序的代碼是與機器相關的,而且操作系統每應用到一個新平台就要被重寫一次。缺頁中斷處理程序是與機器無關的代碼,包含大多數分頁機制。策略主要由作為用戶進程運行的外部頁面調度程序所決定。
策略與機制分離
當一個進程啟動時,需要通知外部頁面調度程序以便建立進程頁面映射,如果需要的話還要在磁盤上分配后備存儲。當進程正在運行時,它可能要把新對象映射到它的地址空間,所以還要再一次通知外部頁面調度程序。一 旦進程開始運行,就有可能出現缺頁中斷。缺頁中斷處理程序找出需要哪個虛擬頁面,並發送一條消息給外部頁面調度程序告訴它發生了什么問題。外部頁面調度程 序從磁盤中讀入所需的頁面,把它復制到自己的地址空間的某一位置。然后告訴缺頁中斷處理程序該頁面的位置。缺頁中斷處理程序從外部頁面調度程序的地址空間 中清除該頁面的映射,然后請求MMU處理程序把它放到用戶地址空間的正確位置,隨后就可以重新啟動用戶進程了。
這個實現方案沒有給出放置頁 面置換算法的位置。把它放在外部頁面調度程序中比較簡單,但會有一些問題。這里有一條原則就是外部頁面調度程序無權訪問所有頁面的R位和M位。這些二進制 位在許多頁面置換算法起重要作用。這樣就需要有某種機制把該信息傳遞給外部頁面調度程序,或者把頁面置換算法放到內核中。在后一種情況下,缺頁中斷處理程 序會告訴外部頁面調度程序它所選擇的要淘汰的頁面並提供數據,方法是把數據映射到外部頁面調度程序的地址空間中或者把它包含到一條消息中。兩種方法中,外 部頁面調度程序都把數據寫到磁盤上。這種實現的主要優勢是有更多的模塊化代碼和更好的適應性。主要缺點是由於多次交叉“用戶-內核”邊界引 起的額外開銷,以及系統模塊間消息傳遞所造成的額外開銷。現在看來,這一主題有很多爭議,但是隨着計算機越來越快,軟件越來越復雜,從長遠來看,對於大多 數實現,為了獲得更高的可靠性而犧牲一些性能也是可以接受的。
不知博客源頭在哪里,作者請私信!