作業系統專欄 程序管理之程序同步

2021-09-29 15:35:14 字數 1405 閱讀 1235

首先我們來引入乙個著名的生產者與消費者問題,來說明為什麼需要程序間的同步吧。

當生產者,生產出東西投入緩衝區的時候,進行+1,當消費者從緩衝區取出的時候,進行-1。

然後來簡要的說一下,+1/-1,到底是怎麼進行的。

首先我們明白一點,緩衝是在cache上的,當我們操作緩衝區的時候,實際上是這三個步驟:

(1)register = count

(2)register = register + 1

(3)count = register

當這個模型跑在單程序中,肯定是沒有問題的,而如果這個任務併發地去執行在多個程序中就會出差錯,因為他們訪問的是同一塊儲存區域,就有可能出現髒讀等問題。

當放入緩衝區和拿出緩衝區的程式同時執行的時候,就會出現這種問題。

就比如說,a=0,然後乙個執行緒只執行a+1,乙個執行緒只執行a-1,各執行100w次,結果肯定不是理想化的0.

除非加同步鎖。

然後再來說乙個經典的哲學家進餐的問題。

這根源的問題,也就是因為五個哲學家,也就是五個程序之間,沒有進行通訊而導致的。

而如果我們能做到對競爭資源在多程序之間進行使用次序的協調,就可以讓併發執行的多個程序之間可以有效使用資源和相互合作。

在這裡,我們稱筷子本身為——臨界資源。

而臨界資源的含義,我們在同步的原則中會講述。

首先先呼應一下上面的問題,什麼是臨界資源?

臨界資源指的是,一些雖然可以作為共享資源但是又無法同時被多個執行緒共同訪問的共享資源。當有程序在使用臨界資源的時候,其他程序必須依據作業系統的同步機制等待占用程序釋放該共享資源才可重新競爭使用共享資源,不然就會死鎖。

然後再來說一下程序間同步的原則:

而讓程序間同步的三個方法有:

執行緒同步和程序同步是一樣的理解。程序作為獲得cpu資源的單位,而執行緒則是共享自己程序的資源。他們自然也需要互相保證同步,不然也會發生和程序同樣的併發的問題。

讓執行緒進行同步的方法有

作業系統 程序管理之程序同步

程序同步 由程序非同步所匯出的概念。由於多道程式設計的非同步性,導致記憶體中的程序時走時停,以不可預知的速度前進 但某些情況下又要求固定某些程序的先後順序。所謂程序同步就是指程序之間的直接制約關係,具體體現在程序的執行順序上。程序互斥 是由於程序之間均需要訪問同一臨界資源,而臨界資源同一時間又只能允...

作業系統之程序同步

一 程序同步的基本概念 間接相互制約關係 多個程式在併發執行時,由於共享系統資源,如cpu i o裝置等,致使在這些併發執行的程式之間形成相互制約的關係。對於像印表機 磁帶機這樣的臨界資源,必須保證多個程序對之只能互斥地訪問,由此,在這些程序間形成了源於對該類資源共享的所謂間接相互制約關係。為了保證...

作業系統原理 03 程序管理之程序同步

有一群生產者程序在生產產品,並將這些產品提供給消費者程序進行消費,生產者程序和消費者 程序可以併發執行,在兩者之間設定了乙個具有n可緩衝區的緩衝池,生產者程序需要將所生產 的產品放到乙個緩衝區中,消費者程序可以從緩衝區取走產品消費。單兩者併發執行時就可能出差錯 有五個哲學家,他們的生活方式是交替地進...