操作系統(tǒng)同步和互斥
操作系統(tǒng)中的進程之間的關(guān)系只有兩種:同步與互斥。下面由學(xué)習(xí)啦小編為大家整理了操作系統(tǒng)的同步和互斥的相關(guān)知識,希望對大家有幫助!
操作系統(tǒng)同步和互斥
1.進程同步
進程同步也是進程之間直接的制約關(guān)系,是為完成某種任務(wù)而建立的兩個或多個線程,這個線程需要在某些位置上協(xié)調(diào)他們的工作次序而等待、傳遞信息所產(chǎn)生的制約關(guān)系。進程間的直接制約關(guān)系來源于他們之間的合作。
比如說進程A需要從緩沖區(qū)讀取進程B產(chǎn)生的信息,當(dāng)緩沖區(qū)為空時,進程B因為讀取不到信息而被阻塞。而當(dāng)進程A產(chǎn)生信息放入緩沖區(qū)時,進程B才會被喚醒。
2.進程互斥
進程互斥是進程之間的間接制約關(guān)系。當(dāng)一個進程進入臨界區(qū)使用臨界資源時,另一個進程必須等待。只有當(dāng)使用臨界資源的進程退出臨界區(qū)后,這個進程才會解除阻塞狀態(tài)。
比如進程B需要訪問打印機,但此時進程A占有了打印機,進程B會被阻塞,直到進程A釋放了打印機資源,進程B才可以繼續(xù)執(zhí)行。
擴展:臨界資源
在操作系統(tǒng)中,進程是占有資源的最小單位(線程可以訪問其所在進程內(nèi)的所有資源,但線程本身并不占有資源或僅僅占有一點必須資源)。但對于某些資源來說,其在同一時間只能被一個進程所占用。這些一次只能被一個進程所占用的資源就是所謂的臨界資源。典型的臨界資源比如物理上的打印機,或是存在硬盤或內(nèi)存中被多個進程所共享的一些變量和數(shù)據(jù)等(如果這類資源不被看成臨界資源加以保護,那么很有可能造成丟數(shù)據(jù)的問題)。
對于臨界資源的訪問,必須是互訴進行。也就是當(dāng)臨界資源被占用時,另一個申請臨界資源的進程會被阻塞,直到其所申請的臨界資源被釋放。而進程內(nèi)訪問臨界資源的代碼被成為臨界區(qū)。
對于臨界區(qū)的訪問過程分為四個部分:
1.進入?yún)^(qū):查看臨界區(qū)是否可訪問,如果可以訪問,則轉(zhuǎn)到步驟二,否則進程會被阻塞
2.臨界區(qū):在臨界區(qū)做操作
3.退出區(qū):清除臨界區(qū)被占用的標(biāo)志
4.剩余區(qū):進程與臨界區(qū)不相關(guān)部分的代碼
臨界資源使用規(guī)則:忙則等待、優(yōu)先等待、空閑讓進、讓權(quán)等待(在臨界區(qū)的進程,不能在臨界區(qū)內(nèi)長時間處于事件等待,必須在一定時間退出臨界區(qū))。
多個進程常常需要共同修改某些共享變量、表格、文件數(shù)據(jù)庫等,協(xié)作完成一些功能。共享協(xié)作帶來了進程的同步和互斥、死鎖、饑餓等問題。