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