日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系

發布時間:2025/3/15 windows 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.3.5 用信號量機制實現進程互斥、同步、前驅關系

目錄

2.3.5 用信號量機制實現進程互斥、同步、前驅關系

2.3.5.1?用信號量機制實現進程互斥

2.3.5.2?用信號量機制實現進程同步

2.3.5.3?信號量機制實現前驅關系


2.3.5.1?用信號量機制實現進程互斥

? 由之前的學習我們知道進程互斥就是在同一時間訪問臨界資源的進程只能有一個。并且P操作是申請資源并上鎖的原語,V操作時釋放資源并解鎖的原語,我們引用一個互斥信號量mutex表示進入臨界區的名額,并設置初值為1來實現進程互斥。

? ?1. 分析并發進程的關鍵活動,劃定臨界區(如:對臨界資源打印機的訪問就應放在臨界區)

? ?2. 設置互斥信號量 mutex,初值為 1

? ?3. 在進入區 P(mutex)——申請資源

? ?4. 在退出區 V(mutex)——釋放資源 這里需要注意:P(mutex)與V(mutex)必須成對存在,如果缺少P那么互斥性就不可以保證,如果缺少V就導致資源不能解鎖,并且等待進程永遠不會被喚醒。

2.3.5.2?用信號量機制實現進程同步

? 進程同步就是將并發進程按照一定要求有序推進,以解決并發性帶來的問題。

??1. 分析什么地方需要實現“同步關系”,即必須保證“一前一后”執行的兩個操作(或兩句代碼)

? 2. 設置同步信號量 S, 初始為 0

3. 在“前操作”之后執行 V(S) 4. 在“后操作”之前執行 P(S) 以下面的操作為例,解釋一下這四個步驟的原因: semaphore S = 0; //初始化同步信號量,初值為0P1(){操作1;操作2;V(S);操作3; }P2(){P(S);操作4;操作5;操作6; }

? 以上的代碼可以保證操作2發生在操作4之前。因為異步性導致的問題我理解就是資源不足,因為第二步需要第一步所帶的資源。所以同步信號量設為了0而非1(1的話意思就是資源十分充足,誰想用訪問就行)。因為操作2要發生在操作4之前就是說操作2要為操作4帶來所需資源,所以解鎖就是釋放資源,一定要在前操作之后使用。

2.3.5.3?信號量機制實現前驅關系

? 前驅關系就是一個同步問題,即某一操作必須在一個操作之后。下圖所示的前驅關系:S2必須在S1之后產生,S6必須在S4 S5 S3都完成之后進行。

實現步驟如下:

??1. 要為每一對前驅關系各設置一個同步信號量

? 2. 在“前操作”之后對相應的同步信號量執行 V 操作

? 3. 在“后操作”之前對相應的同步信號量執行 P 操作

總結

以上是生活随笔為你收集整理的操作系统(二十二)用信号量机制实现进程互斥、同步、前驱关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。