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

歡迎訪問 生活随笔!

生活随笔

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

windows

操作系统(十九)进程互斥的软件实现方法

發布時間:2025/3/15 windows 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 操作系统(十九)进程互斥的软件实现方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2.3.2 進程互斥的軟件實現方法

目錄

2.3.2 進程互斥的軟件實現方法

2.3.2.1 單標志法

2.3.2.2 雙標志先檢查法

2.3.2.3 雙標志后檢查法

2.3.2.4 Peterson法


2.3.2.1 單標志法

??兩個進程在訪問完臨界區后會把使用臨界區的權限轉交給另一個進程。也就是說每個進程進入臨界區的權限只能被另一個進程賦予

int turn = 0; //turn表示當前運行的進程編號P0進程 P1進程 while(turn != 0); 1 while(turn != 1); 5 //進入區 critical section; 2 critical section; 6 //臨界區 turn = 1; 3 turn = 0; 7 //退出區 remainder section; 4 remainder section; 8 //剩余區

? 在這里turn就是一個標志,表示的是"讓步"turn 的初值為 0,即剛開始只允許 0 號進程進入臨界區。若 P1 先上處理機運行,則會一直卡在 5。直到 P1 的時間片用完,發生調度,切換 P0 上處理機運行。代碼1(注意這個while后面是個分號表示此語句已完成而不是一個循環語句) 不會卡住 P0,P0 可以正常訪問臨界區,在 P0 訪問臨界區期間即時切換回 P1P1依然會卡在 5。只有 P0 在退出區將 turn 改為 1 后,P1才能進入臨界區。

? 我們仔細手動推演一下代碼不難發現,此時進程調度是按P0 P1 P0 P1...輪流交替調度的,雖然可以實現互斥,但是如果在P0允許進入臨界區時,P0卻不想訪問臨界資源,那么處理機就會空閑此時P1去不能夠進行訪問,所以,這種方法不滿足”空閑讓進“原則。

2.3.2.2 雙標志先檢查法

??設置一個布爾型數組 flag[],數組中各個元素用來標記各進程想進入臨界區的意愿,比如“flag[0] = ture”意味著 0 號進程 P0 現在想要進入臨界區。每個進程在進入臨界區之前先檢查當前有沒有別的進程想進入臨界區,如果沒有,則把自身對應的標志 flag[i] 設為 true,之后開始訪問臨界區。

bool flag[2]; flag[0] = flash; flag[1] = flash;P0: P1: while(flag[1]); 1 while(flag[0]); 6 flag[0] = true; 2 flag[1] = true; 7 critical section; 3 critical section; 8 flag[0] = flash; 4 flag[1] = flash; 9 remainder section; 5 remainder section; 10

? 當P0進程開始運行時,首先檢查P1的flag[1]=flash于是開始訪問臨界區,在訪問結束后將自身的flag[0]重新置為flash。這樣的數組flag實際上表示的是想要訪問資源的請求。雖然這樣進程不會交替進行執行但是如果先執行語句1再執行語句6那么P0與P1會同時進入臨界區,這就違反了“忙則等待”的原則。發生這種問題的原因是檢查上鎖過程的原子性被打破,如果檢查上鎖一氣呵成就不會出現這種問題。

2.3.2.3 雙標志后檢查法

? 雙標志先檢查法是先檢查后上鎖,但是這樣會導致兩個進程同時進入臨界區的問題,于是人們想到了先上鎖后檢查。

bool flag[2]; flag[0] = flash; flag[1] = flash;P0: P1: flag[0] = true; 1 flag[1] = true; 6 while(flag[1]); 2 while(flag[0]); 7 critical section; 3 critical section; 8 flag[0] = flash; 4 flag[1] = flash; 9 remainder section; 5 remainder section; 10

? 雖然這樣的確可以解決忙則等待的問題,但如果1 5 2 6來執行程序,P0,P1都會進不了臨界區,又不滿足“空閑讓進”以及“有限等待”的原則。

2.3.2.4 Peterson法

