操作系统(十八)进程同步与进程互斥
2.3.1 進程同步與進程互斥
目錄
2.3.1 進程同步與進程互斥
2.3.1.1 進程同步
2.3.1.2 進程互斥
? 在之前我們提到過,進程有異步性的特征,所謂異步性就是并發執行的進程以各自獨立的、不可預知的速度向前推進,這個時候就不可避免的出現有些請求由于資源不足等原因而不能完成,所以為了使進程可以順利的進行,操作系統引入了進程同步機制。
2.3.1.1 進程同步
??舉一個例子,在前面提到的管道通信中,讀進程發生的前提一定是寫進程在管道內已經寫了數據,但是由于并發的異步性,讀進程、寫進程這兩個進程的執行順序是不可預知的,所以很有可能出現先讀后寫這樣的問題。為了解決這種異步性帶來的問題就引入了進程同步。
? 同步亦稱直接制約關系,它是指為完成某種任務而建立的兩個或多個進程,這些進程因為需要在某些位置上協調它們的工作次序而產生的制約關系。進程間的直接制約關系就是源于它們之間的相互合作。
2.3.1.2 進程互斥
? "互斥",顧名思義就是互相排斥的意思。進程互斥指當一個進程訪問某臨界資源時,另一個想要訪問該臨界資源的進程必須等待當前訪問臨界資源的進程訪問結束,釋放該資源之后,另一個進程才能去訪問臨界資源。
? 對臨界資源的訪問從邏輯上可以分為以下四個部分:
repeat entry section; //進入區critical section; //臨界區exit section; //退出區remainder section; //剩余區 until false;? 其中,進入區是負責檢查是否可以訪問臨界資源,若可以進入就應該設置“鎖”,暫時將此資源上鎖,防止其他進程訪問;臨界區是訪問臨界資源的那段代碼;退出區與進入區正好相反他可以在進程訪問完資源后對資源進行解鎖;剩余區會完成剩余的一些操作。在以上四個部分中,進程互斥主要是靠上鎖以及解鎖實現的。
? 思考一個問題,如果某個資源在進入區被擋住了。那他會一直占著處理機來申請進入臨界區嗎?肯定不會的,這是因為進程互斥遵循以下四個原則:空閑讓進、忙則等待、有限等待、讓權等待
? 空閑讓進:臨界區空閑時,可以允許一個請求進入臨界區的進程立即進入臨界區
? 忙則等待:當已有進程進入臨界區時,其他試圖進入臨界區的進程必須等待
? 有限等待:對請求訪問的進程,應保證能在有限時間內進入臨界區(保證不會饑餓)
? 讓權等待:當進程不能進入臨界區時,應立即釋放處理機,防止進程忙等
總結
以上是生活随笔為你收集整理的操作系统(十八)进程同步与进程互斥的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 操作系统(十七)调度算法(二)
- 下一篇: 2021年中国少儿编程行业报告