計算機作業系統程序同步與互斥基本理論及問題研究

2023-02-10 19:15:04 字數 3806 閱讀 6683

摘要 在os中引入程序後,雖然提高了資源的利用率和系統的吞吐量,但由於程序的非同步性,也會給系統造成混亂,尤其是在他們徵用臨界資源時。程序同步包括程序的同步與程序的互斥兩個方面。程序同步的主要任務是對多個相關程序在執行次序上進行協調,以使併發執行的諸程序之間能有效的共享資源和相互合作,從而使程式的執行具有可再現性。

關鍵詞程序同步、互斥訊號量同步問題

正文一、 關於程序同步的基本理論

1、 程序同步與互斥概念

同步:指多個程序中發生的事件存在著某種時序關係,他們必須按規定時序執行,以共同完成一項任務。如:4*100接力賽、工廠的流水線、商品的入庫和出庫等。

互斥:多個程序不能同時使用同一資源。如:幾個同學去圖書館借同一本書、交叉路口搶車道、爭搶籃板球等。

2、 臨界資源與臨界區的概念

臨界資源:一次僅允許乙個程序使用的資源。許多硬體資源如印表機、磁帶機等,都屬於臨界資源,諸程序間應採取互斥方式,實現對這種資源的共享。

臨界區:不論是硬體臨界資源,還是軟體臨界資源,多個程序必須互斥的它進行訪問。人們把在每個程序中訪問臨界資源的那段**稱為臨界區

3、 同步機制應遵循的規則

為實現程序互斥地進入自己的臨界區,可用軟體方法,更多的是在系統中設定專門的同步機構來協調各程序間的執行。所有同步機制都應遵循下述四條準則:

1】 空閒讓進。當無程序處於臨界區時,表明臨界資源處於空閒狀態,應允許乙個請求進入臨界區的程序立即進入自己的臨界區,以有效地利用臨界資源。

2】 忙則等待。當已有程序進入臨界區時,表明臨界資源正在被訪問,因而其它試圖進入臨界區的程序必須等待,以保證對臨界資源的互斥訪問。

3】 有限等待。對要求訪問臨界資源的程序,應保證在有限時間內能進入自己的臨界區,

以免陷入「死等」狀態。

4】讓權等待。當程序不能進入自己的臨界區時,應立即釋放出處理機,以免程序陷入「忙等」狀態。

4、 訊號量機制

2023年。,荷蘭學者dijkstra提出的訊號量機制是一種卓有成效的程序同步工具。在長期且廣泛的應用中,訊號量機制又得到了很大的發展,它從整型訊號量經記錄型訊號量,進而發展為「訊號量集」機制。

現在,訊號量機制已被廣泛地應用於單處理機和多處理機系統以及計算機網路中。

整型資訊量

最初由dijkstra把整型訊號量定義為乙個用於表示資源數目的整型量s,它與一般整型量不同,除初始化外,僅能通過兩個標準的原子操作wait(s)和signal(s)來訪問。很長時間以來這兩個操作一直被分別稱為p、v操作。

記錄型訊號量

記錄型訊號量機制是一種不存在「忙等」現象的程序同步機制。但在採取了「讓權等待」的策略後,又會出現多個程序等待訪問同一臨界資源的情況。為此,在訊號量機制中,除了需要乙個用於代表資源數目的整型變數value外,還應增加乙個程序鍊錶指標l,用於鏈結上述的所有等待程序。

and型訊號量

and同步機制的基本思想是:將程序在整個執行過程中需要的所有資源,一次性全部的分配給程序,待程序使用完後再一起釋放。只要尚有乙個資源未能分配給程序,其他所有可能為之分配的資源也不分配給它。

亦即,對若干個臨界資源的分配,採取原子操作方式:要麼把它所請求的資源全部分配到程序,要麼乙個也不分配。

訊號量集

在記錄型訊號量機制中,wait(s)或signal(s)操作僅能對訊號量施以加1或減1操作,意味著每次只能獲得或釋放乙個單位的臨界資源。而當一次需要n個某類臨界資源時,便要進行n次wait(s)操作,顯然這是低效的。此外,在有些情況下,當資源數量低於某一下線值時,便不與以分配。

因而,在每次分配之前,都必須測試該資源的數量,看其是否大於其下限值。基於上述兩點,可以對and訊號量機制加以擴充,形成一般化的「訊號量集「機制。

5、 訊號量的應用

(1)利用訊號量實現程序互斥

為使多個程序能互斥地訪問某臨界資源,只須為該資源設定一互斥訊號量mutex,並設其初始值為1,然後將各程序訪問該資源的臨界區cs置於wait(mutex)和siganl(mutex)操作之間即可。這樣,每個欲訪問該臨界資源的程序在進入臨界區之前,都要先對mutex執行wait操作,若該資源此刻未被訪問,本次wait操作必然成功,程序便可進入自己的臨界區,這時若再有其他程序的也欲進入自己的臨界區,此時由於對mutex執行wait操作定會失敗,因而該程序阻塞,從而保證了該臨界資源能被互斥的訪問。當訪問臨界資源的程序退出臨界區後,又應對mutex執行siganl操作,以便釋放該臨界資源。

