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




