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

正文內(nèi)容

進(jìn)程的同步與通信進(jìn)程死鎖-文庫(kù)吧

2024-12-19 21:44 本頁(yè)面


【正文】 S6 18 ? 臨界資源 臨界資源: 一次僅允許一個(gè)進(jìn)程使用的硬件或軟件資源。 一般包括:慢速設(shè)備,共享的變量、數(shù)據(jù)結(jié)構(gòu)、緩沖區(qū)、表格、隊(duì)列、棧、文件等。 注意: 對(duì)于臨界資源,必須互斥訪問(wèn),否則會(huì)導(dǎo)致執(zhí)行結(jié)果的不確定性。 同步與臨界段問(wèn)題 19 例: 2個(gè)進(jìn)程 P1, P2分別對(duì)共享變量 account執(zhí)行加 1和加 2的操作, account 初始值為 0, account的結(jié)果為多少? P1, P2的執(zhí)行順序如下: P1 M=account。 M=M+1。 account=M。 P2 N=account。 N=N+2。 account=N。 P1 M=account。 M=M+1。 account=M。 P2 N=account。 N=N+2。 account=N。 進(jìn)程推進(jìn)順序 按此順序執(zhí)行account=2 按此順序執(zhí)行account=1 兩點(diǎn)說(shuō)明: ?產(chǎn)生與時(shí)間有關(guān)的錯(cuò)誤。 ?對(duì)臨界資源的互斥使用,應(yīng)先申請(qǐng)、判斷。 20 ? 臨界段 ? 定義: 指在進(jìn)程中訪問(wèn)臨界資源的那段代碼。 ? 訪問(wèn)過(guò)程: 1)在進(jìn)入臨界段之前,寫一段代碼以檢查可否進(jìn)入臨界段,通常把這段代碼稱為 進(jìn)入?yún)^(qū) (申請(qǐng),判斷 )。 2)在退出臨界段后,必須有一段代碼來(lái)清除 “ 正在訪問(wèn)臨界段 ” 標(biāo)志,或發(fā)出本進(jìn)程已經(jīng)退出臨界段的信息,把這段代碼稱為 退出區(qū) (釋放)。 21 一個(gè)訪問(wèn)臨界資源的進(jìn)程描述如下: While (1) { entry code。 //進(jìn)入?yún)^(qū) critical code。 //臨界段 exit code。 //退出區(qū) remainder code。//剩余區(qū) }; 22 例 2: P1,P2兩進(jìn)程使用同一打印機(jī)。如果不互斥使用會(huì)交叉輸出。 Entry code exit code 使用打印機(jī) P1 Entry code exit code 使用打印機(jī) P2 23 例 3: 對(duì)共享變量 count的互斥訪問(wèn)。 Parbegin P1: { M:=count。 M:=M+1。 count:= M。 } P2: { N:=count。 N:=N+2。 count:=N。 } Parend。 Entry code exit code Entry code exit code 24 如何實(shí)現(xiàn)進(jìn)入?yún)^(qū)、退出區(qū)代碼 —同步機(jī)構(gòu) ? 同步機(jī)構(gòu): 指能實(shí)現(xiàn)進(jìn)程同步的機(jī)制,該機(jī)制能把其它進(jìn)程需要的信息發(fā)送出去,也能測(cè)試自己需要的信息是否到達(dá)。 ? 同步機(jī)構(gòu)應(yīng)遵循 4個(gè)準(zhǔn)則: 空閑讓進(jìn); 忙則等待; 有限等待; 讓權(quán)等待; ? 實(shí)現(xiàn)方法 ① 軟件方法 ② 硬件方法 25 實(shí)現(xiàn)臨界段的硬件方法 與計(jì)算機(jī)體系結(jié)構(gòu)有關(guān) 屏蔽中斷法 中斷引起的并發(fā)會(huì)導(dǎo)致錯(cuò)誤的結(jié)果 進(jìn)程 1的程序 disableInterrupt()。 Balance=balance+amount。 enableInterrupt()。 進(jìn)程 2的程序 disableInterrupt()。 Balance=balanceamount。 enableInterrupt()。 兩條命令: enableInterrupt, disableInterrupt 缺點(diǎn): 1)可能影響到 I/O行為 2)只能用于單處理機(jī)系統(tǒng) 26 “ Test_and_Set”指令 該指令功能描述為: boolean Test_and_Set( boolean target) { Boolean rv= target。 Target =true; Return rv } 如果機(jī)器支持 Test_and_Set,可用下列方法解決 :(Lock=false) do { while( Test_and_Set(lock)) 。 //進(jìn)入?yún)^(qū) critical section。 //臨界區(qū) lock=false。 //退出區(qū) non critical section。 //其它部分 }while( 1) 。 27 二、“ Swap”指令 該指令功能描述為: void Swap( boolean a, boolean b) { boolean temp=a a = b b = temp } 28 設(shè) Lock為全局布爾變量(初值為 false),每個(gè)進(jìn)程設(shè)一個(gè)局部布爾變量 Key。利用Swap指令,可實(shí)現(xiàn)對(duì)臨界區(qū)的加鎖與解鎖。 do{ key = true。 while(key ==ture) Swap (Lock, key)。 critical section Lock = false。 noncritical section }while(1) 29 信號(hào)量 (1965年, Dijkstra提出 ) 信號(hào)量機(jī)構(gòu):“信號(hào)量”、“ P, V操作”。 ? 信號(hào)量 S為一整型變量: ? P(S): While S≤0 ; S = S1; ? V( S): S = S+ 1; P,V操作是兩條原語(yǔ),即保證 P, V操作對(duì)變量 S的訪問(wèn)是互斥操作。 30 ? 原語(yǔ) :指完成某種功能且不被分割或不被中斷執(zhí)行的操作序列 (又稱原子操作 )。 ? 實(shí)現(xiàn)臨界段的元方法 : ?屏蔽中斷 (只用于單機(jī) ); ?加硬鎖 ,如“ Test_and_Set” ,“ Swap” 硬指令。 ? P,V操作的實(shí)現(xiàn) 31 P(s), V(s)的實(shí)現(xiàn) P(s){ disableIntrrupt()。 While(s≤0){ enableIntrrupt()。 disableIntrrupt()。 } s=s1。 enableIntrrupt()。 } V(s){ disableIntrrupt()。 s=s+1。 enableIntrrupt()。 } 32 實(shí)現(xiàn)信號(hào)量時(shí)與進(jìn)程調(diào)度相結(jié)合,消除忙等待現(xiàn)象。 基本思想是: ? 在 P操作循環(huán)等待的地方加入放棄處理機(jī),進(jìn)入等待隊(duì)列動(dòng)作; ? 在 V操作時(shí),從等待隊(duì)列中摘取進(jìn)程變?yōu)榫途w態(tài)。 2. 信號(hào)量的具體實(shí)現(xiàn) 33 1. 信號(hào)量定義 typedef struct{ int:v
點(diǎn)擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1