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




