機制與策略

2021-04-30 15:38:12 字數 3184 閱讀 4180

劉建文(

key:機制 策略 方法 方** policy mechanism

作為一名驅動程式的編寫者,你需要在程式設計所需的時間以及驅動程式的靈活性之間選擇乙個可接受的折衷方案。雖然用「靈活」這個詞來形容驅動程式顯得有些奇怪,但我用這個詞實際上是強調裝置驅動程式的作用在於提供機制( mechanism ),而不是提供策略( policy ) o區分機制和策略是unix設計背後隱含的最好思想之一。大多數程式設計問題實際上都可以分成兩部分:「需要提供什麼功能」(機制)和「如何使用這些功能」(策略)。如果這兩個間題由程式的不同部分來處理,或者甚至由不同的程式來處理,則這個軟體包更容易開發,也更容易根據需要來調整。

機制就是提供的功能,比如在驅動程式的編寫中,你要提供怎樣和硬體交流的方式,這就叫機制。 而策略則是指你怎樣去使用已有的機制完成你自己的特定的功能,比如在驅動程式的編寫中,你該怎樣去利用硬體機制完成特定的功能。

不僅僅在驅動方面,在很多,如網路安全方面都有相應的概念。

現代的os很講求機制與策略的分離,以使作業系統的結構和實現能夠在一定範圍內適應不同的應用需要。例如,solaris的排程器實現了程序排程的基本機制,同時它允許通過動態排程核心引數實現不同負載下的系統平衡,這就是一種機制與策略的分離,請再舉出乙個例子說明怎樣根據排程將機制策略分開,請構造一種機制,允許父程序控制子程序的排程策略,謝謝高手指教,給出**也可以

程序的概念是作業系統的核心,是出了名的(notoriously)難定義。一種粗淺的理解是,程序是程式的一次動態執行,是程式完成 一次任務所需的資源的載體。我們可以把程序比喻成在戲劇院表演獨角戲的演員,對於演員,舞台小道具就是他的資源。當演員需道具時,他到道具管理處(相當操 作系統的資源分配程式)申請。由於資源是對所有演員共享的,管理處的工作就是當多個演員申請道具時代為解決資源競爭問題,滿足兩個衝突的目標:

kemin:由於各種資源(包括包裝過的高階資源)的性質不一,所以對它們的[管理]方式都不一樣的,從管理手段的名稱就可看出這一 點,處理器是[排程]的,主存是[分配]的。但從完成管理功能的高度看,它們都有實現管理的部分和如何管理的部分,實現管理就是機制問題,如何管理就是策 略問題。比如,處理器的排程機制(必須有timer和程序切換指令等體系功能的支援)和排程策略。

b.一直奇怪「策略」和「戰略」是什麼東東,原來它們還是方法和工具!今天發現經常與「策略」一起的「機制」一樣是方法和工具。只是這兩對方法在描述方法的不同側面。策略與戰略是整體與區域性的關係,策略與機制是動態與靜態的關係。機制有機械的意思,機械意味著固定和自動,所謂應變機制指的是應對變化有一套固定被測定為較好自動處理方法。策略是在機制的基礎上再作具體問題具體方法調整。舉個例子,計算機為了實現併發處理引入了中斷機制;而為了解決速度不同的中斷事件引入了中斷優先順序處理策略。 2009-5-11 12:06

b.機制有機械機理的意思。但相對機理強調內部結構和元件間序關係不同,我覺得人工機制強調的是系統面對外部事件時應變規則。這個有點像程式設計時的分支流程,也就是先判斷乙個條件事件,然後自動選擇一條最有效的處理分支,產生乙個最有價值的效果。我們在設計乙個人工機制時,就是對這些分支的設計,包括評價各分支的效益。 2009-5-11 20:07

b.其實機制和策略算是設計理論方面的內容。對於應用或驅動開發人員來說還不算合適,因為設計任務一般是統籌工作,屬於系統設計人員的職責。開發人員一般在乙個大框架內演繹,可設計可程式設計可演繹的空間很有限的,不是說沒有設計。比如,別說開發人員,系統設計師也不會設計乙個新的併發機制現有的中斷機制,他們對中斷優先順序策略的調整也是很有限的。而應用開發人員更多在做一些更具體更特殊的收尾工作。 2009-5-12 2:51

2009-7-9 18:57:30 b.同是核心,卻會有單核心和微核心的不同的實現形式,我們假設二種形式的核心的功能都是相同的,那構造方法卻不同,這意味什麼呢?相同的功能說明機制一樣,構造方法不同是策略不同?

2009-7-9 20:27:58 b.其實機制就是一種由能量驅動的刺激與反射活動的概括,也就是我常常談的性質、屬性、功能或作用。抽出乙個與機制相對概念--策略是因為我們從改造的視角,想當一回上帝,主觀地改造世界的原因。我們為一些外界環境約束(人為的或自然的)人工地製造性質、功能和作用。策略就是為了滿足不同的約束的一種方法。

2009-7-9 22:27:58 b.前面說過,機制和策略都是一種方法,現在又說機制是一種人造性質,貌似前後矛盾,因為方法是時間性的,而性質則是空間性的。的確表述上存在不清晰,要談到方法一定會涉及工作任務,因為方法指是工作的步驟。我們舉乙個例子來理解。比如我們說人是會跑的,會跑是上帝賦於人的活動機制,是人的一項性質;而我們說某人能從甲地跑到乙地花時一天,這是說某人利用會跑的機制完成一件工作,但是完成這件工作的過程中會遇種情況,比如上山下海,比如半路發現有公路可使用自行車更快的到達乙二等諸多的環境約束,那麼策略就是用來解決過程所出現的各約束的。

由上面的頭腦風暴,我們大概了解機制和策略的一些「性質」了。但不完全。第一,為什麼要引入機制,為誰引入機制?機制都是由設計師為[系統]設計的性質和功能。系統本身就是一項產品。

第二,如果策略是基於機制的如何,那麼具體表現是什麼?我們知道會跑與跑完是不同的,前者是機制,後者機制做功,策略就存在於做功的過程中。要理解策略,得先弄清楚系統機制做功過程的本質。

我們常說功能功能,嚴格上說,功與能是有密切的關係,但不是同乙個概念。「能」強調的是系統靜態性質;而「功」則強調動態的活動性,有時間因素。「功」是系統在一定時間內的活動效果,是建立於系統的某一「能」上的活動,活動過程有能量釋放。到這裡,雖然區分了功與能的差別,但因為「功」的過程本質沒有釐清,所以策略也很模糊。

請看看一則關於「系統做功」引用:

系統首先強調的是事物間的相互制約的結構,其次系統與邊界的互動。因為系統不僅存以於靜態的空間中,而且還存在於時間中,被時間向前推動,不斷地[做功](無論是被動還是主動的)。[做功]是一種條件反射現象,過程有能量的單方向釋放。有些觀點認為,系統與系統邊界有著物質、能量和資訊的交換。我認為,第一,能量是始終存在於動態的時空中的,它是預設的,不必特指;第二,物質可泛化為資訊的一種(通過定義[資訊]為做功的[輸入])。所以系統與系統邊界協作[做功]可以簡化為只通過交換[資訊]完成。

從以上的論述可得到,如果撇開主觀性,其實存在於時空中的系統都在時時刻刻做著功。新增主觀性後,我們有意限制系統做功,為我們做有益的功。功就是功效,一種新的狀態輸出,所以,功在不同環境和場合有不同型別;不過做功都要有一定的輸入(資訊或物質)和都在乙個特定的上下文環境下完成的。俗話說:「方法好就事半功陪「,這個方法、事和功都一般的;事就是做功的上下文,方法就是策略!

Redis LRU記憶體淘汰機制與過期策略

redis使用過期策略 惰性刪除 定期刪除缺略 定期刪除 缺點 難點 如果redis 記憶體滿了怎麼辦?1.增加記憶體 2.使用記憶體淘汰策略 redis 配置檔案redis.conf 的maxmemory引數 可以去控制器記憶體大小 如果超過了 maxmemory的設定記憶體大小,那麼淘汰策略 m...

學習筆記 策略與機制分離原則

作業系統設計與實現的乙個重要原則就是策略與機制的分離,其目的是為了提供系統 設計 使用 的靈活性。文獻1是最早提出了策略 policy 與機制 mechanism 分離原則的。策略 按定義 編碼在使用者級軟體中,該軟體位於核心外部但與核心通訊。核心中提供了實現這些策略的機制。operating sy...

redis過期策略與記憶體淘汰機制總結

redis常用於有時間限制的資料儲存,可以在set key的時候給乙個expire time 過期時間 通過設定過期時間可以指定這個key可以存活的時間,那麼設定的過期時間到了後,redis是怎麼對過期的key進行刪除的呢?下面分別從redis過期策略和記憶體淘汰機制說起 定期刪除 redis預設每...