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