同步與互斥概念

2021-06-26 10:14:37 字數 859 閱讀 7476

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

現在作業系統中,執行緒是排程的基本單位,雖然同乙個程序的多個執行緒共享程序的資源,但是不同執行緒所訪問的資源仍然可能存在衝突,因此也同樣需要同步和互斥。因此執行緒間同步與互斥的概念同樣適用於程序間通訊,但是可能實現的手段不太一樣。

同步和互斥的概念

比如說執行緒b需要從緩衝區中讀取執行緒a產生的資料,當緩衝區為空時,執行緒b因為讀不到資料而被阻塞。當執行緒a產生資訊放入緩衝區時,執行緒b才會被喚醒。如圖所示:

例如執行緒b需要訪問印表機,但此時執行緒a占用了印表機,程序b會被阻塞,直到程序a釋放了印表機資源,程序b才可以繼續執行。

在應用程式中,常用的有:

臨界區(criticalsection)

互斥量(mutex)

訊號量(semaphore)

事件(event)

在核心態多執行緒程式設計的時候,同樣需要執行緒的同步與互斥,教科書上介紹了幾種:

自旋鎖(spinlock):這個當年畢業的時候,在做emc的筆試的時候,考到了。

讀寫鎖(rwlock)

等等,用的不多,不寫了。後文會對每種實現進行講解。

linux 同步 互斥 概念

相交程序之間的關係主要有兩種,同步與互斥。所謂互斥,是指散步在不同程序之間的若干程式片斷,當某個程序執行其中乙個程式片段時,其它程序就不能執行它 們之中的任一程式片段,只能等到該程序執行完這個程式片段後才可以執行。所謂同步,是指散步在不同程序之間的若干程式片斷,它們的執行必須嚴格按照規定的 某種先後...

同步與互斥

雖然多個程序可以共享系統中的各種資源,但其中許多資源一次只能為乙個程序所使用,我們把一次僅允許乙個程序使用的資源稱為臨界資源。許多物理裝置都屬於臨界資源,如印表機等。此外,還有許多變數 資料等都可以被若干程序共享,也屬於臨界資源。對臨界資源的訪問,必須互斥地進行,在每個程序中,訪問臨界資源的那段 稱...

同步與互斥

在多道程式系統中,由於程序併發,資源共享與程序協作,使得程序間可能產生兩種形式的制約 1 間接相互制約 源於資源共享,如果程序ab共享一種資源,如果a請求資源時發現程序b正在訪問這種資源,那麼程序a就進入阻塞佇列,當程序b釋放資源,程序a被喚醒到就緒狀態 2 直接相互制約 源於程序協作,如果程序a通...