freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

進程的同步與通信進程死鎖(編輯修改稿)

2025-01-16 21:44 本頁面
 

【文章內容簡介】 alue。 一個數型變量 struct process *L。一個 PCB隊列 } Semaphore Semaphore S。 2. P操作 P(S): =- 1。 if 0 then 保存現場, 將本進程掛入 ,等待重新調度。 3. V操作 V(S): :=value+1 if ≤0 then 從 取一進程,掛入就緒隊列。 4. P,V操作的優(yōu)點: 同步能力強 5. P,V操作的缺點: 程序結構差,易產生死鎖。 34 信號量的物理意義 ? P(s)操作: ① 請求分配一個 S代表 的資源,執(zhí)行 ; ② 若 0, 表示系統(tǒng)已無該類資源,申請者阻塞。此時, ||表示該信號量上阻塞的進程數; ? V(s)操作: ① 進程釋放一個 S代表 的資源,執(zhí)行 +1; ② 若 =0, 表示尚有進程因等待 S代表的資源而處于阻塞狀態(tài),所以應喚醒其中之一。 35 3. 利用信號量實現進程互斥 ? 使用方法: 1)為每一個共享的臨界資源設置一個互斥信號量,其初值為 1。 2)各進程在進入臨界段前先對該信號量進行 P操作,退出臨界段后執(zhí)行 V操作,從而保證各進程互斥的進入相關臨界段。 ? 注意: 對同一信號量操作的 P與 V操作在進程中必須成對出現。 36 進程 Pi : 信號量 mutex=1 P(mutex) V(mutex) 臨界段 非臨界段 do{ }While(1) 37 ? 例子: 有一飛機機票售票系統(tǒng),有 m個售票處,各售票處通過計算機與該系統(tǒng)的票務中心連網,中心數據區(qū)中用 Ri代表某天某次航班的余票數。進程 pi為第 i個售票處為旅客服務的進程,進程功能如下: pi() { 接受旅客訂票要求; Xi=Ri 。 //將票務中心該次航班的余票 //取出送該進程工作單元 Xi if (Xi=1) { Xi= Xi1。 Ri =Xi。 輸出一張機票; } else 輸出機票已售完; } 38 ? 存在的問題: 1)存在幾個旅客幾乎同時在不同的售票處要求訂購同天同一次航班的可能。 2)幾個進程都要訪問票務中心的共享變量 Ri,可能出現這樣的執(zhí)行順序: ① 第 i個售票處的售票進程 pi剛剛取出 Ri, 執(zhí)行 Xi=Ri; ② 第 j個售票處的售票進程 pj馬上執(zhí)行 Xj= Xj1。Ri =Xj; ③ pi再執(zhí)行 Xi= Xi1。Ri =Xi。 產生的錯誤: pi, pj都售出了一張機票,但票務中心記錄機票余額的變量 Ri卻只減了 1。 39 semaphore mutex。 mutex=1。 pi() { 接受旅客訂票要求; P(mutex)。 Xi=Ri 。 //將票務中心該次航班的余票 Ri取出送該進 //程工作單元 Xi if (Xi=1) { Xi= Xi1。 Ri =Xi。 V(mutex)。 輸出一張機票 。 } else { V(mutex)。 輸出機票已售完 。 } ? 解決辦法 40 ? 同步模型: 假設有兩個協(xié)作的并發(fā)進程 P1, P2, S1是 P1中的一段代碼, S2是 P2中的一段代碼,只有 P1中的 S1執(zhí)行完后 P2中的 S2才能開始執(zhí)行 ? 實現方法: 利用信號量的同步原語 P可以實現 P1向 P2發(fā)送消息,用 V來測試 P1的消息是否到達。設 synch是實現同步的信號量,初值為 0,則兩個進程的同步可以描述為: 4. 利用信號量實現進程同步 Parbegin P2: { P1: { …… S1。 V(synch)。 …… } …… P(synch)。 S2。 …… } Parend。 41 啟動汽車 正常開車 到站停車 開車門 乘客上下車 關車門 司機和售票員同步示意圖 售車票 司機 售票員 stop close 利用信號量實現進程同步的例子 ? 現實例子: 42 設置信號量 close表示車門是否關好,初值為 0,表示門未關好,不允許司機啟動汽車;設置信號量 stop表示汽車是否停穩(wěn),初值為 0,表示未停穩(wěn),售票員不能開車門。 Semaphore stop=0,close=0。 Driver() { P(close)。//車門是否關好 啟動汽車 正常開車 到站停車 V(stop)。 //發(fā)送開門信息 } ? 實現方法: busman() { 關車門; V(close)。//發(fā)送已關門信息 售車票; P(stop)。//測試是否停車 開車門; 乘客上下車; } 43 ? 首先要分析清楚進程間的同步關系 , 即它們之間交換信息的位置以及個數 , 每一個同步關系用一個信號量來表示 。 ? 其次是要注意信號量的初值以及意義 。 1) P操作用來測試等待的信息是否到達; 2) V操作來向其它需要同步的進程發(fā)送信息 。 解決進程同步問題時關鍵: 44 一般地,定義 n個信號量來描述有 n條 邊的前趨圖,初值都設為 0。例如:右圖的前趨關系可描述如下: S1 S3 S4 S2 a e c b d semaphore a=0,b=0,c=0,d=0,e=0。 P1(){ S1。 V(a)。 V(b)。} P2(){ P(a)。 S2。 V(c)。 V(d)。} P3(){ P(b)。 P(c)。 S3。 V(e)。 } P4() { P(d)。 P(e)。 S4。} 45 三個經典的進程同步問題: 有限緩沖區(qū)問題(生產者 消費者問題); (The ProducerConsumer Problem) 讀者 寫者問題; (The Read/Write Problem) 哲學家就餐問題; (The Dining Philosophers Problem) 46 有限緩沖區(qū)的生產者 /消費者問題(生產者和消費者共享一個產品緩沖池)。 說明: ? 將緩沖池看做是共享數據,對緩沖區(qū)的操作必須是互斥操作。 ? 如果 n個緩沖區(qū)全滿,生產者進程必須等待。 ? 如果緩沖區(qū)全空,消費者進程必須等待。 共享 n個緩沖區(qū) P1 P2 … P m 生產者 消費者 緩沖池 C1 C2 …Cn 47 解: 設置以下信號量 ? mutex, 初值為 1,控制互斥訪問緩沖池。
點擊復制文檔內容
黨政相關相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1