《《微機原理及接口技術》全套PPT電子課件教案作業(yè)解答》由會員分享,可在線閱讀,更多相關《《微機原理及接口技術》全套PPT電子課件教案作業(yè)解答(7頁珍藏版)》請在裝配圖網上搜索。
1、3.10.設在書設在書3.6節(jié)中所描述的生產者節(jié)中所描述的生產者-消費者問題中消費者問題中,其緩沖部分為其緩沖部分為m個長度個長度相等的有界緩沖區(qū)組成相等的有界緩沖區(qū)組成,且每次傳輸數(shù)且每次傳輸數(shù)據(jù)長度等于有界緩沖區(qū)長度以及生產據(jù)長度等于有界緩沖區(qū)長度以及生產者和消費者可對緩沖區(qū)同時操作。重者和消費者可對緩沖區(qū)同時操作。重新描述發(fā)送過程新描述發(fā)送過程deposit(data)和接收和接收過程過程remove(data)。 .PQ放 消 息取 消 息nn個 緩 沖 區(qū)(Buffer)ij設第設第I塊緩沖區(qū)的公用信號量為塊緩沖區(qū)的公用信號量為mutexI,保證生產保證生產者進程和消費者進程對同一塊
2、緩沖區(qū)操作的互斥者進程和消費者進程對同一塊緩沖區(qū)操作的互斥,初值為初值為1。設信號量設信號量avail為生產者進程的私用信號量為生產者進程的私用信號量,初值為初值為m。信號量信號量full為消費者進程的私用信號量為消費者進程的私用信號量,初值為初值為0。 deposit (data) Begin P(avail) 選擇一個空緩沖區(qū)選擇一個空緩沖區(qū)i P(mutextI) 送數(shù)據(jù)入緩沖區(qū)送數(shù)據(jù)入緩沖區(qū)i V(full) V(mutexI) EndRemove (data)BeginP(full)選擇一個滿緩沖區(qū)選擇一個滿緩沖區(qū)IP(mutextI)取緩沖區(qū)取緩沖區(qū)i中的數(shù)據(jù)中的數(shù)據(jù)V (avai
3、l)V(mutextI) End PBPA3.11兩進程兩進程PA,PB通過兩通過兩FIFO緩沖區(qū)隊列連接緩沖區(qū)隊列連接 ,每個緩沖區(qū)每個緩沖區(qū)長度等于傳送消息長度。長度等于傳送消息長度。進程進程PA ,PB之間的通信滿足如下條件之間的通信滿足如下條件:(a) 至少有一個空緩沖區(qū)存在時至少有一個空緩沖區(qū)存在時,相應的發(fā)送進程才能發(fā)送相應的發(fā)送進程才能發(fā)送一個消息。一個消息。(b)當緩沖隊列中至少存在一個非空緩沖區(qū)時當緩沖隊列中至少存在一個非空緩沖區(qū)時,相應的接收進相應的接收進程才能接收一個消息。程才能接收一個消息。 試描述發(fā)送過程試描述發(fā)送過程Send(I,m)和接收過程和接收過程receiv
4、e(I,m),這里這里i代代表緩沖隊列。表緩沖隊列。 隊列隊列0隊列隊列1bufempty0,buffull1是PA的私有信號量,buffull0,bufempty1是PB的私有信號量。 bufempty0=bufempty1=n, (n為緩沖區(qū)隊列的緩沖區(qū)個數(shù))buffull0=buffulll=0PA發(fā)送過程發(fā)送過程Send(0,m)和接收過程和接收過程receive(1,m)send(0,m)BeginP(bufempty0)按按FIFO方式選擇一個方式選擇一個空緩沖區(qū)空緩沖區(qū)送 數(shù) 據(jù) 入 緩 沖 區(qū)送 數(shù) 據(jù) 入 緩 沖 區(qū) V(buffull0)endReceive (1,m) B
5、egin P(buffull1)按按FIFO方式選擇一個裝滿數(shù)方式選擇一個裝滿數(shù)據(jù)的緩沖區(qū)據(jù)的緩沖區(qū)取緩沖區(qū)取緩沖區(qū)i中的數(shù)據(jù)中的數(shù)據(jù) V(bufempty1)End PB發(fā)送過程發(fā)送過程Send(1,m)和接收過程和接收過程receive(0,m)send(1,m)BeginP(bufempty1)按按FIFO方式選擇一個方式選擇一個空緩沖區(qū)空緩沖區(qū)送 數(shù) 據(jù) 入 緩 沖 區(qū)送 數(shù) 據(jù) 入 緩 沖 區(qū) V(buffull1)endReceive (0,m) Begin P(buffull0)按按FIFO方式選擇一個裝滿數(shù)方式選擇一個裝滿數(shù)據(jù)的緩沖區(qū)據(jù)的緩沖區(qū)取緩沖區(qū)取緩沖區(qū)i中的數(shù)據(jù)中的數(shù)據(jù) V(bufempty0)End