??結合雙標志法、單標志法的思想。如果雙方都爭著想進入臨界區,那可以讓進程嘗試“孔融讓梨”(先客氣客氣)。

bool flag[2]; int turn = 0; flag[0] = flash; flag[1] = flash;P0: P1: flag[0] = true; 1 flag[1] = true; 7 turn = 1; 2 turn = 0; 8 while(flag[1] && turn==1); 3 while(flag[0] && turn==0); 9 critical section; 4 critical section; 10 flag[0] = flash; 5 flag[1] = flash; 11 remainder section; 6 remainder section; 12

語句1:自己主動爭取資源使用權

語句2:把資源使用權謙讓給別人

語句3:如果對方想使用資源且確實是自己最后謙讓了就把資源給別人使用

語句4:訪問臨界區

語句5:解鎖

在這樣的算法之下不管以何種順序執行程序(1 2 3?7 8 9等),都不會違反空閑讓進、忙則等待以及有限等待的原則,但是仍未解決讓權等待的問題。

總結

以上是生活随笔為你收集整理的操作系统(十九)进程互斥的软件实现方法的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91精品婷婷国产综合久久 | 麻豆传媒在线 | 激情五月婷婷在线 | 亚洲综合图 | 艳情五月| 久久中文娱乐网 | 精品www| 国产一区二区免费在线 | 欧美成人三级在线视频 | 天天舔天天射天天干 | av色图片 | 亚洲永久精品在线观看 | 91n视频| 日韩欧美操 | www视频免费在线观看 | 超碰97在线资源 | 欧洲女性下面有没有毛发 | 日韩伦理视频 | 999精品在线观看 | 少妇学院在线观看 | 经典三级av在线 | 国产精品边吃奶边做爽 | 国产一级黄色录像 | 精品欧美一区二区三区成人 | 男人的天堂黄色 | 91精品中文字幕 | 亚洲乱子伦 | 欧美午夜视频 | 99re热这里只有精品视频 | 大尺度一区二区 | 日本xxxxxxxxx69 | 捆绑无遮挡打光屁股 | 日韩成人av毛片 | 清冷男神被c的合不拢腿男男 | 91av一区| www激情com| аⅴ天堂中文在线网 | 色综合久久88 | 色涩av| 亚洲欧美小视频 | 国产三级观看 | 中文字幕日韩精品在线 | 成人性生交生交视频 | 国产xxxxx视频| 壮汉被书生c到合不拢腿 | 六月综合激情 | 欧美zzz物交| 日本理论片午伦夜理片在线观看 | 色网站在线播放 | 在线看国产精品 | av私库在线观看 | 少妇情理伦片丰满午夜在线观看 | free性欧美hd另类 | 国产精品福利一区二区三区 | 色爽交| 天堂素人约啪 | 欧美做受高潮中文字幕 | 岳奶大又白下面又肥又黑水多 | 在线免费看黄av | 调教小屁屁白丝丨vk | 999精品网站| 精品嫩模一区二区三区 | 国产精品夜色一区二区三区 | 国产丝袜美腿一区二区三区 | 欧美激情一区 | 欧美电影一区 | 色爱色 | 中文字幕免费一区二区 | 日韩激情在线观看 | 免费看欧美成人a片无码 | 久久久老熟女一区二区三区91 | 日本免费福利视频 | 大乳村妇的性需求 | 国产福利久久久 | 免费99精品国产自在在线 | 91视| 久久久久久9999 | 99资源 | 男人天堂tv| 久久亚洲精品石原莉奈 | 2021av在线| 亚洲自拍偷拍一区二区三区 | 国产成人在线视频观看 | www亚洲视频 | 久久综合一本 | 色播在线| 亚洲精品国产av | 午夜av毛片 | 麻豆视频免费在线 | 日韩视频在线播放 | 亚洲视频免费在线 | www.99热| 国产免费资源 | 大陆av在线播放 | 国产又色又爽无遮挡免费动态图 | 菲律宾av | 永久免费视频网站直接看 | 日韩欧美不卡 | av免费网站观看 |