第二章 程序的描述與控制

2021-08-28 07:33:04 字數 1982 閱讀 3746

經典程序的同步問題

哲學家就餐問題

避免死鎖的解決方法:

(1)、5位哲學家就餐只允許4位同時去拿左邊的筷子,剩乙個堵塞

問題:為什麼不讓3個或者2個同時去拿左邊的筷子?

回答:為了充分利用資源,不讓cpu空閒

(2)、利用and訊號量,如果同時拿到兩邊的筷子就執行,否則就堵塞

(3)、奇數號哲學家拿左邊的筷子,偶數號哲學家拿右邊的筷子,這樣可能會出現1 ,2號哲學家同時爭搶筷子

生產者-消費者問題

需考慮:

(1)兩個生產者同時向乙個盤子放入產品

(2)兩個消費者同時取同乙個盤子的產品

(3)盤子都空的情況下消費者去取

(4)盤子都滿的情況下生產者去放。

解決方法:**:

empty=n;full=0;mutex=1;

producer:

repeat

produce an item in nexp;

//empty和full兩個訊號量的設定解決(3)(4)問題

//兩個wait順序不能顛倒,先有盤子多個消費者才能去爭搶資源

wait(empty);//是否有空的盤子

wait(mutex);//互斥訊號量,解決上述(1)(2)問題

buffer[in]:=nexp;

in:=(in+1) mod n;//進入臨界區**執行in+1後

signal(mutex);//釋放訊號量mutex

signal(full);//釋放乙個產品,產品數+1,生產者可取

until false;

consumer:

repeat

wait(full);//盤子中是否有產品

wait(mutex);

nextc:=buffer(out);

out:=(out+1) mod n;

signal(mutex);

signal(empty);//釋放盤子,消費者可放

讀者-寫者問題

(1)讀者優先的方式(讀者優先體現在一旦讀者爭搶到讀資源,要等待所有讀者都讀完才釋放資源)

reader:

repeat

//rmutex的作用是防止多個讀者同時去爭搶wmutex資源,或者多個讀者可以同時釋放資源

wait(rmutex);//讀者之間的互斥

if readcount=0 then wait(wmutex);//第零個讀者去和寫者爭搶資源

readcount:=readcount+1;

signal(rmutex);//+1之後釋放資源

...perform read opration;

...wait(rmutex)//不釋放wmutex,多個讀者

readcount:=readcount-1;

if readcount=0 then signal(wmutex);//沒有讀者,即釋放資源

signal(rmutex);//釋放rmutex,回到初值

until false;

writer:

dowhile(true);

(2)、使用and型訊號量(寫者優先)

l=rn,mx=1;

//若讀者先來,l-1,(l,rn,0)控制寫者獲取不了資源

//若寫著先來,mx-1,(mx,1,0)控制讀者獲取不了資源

reader:

repeat

swait(l,1,1);

swait(mx,1,0);//起到乙個開關的作用

...讀操作...

ssignal(l,1);

until false;

writer:

repeat

swait(mx,1,1;l,rn,0);//後面的0為開關作用

寫操作;

ssignal(mx,1);

until false;

第二章 程序的描述與控制

概念 所謂前趨圖 指乙個有向無迴圈圖 dag 它用於描述程序之間執行的先後順序。特徵 特徵 定義 為了使程式併發執行,並且可以對併發執行的程式加以描述和控制,人們引入了程序的概念。為了使參與併發執行的每個程式都能獨立執行,在作業系統中必須為之分配乙個專門的資料結構,稱為程序控制塊 pcb 系統利用p...

作業系統 第二章程序的控制與描述(5)

通訊鏈路 communication link 要在傳送程序和接收程序之間能進行通訊,必須在兩者之間建立一條通訊鏈路。兩種方式 顯式的 建立連線 和拆除鏈路。用命令 原語 請求系統做。這種方式主要用於計算機網路中 系統自動地建立一條鏈路。無須明確提出建立鏈路的請求,只須利用系統提供的傳送命令 原語 ...

第二章 程序通訊

1 低階通訊 程序之間的互斥和同步 訊號量機制是有效的同步工具,但作為通訊工具缺點如下 1 效率低 通訊量少 2 通訊對使用者不透明 程式設計師實現,作業系統只提供共享儲存器供 操作 2 高階程序通訊 使用者直接利用作業系統提供的一組通訊命令,高效地傳送大量資料的通訊方式。作業系統隱藏了程序通訊的細...