(2)利用訊號量實現前趨關係

還可利用訊號量來描述程式或語句之間的前驅關係。設有兩個併發執行的程序p1和p2。p1中有語句s1;p2中有語句s2。

我們希望在s1執行任務後再執行s2。為實現這種前驅關係,我們只須使程序p1和p2共享有乙個公用訊號量s,並賦予其初始值為0,將siganl(s)操作放在語句s1後面;而在s2語句前面插入wait(s)操作,即

在程序p1中,用s1;signal(s);

在程序p2中,用wait(s);s2;

6、 管程機制

雖然訊號量機制是一種既方便又有效地程序同步機制,但每個要訪問臨界資源的程序都必須自備同步操作分散在各個程序中,這不僅給系統管理帶來了麻煩,而且還會因同步操作的使用不當而導致系統死鎖。在解決上述問題中便產生了一種新的程序同步工具---管程。

管程有四部分組成:管程的名稱、區域性於管程內部的共享資料結構說明、對該資料結構進行操作的一組過程、對區域性於管程內部的共享資料設定初始值的語句。

二、經典程序同步與互斥問題

程序同步與互斥的經典問題生產者---消費者問題可以幫助我們更好的理解程序同步的概念和實現方法。生產者—消費者(producer—consumer)問題是乙個著名的程序同步問題。它描述的是:

有一群生產者程序在生產產品,並將這些產品提供給消費者程序去消費。為使生產者程序與消費者程序能併發執行,在兩者之間設定了乙個具有n個緩衝區的緩衝池,生產者程序將它所生產的產品放入乙個緩衝區中;消費者程序可從乙個緩衝區中取走產品去消費。儘管所有的生產者程序和消費者程序都是以非同步方式執行的,但它們之間必須保持同步,既不允許消費者程序到乙個空緩衝區去取產品,也不允許生產者程序向乙個已裝滿產品且尚未被取走的緩衝區中投放產品。

1、 利用記錄型訊號量解決生產者---消費者問題

假定在生產者和消費者之間的公用緩衝池中,具有n個緩衝區,這時可利用互斥訊號量mutex實現諸程序對緩衝池的互斥使用。利用訊號量empty和full分別表示緩衝池中空緩衝區和滿緩衝區的數量。又假定這些生產者和消費者相互等效,只要緩衝池未滿,生產者便可將資訊送入緩衝池;只要緩衝池未空,消費者便可從緩衝池中取走乙個訊息。

2、 利用and訊號量解決生產者---消費者問題

對於生產者—消費者問題,也可利用and訊號量來解決,即用swait(empty,mutex)來代替wait(empty)和wait(mutex);用ssignal(mutex,full)來代替signal(mutex)和siganl(full);用swait(full,mutex)來代替wait(full)和wait(mutex),以及用ssiganl(mutex,empty)代替ssiganl(mutex)和ssiganl(empty)。

3、 利用管程解決生產者----消費者問題

在利用管程方法來解決生產者—消費者問題時,首先便是為它們建立乙個管程,並命名為proclucerconsumer,或簡稱為pc。其中包括兩個過程:

(1) put(item)過程。生產者利用該過程將自己生產的產品投放到緩衝池中,並用整型變數count來表示在緩衝池中已有的產品數目,當count>=n時,表示緩衝池已滿,生產者需等待。

(2) get(item)過程。消費者利用該過程從緩衝池中取出乙個產品,當count<=0時,表示緩衝池中已無可取用的產品,消費者請等待。

總結:os引入程序後,由於程序的非同步性,可能會導致程式執行結果的不確定性,使程式執行時出現不可再現性。程序互斥與同步的主要任務是使併發執行的諸程序之間能有效地共享資源和相互合作,從而使程式的執行具有可再現性。

2】計算機網際網路

計算機作業系統

三 簡答題 1 程序管理 程序與程式的關係 1 程序是程式的一次執行。2 進城是乙個程式及其資料在處理機上順序執行時所發生的活動。3 程序是程式在乙個資料集合上執行的過程,它是系統進行資源分配和排程的乙個獨立單位。程序的狀態及其特徵 就緒狀態 當程序已分配到除cpu意外的所有必要資源後只要在獲得cp...

計算機作業系統總結

排程方式 排程方式有分頁式 分段式 段頁式3種。頁式排程是將邏輯和實體地址空間都分成固定大小的頁。主存按頁順序編號,而每個獨立編址的程式空間有自己的頁號順序,通過排程輔存中程式的各頁可以離散裝入主存中不同的頁面位置,並可據表一一對應檢索。頁式排程的優點是頁內零頭小,頁表對程式設計師來說是透明的,位址...

計算機作業系統複習

1.作業系統的定義 根據馮 諾依曼的思想,將運算部件 記憶體 輸入和輸出部件等裝置安裝在計算機的主機板上,通過邏輯連線構成計算機硬體系統,要使這些部件能夠充分發揮其效能,盡可能地按人們預期的目的和要求來執行各類程式,就需要一套管理硬體和組織程式有序執行的程式,則這套程式就稱為作業系統。2.作業系統的...