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

正文內(nèi)容

進程的同步與通信進程死鎖-在線瀏覽

2025-01-30 21:44本頁面
  

【正文】 ? fork():創(chuàng)建一個新進程。 也就是說不管是父進程還是子進程,在占有處理機后,都從 fork()調(diào)用的返回點開始運行 。 14 ? exit( status):進程結(jié)束。 ? wait( status):等待子進程結(jié)束。 (2)在控制返回調(diào)用者時,同時將所等到的子進程 pid作為 wait()系統(tǒng)調(diào)用函數(shù)的返 ? waitpid( pid, ? ):等待 pid所指定的進程結(jié)束。 輸入進程 緩沖區(qū) 計算進程 進程的 同步與互斥 ? 互斥關(guān)系(間接制約): 把并發(fā)進程間存在的因相互競爭使用獨占資源(共享資源)而產(chǎn)生的制約關(guān)系。 一般包括:慢速設(shè)備,共享的變量、數(shù)據(jù)結(jié)構(gòu)、緩沖區(qū)、表格、隊列、棧、文件等。 同步與臨界段問題 19 例: 2個進程 P1, P2分別對共享變量 account執(zhí)行加 1和加 2的操作, account 初始值為 0, account的結(jié)果為多少? P1, P2的執(zhí)行順序如下: P1 M=account。 account=M。 N=N+2。 P1 M=account。 account=M。 N=N+2。 進程推進順序 按此順序執(zhí)行account=2 按此順序執(zhí)行account=1 兩點說明: ?產(chǎn)生與時間有關(guān)的錯誤。 20 ? 臨界段 ? 定義: 指在進程中訪問臨界資源的那段代碼。 2)在退出臨界段后,必須有一段代碼來清除 “ 正在訪問臨界段 ” 標志,或發(fā)出本進程已經(jīng)退出臨界段的信息,把這段代碼稱為 退出區(qū) (釋放)。 //進入?yún)^(qū) critical code。 //退出區(qū) remainder code。如果不互斥使用會交叉輸出。 Parbegin P1: { M:=count。 count:= M。 N:=N+2。 } Parend。 ? 同步機構(gòu)應(yīng)遵循 4個準則: 空閑讓進; 忙則等待; 有限等待; 讓權(quán)等待; ? 實現(xiàn)方法 ① 軟件方法 ② 硬件方法 25 實現(xiàn)臨界段的硬件方法 與計算機體系結(jié)構(gòu)有關(guān) 屏蔽中斷法 中斷引起的并發(fā)會導(dǎo)致錯誤的結(jié)果 進程 1的程序 disableInterrupt()。 enableInterrupt()。 Balance=balanceamount。 兩條命令: enableInterrupt, disableInterrupt 缺點: 1)可能影響到 I/O行為 2)只能用于單處理機系統(tǒng) 26 “ Test_and_Set”指令 該指令功能描述為: boolean Test_and_Set( boolean target) { Boolean rv= target。 //進入?yún)^(qū) critical section。 //退出區(qū) non critical section。 27 二、“ Swap”指令 該指令功能描述為: void Swap( boolean a, boolean b) { boolean temp=a a = b b = temp } 28 設(shè) Lock為全局布爾變量(初值為 false),每個進程設(shè)一個局部布爾變量 Key。 do{ key = true。 critical section Lock = false。 ? 信號量 S為一整型變量: ? P(S): While S≤0 ; S = S1; ? V( S): S = S+ 1; P,V操作是兩條原語,即保證 P, V操作對變量 S的訪問是互斥操作。 ? 實現(xiàn)臨界段的元方法 : ?屏蔽中斷 (只用于單機 ); ?加硬鎖 ,如“ Test_and_Set” ,“ Swap” 硬指令。 While(s≤0){ enableIntrrupt()。 } s=s1。 } V(s){ disableIntrrupt()。 enableIntrrupt()。 基本思想是: ? 在 P操作循環(huán)等待的地方加入放棄處理機,進入等待隊列動作; ? 在 V操作時,從等待隊列中摘取進程變?yōu)榫途w態(tài)。 一個數(shù)型變量 struct process *L。 2. P操作 P(S): =- 1。 3. V操作 V(S): :=value+1 if ≤0 then 從 取一進程,掛入就緒隊列。 34 信號量的物理意義 ? P(s)操作: ① 請求分配一個 S代表 的資源,執(zhí)行 ; ② 若 0, 表示系統(tǒng)已無該類資源,申請者阻塞。 35 3. 利用信號量實現(xiàn)進程互斥 ? 使用方法: 1)為每一個共享的臨界資源設(shè)置一個互斥信號量,其初值為 1。 ? 注意: 對同一信號量操作的 P與 V操作在進程中必須成對出現(xiàn)。進程 pi為第 i個售票處為旅客服務(wù)的進程,進程功能如下: pi() { 接受旅客訂票要求; Xi=Ri 。 Ri =Xi。 2)幾個進程都要訪問票務(wù)中心的共享變量 Ri,可能出現(xiàn)這樣的執(zhí)行順序: ① 第 i個售票處的售票進程 pi剛剛?cè)〕?Ri, 執(zhí)行 Xi=Ri; ② 第 j個售票處的售票進程 pj馬上執(zhí)行 Xj= Xj1。Ri =Xi。 39 semaphore mutex。 pi() { 接受旅客訂票要求; P(mutex)。 //將票務(wù)中心該次航班的余票 Ri取出送該進 //程工作單元 Xi if (Xi=1) { Xi= Xi1。 V(mutex)。 } else { V(mutex)。 } ? 解決辦法 40 ? 同步模型: 假設(shè)有兩個協(xié)作的并發(fā)進程 P1, P2, S1是 P1中的一段代碼, S2是 P2中的一段代碼,只有 P1中的 S1執(zhí)行完后 P2中的 S2才能開始執(zhí)行 ? 實現(xiàn)方法: 利用信號量的同步原語 P可以實現(xiàn) P1向 P2發(fā)送消息,用 V來測試 P1的消息是否到達。 V(synch)。 S2。 41 啟動汽車 正常開車 到站停車 開車門 乘客上下車 關(guān)車門 司機和售票員同步示意圖 售車票 司機 售票員 stop close 利用信號量實現(xiàn)進程同步的例子 ? 現(xiàn)實例子: 42 設(shè)置信號量 close表示車門是否關(guān)好,初值為 0,表示門未關(guān)好,不允許司機啟動汽車;設(shè)置信號量 stop表示汽車是否停穩(wěn),初值為 0,表示未停穩(wěn),售票員不能開車門。 Driver() {
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1