非共享結構

非共享結構

系統中的各種硬體資源和軟體資源,均可用數據結構抽象地描述其資源特性,即用少量信息和對該資源所執行的操作來表征該資源,而忽略了它們的內部結構和實現細節。一般分為共享結構(共享數據結構)和非共享結構(非共享數據結構)。利用共享數據結構抽象地表示系統中的共享資源。非共享結構抽象地表示系統中的非共享資源。

簡介

非共享結構抽象地表示系統中的非共享資源。這裡資源可以是硬體資源和軟體資源。典型非共享硬體資源如獨占設備。非共享軟體資源有很多,如作業系統的進程管理程式,中斷處理程式,非已分享檔案,一些程式中功能模組。對於非共享結構,沒有一個作業系統的資源管理模組,主要是功能的多樣化。但對於共享數據結構,由代表共享資源的數據結構,以及由對該共享數據結構實施操作的一組過程所組成的資源管理程式,共同構成了一個作業系統的資源管理模組,稱之為管程。

數據結構

數據結構是計算機存儲、組織數據的方式。數據結構是指相互之間存在一種或多種特定關係的數據元素的集合。通常情況下,精心選擇的數據結構可以帶來更高的運行或者存儲效率。數據結構往往同高效的檢索算法和索引技術有關。

數據結構的形式定義為:數據結構是一個二元組DS=(D,R),其中:D是數據元素的有限集,R是D上關係的有限集。若在數據結構的定義中出現本身的名,則稱為遞歸的結構。數據結構的概念是N.沃思(N.Wirth)和C.A.R.霍爾(C.A.R.Hoare)在1966年首先提出的。在傳統的程式設計語言(如PASCAL、C++等)中,定義數據結構的基本途徑是採用數據類型,如整型、字元型、布爾型或實型等。在面向對象程式設計語言中,根據抽象數據類型理論,程式是將數據結構的邏輯結構和它的運算操作在一起定義的,並封裝成一個整體。

根據不同的方法,可構造不同的數據結構。在程式設計中常用的數據結構有:①表結構:包括線性表、棧、佇列、字元串、數組等。結構中元素之間存在一對一的關係,依次排列形成一條“鎖鏈”;②樹結構:結構中元素之間存在一對多的關係,具有分支、層次特性;③圖結構:結構中元素之間存在多對多的關係,任何兩個元素都可以鄰接;④檔案:檔案中任何兩個元素間都沒有邏輯關係,組織形式鬆散。

每一數據結構都有邏輯的和物理的兩個側面。數據結構的邏輯描述,稱為數據的邏輯結構;數據在物理介質上的表示,稱為物理結構或存儲結構。

數據結構按其狀態特性可分為靜態和動態兩類。靜態結構是在整個使用期間其大小保持不變的數據結構,而動態結構是在程式執行過程中大小有變化的數據結構。

獨占設備

是指在一段時間內只允許一個用戶(進程)訪問的設備,即臨界資源。因而,對多個並發進程而言,應互斥地訪問這類設備。系統一旦把這類設備分配給了某進程後,便由該進程獨占,直至用完釋放。應當注意,獨占設備的分配有可能引起進程死鎖。與之相反是共享設備。這是指在一段時間內允許多個進程同時訪問的設備。當然,對於每一時刻而言,該類設備仍然只允許一個進程訪問。顯然,共享設備必須是可定址的和可隨機訪問的設備。典型的共享設備是磁碟。對共享設備不僅可獲得良好的設備利用率,而且它也是實現檔案系統和資料庫系統的物質基礎。

管程

管程 (Monitors,也稱為監視器) 是一種程式結構,結構內的多個子程式(對象或模組)形成的多個工作執行緒互斥訪問共享資源。這些共享資源一般是硬體設備或一群變數。Hansan 為管程所下的定義是: “一個管程定義了一個數據結構和能為並發進程所執行(在該數據結構上)的一組操作,這組操作能同步進程和改變管程中的數據” 。由上述的定義可知,管程由四部分組成:① 管程的名稱;② 局部於管程內部的共享數據結構說明;③ 對該數據結構進行操作的一組過程;④ 對局部於管程內部的共享數據設定初始值的語句。

管程實現了在一個時間點,最多只有一個執行緒在執行管程的某個子程式。與那些通過修改數據結構實現互斥訪問的並發程式設計相比,管程實現很大程度上簡化了程式設計。

管程是一種程式設計語言結構成分,它和信號量有同等的表達能力,從語言的角度看,管程主要有以下特性:

(1) 模組化。管程是一個基本程式單位,可以單獨編譯。

(2) 抽象數據類型。管程中不僅有數據,而且有對數據的操作。

(3) 信息掩蔽。管程中的數據結構只能被管程中的過程訪問,這些過程也是在管程內部定義的, 供管程外的進程調用, 而管程中的數據結構以及過程(函式)的具體實現外部不可見。

相關詞條

熱門詞條

聯絡我們