国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

進程間通信之“讀者—寫者”問題的分析與實現(xiàn)

2012-04-29 11:52:48郝亞洲李文敏
環(huán)球市場信息導報 2012年7期
關鍵詞:間通信線程隊列

郝亞洲 李文敏

計算機操作系統(tǒng)原理課程是計算機科學與技術及相關專業(yè)的核心課程,歷來為計算機及信息學科所重視。操作系統(tǒng)原理課程中重要的一環(huán)就是進程間的通信問題。而“讀者-寫者”問題更是進程間通信的經(jīng)典,學好它不僅可使學生鞏固理論學習的概念、原理、設計及算法,同時也可培養(yǎng)軟件開發(fā)所應有的系統(tǒng)結(jié)構(gòu)設計和軟件工程素養(yǎng)。

操作系統(tǒng);文件系統(tǒng);功能調(diào)用

1.問題的提出及論文的目的

在Windows7環(huán)境下,創(chuàng)建一個控制臺進程,此進程包含n個線程。用這n個線程來表示n個讀者或?qū)懻?。每個線程按相應測試數(shù)據(jù)文件的要求進行讀寫操作。用信號量機制分別實現(xiàn)讀者優(yōu)先和寫者優(yōu)先問題。

通過分析并實現(xiàn)經(jīng)典的“讀者-寫者”問題,鞏固對線程及其同步機制的學習效果,加深對相關基本概念的理解,并讓讀者了解如何將基本原理和實際設計有機的結(jié)合。

2.設計思路

可以將所有讀者和所有寫者分別存于一個讀者等待隊列和一個寫者等待隊列中,每當讀允許時,就從讀者隊列中釋放一個或多個讀者線程進行讀操作;每當寫允許時,就從寫者隊列中釋放一個寫者線程進行寫操作。

讀者優(yōu)先。讀者優(yōu)先指的是除非有寫者在寫文件,否則讀者不需要等待。所以可以用一個整數(shù)變量Read count記錄當前的讀者數(shù)目,用于確定是否需要釋放正在等待的寫者進程(當Read count=0時,表明所有的讀者讀完,需要釋放寫者等待隊列中的一個寫者)。每當一個讀者開始讀文件時,必須修改Read count變量。因此需要一個互斥對象mutex來實現(xiàn)對全局變量Read count修改時的互斥。

另外,為了實現(xiàn)讀-寫互斥,需要增加一個臨界區(qū)對象Write。當寫者發(fā)出寫請求時,必須申請臨界區(qū)對象的所有權(quán)。通過這種方法,可以實現(xiàn)讀-寫互斥,當Read count=1時(即第一個讀者到來時),讀者線程也必須申請臨界區(qū)對象的所有權(quán)。

當讀者擁有臨界區(qū)的所有權(quán)時,寫者阻塞在臨界區(qū)對象Write上。當寫者擁有臨界區(qū)的所有權(quán)時,第一個讀者判斷完”Read count==1”后阻塞在Write上,其余的讀者由于等待對Read count的判斷,阻塞在mutex上。

寫者優(yōu)先。寫者優(yōu)先與讀者優(yōu)先相類似。不同之處在于一旦一個寫者到來,它應該盡快對文件進行寫操作,如果有一個寫者在等待,則新到來的讀者不允許進行讀操作。為此應當填加一個整形變量Write count,用于記錄正在等待的寫者的數(shù)目,當Write count=0時,才可以釋放等待的讀者線程隊列。

為了對全局變量Write count實現(xiàn)互斥,必須增加一個互斥對象mutex3。

為了實現(xiàn)寫者優(yōu)先,應當填加一個臨界區(qū)對象read,當有寫者在寫文件或等待時,讀者必須阻塞在read上。

讀者線程除了要對全局變量Read count實現(xiàn)操作上的互斥外,還必須有一個互斥對象對阻塞read這一過程實現(xiàn)互斥。這兩個互斥對象分別命名為mutex1,mutex2。

以上內(nèi)容很清楚的講述了進程間通信之經(jīng)典問題—“讀者-寫著”問題的本質(zhì),并且提出了實現(xiàn)的方法,可以幫助讀者學好操作系統(tǒng)這門核心的計算機專業(yè)課程。

[1]湯子瀛.計算機操作系統(tǒng)[M].西安:西安電子科技大學出版社,2011.08

[2]特南鮑姆.現(xiàn)代操作系統(tǒng)[M].北京:機械工業(yè)出版社,2002.01

[3]William Stalling.操作系統(tǒng):精髓與設計原理[M].北京:電子工業(yè)出版社,2006.03

猜你喜歡
間通信線程隊列
細胞間通信預測方法研究進展
隊列里的小秘密
基于多隊列切換的SDN擁塞控制*
軟件(2020年3期)2020-04-20 00:58:44
綜合航電分區(qū)間通信元模型設計研究
在隊列里
豐田加速駛?cè)胱詣玉{駛隊列
淺談linux多線程協(xié)作
基于核間寄存器的多核虛擬機系統(tǒng)中虛擬機間通信研究
Linux線程實現(xiàn)技術研究
一種適應多核處理器核間通信機制的設計
石林| 定南县| 新竹县| 博乐市| 新邵县| 缙云县| 黄冈市| 股票| 博兴县| 玉树县| 突泉县| 固始县| 马尔康县| 花莲市| 西乌珠穆沁旗| 金堂县| 波密县| 正宁县| 互助| 榆中县| 宣汉县| 慈溪市| 大宁县| 姚安县| 商城县| 特克斯县| 云南省| 诸暨市| 芒康县| 航空| 阿鲁科尔沁旗| 策勒县| 新郑市| 康马县| 方山县| 永修县| 施秉县| 建水县| 札达县| 恩平市| 通海县|