調研同步與互斥概念原理,了解生產者消費者原理

2021-08-18 17:50:19 字數 1248 閱讀 7009

現代作業系統提供了乙個併發控制環境,即系統中同時活動著多個不同的程序,這些程序共享同乙個cpu,記憶體或i/o裝置。特別是對於linux作業系統來說,其多工,多使用者,分時實時混合的性質決定了多個程序在某種程度上彼此依賴或相互制約的關係,這些關係我們叫「併發關係」,按其性質可以分為同步和互斥兩類。

程序互斥

由於各程序要求共享資源,而且有些資源需要互斥使用,因此各程序間競爭使用這些資源,程序的這種關係為程序的互斥。系統中某些資源一次只允許乙個程序使用,稱這樣的資源為臨界資源或互斥資源。在程序中涉及到互斥資源的程式段叫臨界區。互斥是一種獨佔關係,如任一時刻,程序1和程序2只能有乙個寫檔案c。

程序同步

是指多個程序需要相互配合共同完成一項任務。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源,如「第一類讀寫者模型」。同步是一種時序關係,如規定了程序1處理完事情a後,程序2才能處理事情b。

如果a和b互相包含,那a只能等於b,而同步和互斥的是不對等的。但從廣義上來看,互斥是一種特殊的同步,同步是一種更為複雜的互斥關係。

臨界資源

系統中同時存在有許多程序,他們共享各種資源,然而有許多資源在某一時刻只能允許乙個程序使用。例如印表機,磁帶機等硬體裝置和變數,佇列等資料結構,如果有多個程序同時去使用這些資源就會造成混亂。因此必須保護這些資源,避免兩個程序同時訪問這類資源。我們把某段時間只能允許乙個程序使用的資源成為臨界資源。

生產者與消費者

有兩個程序分別為消費者程序和生產者程序,對同乙個臨界資源進行訪問,生產者不斷的將生產的產品加入緩衝區,而消費者不斷的消費緩衝區中的資源,利用訊號量實現兩個程序的同步與互斥。

在生產者往緩衝區加入產品時,需要兩個訊號量,乙個是互斥訊號量,使得在生產者往快取裡放產品的時候其他程序不能對臨界資源進行操作,另乙個訊號量是指示快取區是否已滿的訊號量,從而判斷生產者能否往緩衝區加入產品;而消費者從緩衝區中消費資源的時候,也需要兩個訊號量,乙個訊號量是互斥訊號量,使得消費者在從緩衝區中取產品的時候其他程序不能對臨界資源進行操作,另外乙個訊號量是指示緩衝區是否為空,從而判斷消費者能否對緩衝區進行操作。

由以上分析,可知在該問題中共需要三個訊號量,乙個是用於互斥的訊號量mutux=1; 乙個是用於指示緩衝區空位置數目的empty=n;另外乙個是指示緩衝區填滿位置的訊號量full = 0;

用於同步的訊號量一定是位於不同程序中,用於互斥的訊號量一定是位於同乙個程序中。

Linux 同步與互斥原理,了解生產者與消費者關係

各程序採取互斥的方式,實現共享的資源稱作臨界資源。屬於臨界資源的硬體有印表機 磁帶機等,軟體有訊息緩衝佇列 變數 陣列 緩衝區等。諸程序間應採取互斥方式,實現對這種資源的共享。每個程序中訪問臨界資源的那段 稱為臨界區。顯然,若能保證諸程序互斥地進入自己的臨界區,便可實現諸程序對臨界資源的互斥訪問。為...

同步與互斥概念

程序同步是個作業系統級別的概念,程序是占有資源的最小單位 執行緒可以訪問其所在程序內的所有資源,但執行緒本身並不占有資源 但對於某些資源來說,其在同一時間只能被乙個程序占用,這些一次只能被乙個程序所占用的資源就是所謂的 臨界資源 例如物理上的印表機,或是在硬碟或者記憶體中被多個程序共享的一些變數和資...

同步與互斥,生產者消費者模型基本概念

現代作業系統提供了乙個併發控制環境,即系統中同時活動著的多個不同的程序,這些程序共享同乙個cpu 記憶體或 i o裝置。特別是對於linux作業系統來說,其多工 多使用者 分時實時混合的性質決定了多個程序在某種程度上彼此依賴或相互制約的關係,這些關係我們叫 併發關係 按其性質可以分為同步 synch...