讀者寫者問題-操作系統(tǒng)課程設(shè)計(共16頁).doc
《讀者寫者問題-操作系統(tǒng)課程設(shè)計(共16頁).doc》由會員分享,可在線閱讀,更多相關(guān)《讀者寫者問題-操作系統(tǒng)課程設(shè)計(共16頁).doc(16頁珍藏版)》請在匯文網(wǎng)上搜索。
1、精選優(yōu)質(zhì)文檔-傾情為你奉上某某大學(xué)課程設(shè)計報告課程名稱: 操作系統(tǒng)課程設(shè)計設(shè)計題目: 讀者寫者問題 系 別: 計算機(jī)系 專 業(yè): 計算機(jī)科學(xué)與技術(shù) 組 別: 第四組 學(xué)生姓名: 某某某 學(xué) 號: 起止日期: 指導(dǎo)教師: 專心-專注-專業(yè)目 錄1、需求分析1.1 課程設(shè)計題目 課程設(shè)計題目:讀者寫者問題1.2課程任務(wù)及要求編寫程序?qū)崿F(xiàn)讀者寫者算法(讀_寫互斥,讀_讀允許,寫寫互斥)給出解決方案(包括說明設(shè)計實現(xiàn)的原理,采用的數(shù)據(jù)結(jié)構(gòu)等)畫出程序的基本結(jié)構(gòu)框圖和流程圖分析說明每一部分程序的的設(shè)計思路實現(xiàn)源代碼按期提交完整的程序代碼和可執(zhí)行程序根據(jù)要求完成課程設(shè)計報告總結(jié)1.3課程設(shè)計思想 讀者-寫
2、者問題是一個經(jīng)典的并發(fā)程序設(shè)計問題。有兩組并發(fā)進(jìn)程:讀者和寫者,共享文件F,要求:(1) 允許多個讀者同時對文件執(zhí)行讀操作;(2) 只允許一個寫者對文件執(zhí)行寫操作;(3) 任何寫者在完成寫操作之前不允許其他讀者或?qū)懻吖ぷ鳎?4) 寫者在執(zhí)行寫操作前,應(yīng)讓已有的寫者和讀者全部退出。 單純使用信號量不能解決此問題,必須引入計數(shù)器readcount對讀進(jìn)程記數(shù)。 為了有效的解決讀者寫者問題,需要引進(jìn)讀者-寫者鎖,允許多名讀者同時以只讀的方式存取有鎖保護(hù)的對象;或一位寫者以寫方式存取有鎖保護(hù)的對象。當(dāng)一名或多名讀者上鎖后,此時形成讀鎖,寫者將不能訪問有鎖保護(hù)的對象;當(dāng)鎖被請求者用于寫操作時,形成寫鎖,
3、其他進(jìn)程的讀寫操作必須等待。1.4軟硬件運行環(huán)境及開發(fā)工具本課程設(shè)計在windows操作系統(tǒng)下,使用java語言完成的。2、 概要設(shè)計2.1程序流程圖本系統(tǒng)主要有讀者和寫者兩類對象,所以系統(tǒng)主要針對的是這兩類對象的操作。讀者類對象的流程圖如下:圖2.1 讀者類對象寫者類對象的流程圖如下:圖2.2 寫者類對象2.2所用原理2.2.1 并發(fā)原理進(jìn)程的并發(fā)是指一組進(jìn)程的執(zhí)行在時間上重疊的,所謂的時間重疊是指一個進(jìn)程執(zhí)行第一條指令是在另一個進(jìn)程執(zhí)行完最后一條指令之前開始的。并發(fā)的實質(zhì)是處理器在幾個進(jìn)程之間的多路復(fù)用,并發(fā)是對有限物理資源強(qiáng)制行使多用戶共享,消除計算機(jī)部件之間的互等現(xiàn)象,提高系統(tǒng)資源的利
4、用率。并發(fā)進(jìn)程可能是無關(guān)的,也可能是交互的。進(jìn)程的交互必須是有控制的,否則會出現(xiàn)不正確的計算結(jié)果。2.2.2 互斥操作原理 互斥是指若干進(jìn)程因互相爭奪獨占型資源而產(chǎn)生的競爭制約關(guān)系。 并發(fā)進(jìn)程中與共享變量有關(guān)的程序段稱為“臨界區(qū)”,共享變量所代表的資源稱為“臨界資源”,臨界區(qū)必須以一種相對于其他進(jìn)程而言互相排斥的方式執(zhí)行。如果能夠保證一個進(jìn)程在臨界區(qū)執(zhí)行時,不讓另一個進(jìn)程進(jìn)入相同的臨界區(qū),即各進(jìn)程對共享變量的訪問是互斥的,那么,就不會引發(fā)與時間有關(guān)的錯誤。 而為了正確而有效地使用臨界資源,共享變量的并發(fā)進(jìn)程應(yīng)遵守臨界區(qū)調(diào)度的三個原則:一次至多有一個進(jìn)程進(jìn)入臨界區(qū)內(nèi)執(zhí)行;如果已有進(jìn)程在臨界區(qū)中,
5、試圖進(jìn)入臨界區(qū)的其他進(jìn)程應(yīng)等待;進(jìn)入臨界區(qū)內(nèi)進(jìn)程應(yīng)在有限時間內(nèi)退出,以便讓等待隊列中的一個進(jìn)程進(jìn)入。總結(jié)起來有三句話:互斥使用,有空讓進(jìn);忙則等待,有限等待;擇一而入,算法可行。2.2.3 面向?qū)ο缶幊叹幊淘砻嫦驅(qū)ο笫且环N新興的程序設(shè)計方法,或者說它是一種新的程序設(shè)計范型,其基本思想是使用對象,類,繼承,封裝,消息等基本概念來進(jìn)行程序設(shè)計。它是從現(xiàn)實世界中客觀存在的事物(即對象)出發(fā)來構(gòu)造軟件系統(tǒng),并在系統(tǒng)構(gòu)造中盡可能運用人類的自然思維方式,強(qiáng)調(diào)直接以問題域(現(xiàn)實世界)中的事物為中心來思考問題,認(rèn)識問題,并根據(jù)這些事物的本質(zhì)特點,把他們抽象地表示為系統(tǒng)中的對象,作為系統(tǒng)的基本構(gòu)成單位(而不是
6、用一些與現(xiàn)實世界中的事物相關(guān)比較遠(yuǎn),并且沒有對應(yīng)關(guān)系的其他概念來構(gòu)造系統(tǒng))。這可以使系統(tǒng)直接地映射問題域,保持問題域中事物及其相互關(guān)系的本來面貌。本課程設(shè)計中涉及了兩個對象,因此用面向?qū)ο蟮恼Z言來編程是適合的。我們這次用到了Java語言。2.2.4 鎖機(jī)制原理 為了解決讀者和寫者之間的同步互斥問題,在本課程設(shè)計中要用到Java中的鎖機(jī)制,這樣會給編程帶來很大的方便。 多線程同步的實現(xiàn)最終依賴鎖機(jī)制。我們可以想象某一共享資源是一間屋子,每個人都是一個線程。當(dāng)A希望進(jìn)入房間時,他必須獲得門鎖,一旦A獲得門鎖,他進(jìn)去后就立刻將門鎖上,于是B,C,D.就不得不在門外等待,直到A釋放鎖出來后,B,C,D
7、.中的某一人搶到了該鎖(具體搶法依賴于JVM的實現(xiàn),可以先到先得,也可以隨機(jī)挑選),然后進(jìn)屋又將門鎖上。這樣,任一時刻最多有一人在屋內(nèi)(使用共享資源)。 Java語言規(guī)范內(nèi)置了對多線程的支持。對于Java程序來說,每一個對象實例都有一把“鎖”,一旦某個線程獲得了該鎖,別的線程如果希望獲得該鎖,只能等待這個線程釋放鎖之后。獲得鎖的方法只有一個,就是synchronized關(guān)鍵字。1 用鎖操作原語實現(xiàn)互斥 為解決進(jìn)程互斥進(jìn)人臨界區(qū)的問題,可為每類臨界區(qū)設(shè)置一把鎖,該鎖有打開和關(guān)閉兩種狀態(tài),進(jìn)程執(zhí)行臨界區(qū)程序的操作按下列步驟進(jìn)行: 關(guān)鎖。先檢查鎖的狀態(tài),如為關(guān)閉狀態(tài),則等待其打開;如已打開了,則將其
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該PPT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 讀者 問題 操作系統(tǒng) 課程設(shè)計 16