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

正文內(nèi)容

進(jìn)程的同步與通信-文庫吧資料

2025-06-26 12:45本頁面
  

【正文】 MOVE的操作,并說明每個(gè)信號(hào)量的含義和初值。 如下圖所示,有多個(gè)PUT操作同時(shí)向BUFF1放數(shù)據(jù),有一個(gè)MOVE操作不斷地將BUFF1的數(shù)據(jù)移到Buff2,有多個(gè)GET操作不斷地從Buff2中將數(shù)據(jù)取走。P、Q是兩個(gè)進(jìn)程。解 管程中的條件變量(類型為Condition)是供調(diào)用管程中外部過程的進(jìn)程執(zhí)行Wait和Signal操作將自己掛起和解掛的變量。管程主要是管理對(duì)共享數(shù)據(jù)的操作和使用,即把對(duì)共享數(shù)據(jù)互斥使用的控制這一任務(wù)從程序員身上,交由編譯程序去處理,這樣既方便了編程,又不會(huì)產(chǎn)生人為的同步、互斥上的錯(cuò)誤。例如,在臨界區(qū)的前后插入P、V操作。 coend}driver(){ do while T{ P(S1);啟動(dòng)車輛;正常行車;到站停車;V(S2); }}busserver (){ do while T{ 關(guān)車門;V(S1);售票;P(S2);開車門;上下乘客;}} 在OS中引入管程的目的是什么?解 在OS中引入管程的目的是為了更簡(jiǎn)便、更可靠地解決進(jìn)程之間的同步、互斥問題。main(){cobegindriver()。(7) P、V操作實(shí)現(xiàn) int S1=0。(5) 確定信號(hào)量的初值S1=0;S2=1。 enddo (4) 確定信號(hào)量的個(gè)數(shù)和含義根據(jù)同步規(guī)則以及操作流程確定信號(hào)量的個(gè)數(shù)是2個(gè),S1和S2。開車門;上下乘客; enddo 司機(jī)進(jìn)程 do while T是否關(guān)門?沒關(guān)則等待。(3)進(jìn)程的操作流程 售票員進(jìn)程do while T關(guān)車門;設(shè)立車門已關(guān)標(biāo)志。在汽車正常行駛過程中售票員售票,到站時(shí)司機(jī)停車,售票員在車停后開車門,讓乘客上下車。(2) 確定同步的規(guī)則根據(jù)一般常識(shí),司機(jī)和售票員在車上的操作規(guī)則如下:1) 售票員操作的規(guī)則是只有司機(jī)停車后,售票員才能開門讓乘客上下車;2) 司機(jī)操作的規(guī)則是只有售票員關(guān)門后,司機(jī)才能啟動(dòng)開始行駛汽車。解(1) 確定并發(fā)和順序操作在這個(gè)問題中,司機(jī)與售票員間是并行操作的,司機(jī)和售票員本身的操作是順序進(jìn)行的。 until false end parend end 設(shè)公共汽車上,司機(jī)和售票員的活動(dòng)分別為:司機(jī)的活動(dòng)為啟動(dòng)車輛,正常行車,到站停車;售票員的活動(dòng)為關(guān)車門,售票,開車門。 Getdata(out)。 out:=getD_buffer()。 end consumer:begin repeat P(full)。 V(full)。 in:=getE_buffer()。 begin parbegin producer: begin repeat ┇ P(empty)。 buffer: array [0,…,n1] of item。 Pdata=(pdata+1)MOD N。 GetE_buffer( ) {c=Pbuff Pbuff=(Pbuff+1)MOD N。buffer設(shè)有Pbuff,Pdata兩個(gè)指針,分別指向空閑buffer和有數(shù)據(jù)buffer這里引入2個(gè)函數(shù): getE_buffer(),返回值是空的buffer號(hào); getD_buffer(),返回值是有數(shù)據(jù)的buffer號(hào)。因此,只要保證為不同的進(jìn)程分配不同buffer,putdata和getdata操作是可以同時(shí)進(jìn)行。(4) P、V操作實(shí)現(xiàn) 生產(chǎn)者 消費(fèi)者 { {repeat repeat P(empty); P(full); P(BM);    P(BM); putdata; getdata;  V(BM);   V(BM); V(full); V(empty); until false until false } }(5) 改進(jìn)的P、V操作實(shí)現(xiàn) 在上述的實(shí)現(xiàn)中,putdata和getdata操作都在臨界區(qū)中,因此多個(gè)進(jìn)程對(duì)多個(gè)buffer的操作是不能并發(fā)進(jìn)行的,進(jìn)程間并行操作的程度很低。(2) 操作流程 生產(chǎn)者 {repeat判斷buffer是否有空間,沒有則等待; 是否可操作buffer;putdata; 設(shè)置buffer可操作標(biāo)志; 設(shè)置buffer有數(shù)據(jù)的標(biāo)志; until false }消費(fèi)者 {repeat判斷buffer是否有數(shù)據(jù),沒有則等待; 是否可操作buffer;getdata; 設(shè)置buffer可操作標(biāo)志; 設(shè)置buffer有空間標(biāo)志;until false } (3) 信號(hào)量 full表示buffer是否有數(shù)據(jù),初值為0。(4) P、V操作實(shí)現(xiàn) 生產(chǎn)者 消費(fèi)者 { {repeat repeat P(empty); P(full); P(BM);   P(BM); putdata; getdata; V(BM);   V(BM); V(full); V(empty); until false. until false } }情況4 多個(gè)生產(chǎn)者,多個(gè)消費(fèi)者,N個(gè)buffer,多次循環(huán)存取buffer,即,即多個(gè)生產(chǎn)者不斷地進(jìn)行putdata操作,多個(gè)消費(fèi)者不斷地進(jìn)行g(shù)etdata操作。full表示buffer是否有數(shù)據(jù),初值為0; empty表示buffer是否為空,初值為1; BM 表示 buffer是否可操作,初值為1。這時(shí)buffer變成了臨界資源,不允許多個(gè)進(jìn)程同時(shí)操作buffer,即不允許多個(gè)消費(fèi)者同時(shí)進(jìn)行g(shù)edata,不允許多個(gè)生產(chǎn)者同時(shí)進(jìn)行putdata操作。 until false end consumer:begin repeat P(full); getdata; V(empty); until false. end parend end情況3 一個(gè)buffer,多個(gè)生產(chǎn)者,多個(gè)消費(fèi)者,多個(gè)生產(chǎn)者和消費(fèi)者都在不斷地存取buffer,即生產(chǎn)者不斷地進(jìn)行putdata操作,消費(fèi)者不斷地進(jìn)行g(shù)etdata操作。 buffer: array [1] of item。(4) P、V操作實(shí)現(xiàn) var full:semaphore:=0。 empty表示buffer是否為空。full表示buffer是否有數(shù)據(jù)。 end parend end情況2 一個(gè)buffer,一個(gè)生產(chǎn)者,一個(gè)消費(fèi)者,生產(chǎn)者不斷地進(jìn)行putdata操作,消費(fèi)者不斷地進(jìn)行g(shù)etdata操作,即:生產(chǎn)者不斷地生產(chǎn),消費(fèi)者不斷地消費(fèi)(1) 操作規(guī)則只有buffer為空時(shí)才能進(jìn)行putdata操作;只有buffer有數(shù)據(jù)時(shí)才能進(jìn)行putdata操作。 end consumer:begin P(full)。 buffer: array [1] of item。(2)操作流程生產(chǎn)者 { putdata; 設(shè)置Buffer有數(shù)據(jù)標(biāo)志 V(S) }消費(fèi)者 { 判斷buffer是否有產(chǎn)品,沒有則等待; getdata; }(3) 信號(hào)量設(shè)置1個(gè)信號(hào)量full,full表示buffer是否有數(shù)據(jù),初值為0。 解 這是一個(gè)同步問題,生產(chǎn)者和消費(fèi)者分別是2個(gè)并發(fā)的進(jìn)程。 生產(chǎn)者—消費(fèi)者問題演變。S1信號(hào)量的含義為F1(X)是否完成。}Procedure F1(x){y1= 計(jì)算1。P(S1)。P1=Creat(NF1, F1,x,……)。V(S2)}解法2Main ( )Public y, y1, y2,. P1,xSemaphore S1{ input(x)。}Procedure F1(x){y1= 計(jì)算1。P(S2)。P2=Creat(NF2, F2, x,……)。S2=0。 (6) 確定P、V操作的位置上面①處是一個(gè)P操作,P(S1);上面②處是一個(gè)P操作,P(S2);上面③處是一個(gè)V操作,V(S1);上面④處是一個(gè)V操作,V(S2)。 ④(4) 確定信號(hào)量的個(gè)數(shù)和含義根據(jù)同步規(guī)則以及操作流程確定信號(hào)量的個(gè)數(shù)是2個(gè),S1和S2:S1含義是F1(X)計(jì)算是否完成; S2含義是F2(X)計(jì)算是否完成。(3) 同步的操作流程〈進(jìn)程main〉 創(chuàng)立進(jìn)程p1來計(jì)算F1(X); 創(chuàng)立進(jìn)程p2來計(jì)算F2(X); F1(X)計(jì)算是否完成?沒有,等待;① F2(X)計(jì)算是否完成?沒有,等待;② 進(jìn)行加法運(yùn)算。 使用多個(gè)進(jìn)程計(jì)算Y=F1(X)+F2 (X).解 (1) 確定并發(fā)和順序操作在這個(gè)問題中,F(xiàn)1(X)和F2 (X)的計(jì)算是可以并行處理的,因此F1(X)和F2 (X)可以分別出現(xiàn)在兩個(gè)進(jìn)程中。 Block (*) Wakeup(P)} } else =1
點(diǎn)擊復(fù)制文檔內(nèi)容
法律信息相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1