改進(jìn)型Clock算法實(shí)驗(yàn)報(bào)告_第1頁(yè)
改進(jìn)型Clock算法實(shí)驗(yàn)報(bào)告_第2頁(yè)
改進(jìn)型Clock算法實(shí)驗(yàn)報(bào)告_第3頁(yè)
改進(jìn)型Clock算法實(shí)驗(yàn)報(bào)告_第4頁(yè)
改進(jìn)型Clock算法實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩2頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、福州大學(xué)工程技術(shù)學(xué)院實(shí) 驗(yàn) 報(bào) 告課程名稱: 操作系統(tǒng) _學(xué) 號(hào): xx _姓 名: xx _專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) _年 級(jí): 10級(jí) 學(xué) 期: 2010年第1學(xué)期 _ 2010年12月20日實(shí)驗(yàn)一 頁(yè)面置換算法及其實(shí)現(xiàn)分析一、實(shí)驗(yàn)?zāi)康谋緦?shí)驗(yàn)主要對(duì)操作系統(tǒng)中應(yīng)用的一些關(guān)鍵算法進(jìn)行模擬。學(xué)生通過設(shè)計(jì)與實(shí)現(xiàn)相關(guān)算法,能夠加強(qiáng)對(duì)相應(yīng)理論的理解,并對(duì)了解操作系統(tǒng)內(nèi)部的基本處理原理與過程也有很多益處。2、 實(shí)驗(yàn)要求 描述Clock算法的基本原理、必要的數(shù)據(jù)結(jié)構(gòu)、算法執(zhí)行流程圖、編碼實(shí)現(xiàn)。三、實(shí)驗(yàn)內(nèi)容 1、頁(yè)面置換原理描述在采用請(qǐng)求分頁(yè)機(jī)制的操作系統(tǒng)中,當(dāng)運(yùn)行一個(gè)程序的時(shí)候,若要訪問的頁(yè)面不在內(nèi)存中

2、而需要把它們調(diào)入內(nèi)存,但此時(shí)內(nèi)存已無空閑空間,為了保證該進(jìn)程能正常運(yùn)行,需選擇內(nèi)存中暫時(shí)不用的頁(yè)面調(diào)出到磁盤交換區(qū)。選擇調(diào)出哪個(gè)頁(yè)面,由頁(yè)面算法決定。頁(yè)面置換算法的好壞,直接影響系統(tǒng)的性能,所以一個(gè)好的頁(yè)面置換算法,應(yīng)盡可能選擇調(diào)出較長(zhǎng)時(shí)間內(nèi)不會(huì)再訪問的頁(yè)面,以保證較低的缺頁(yè)率。改進(jìn)型的Clock算法的思想:在將一個(gè)頁(yè)面換出時(shí),如果該頁(yè)已被修改過,便須將它重新寫到磁盤上;但如果該頁(yè)未被修改過,則不必將它拷回磁盤。同時(shí)滿足這兩條件的頁(yè)面作為首先淘汰的頁(yè)。由訪問位A和修改位M可以組合成下面四種類型的頁(yè)面:1 類(A=0,M=0):表示該頁(yè)最近既未被訪問、又未被修改,是最佳淘汰頁(yè)。2 類(A=0,M

3、=1):表示該頁(yè)最近未被訪問,但已被修改,并不是很好的淘汰頁(yè)。3 類(A=1,M=0):最近已被訪問,但未被修改,該頁(yè)有可能再被訪問。4 類(A=1,M=1):最近已被訪問且被修改,該頁(yè)有可能再被訪問。在內(nèi)存中的每個(gè)頁(yè)必定是這四類頁(yè)面之一,在進(jìn)行頁(yè)面置換時(shí),可采用與簡(jiǎn)單Clock算法相類似的算法,其差別在于須同時(shí)檢查訪問位和修改位,以確定該頁(yè)是四類頁(yè)面中的哪一種。此算法稱為改進(jìn)型Clock算法。其執(zhí)行過程可分成以下三步:(1)從指針?biāo)甘镜漠?dāng)前位置開始,掃描循環(huán)隊(duì)列,尋找A=0且M=0的第一類頁(yè)面,將所遇到的第一個(gè)頁(yè)面作為所選中的淘汰頁(yè)。在第一次掃描期間不改變?cè)L問位A。(2)如果第一步失敗,即

4、查找一周后未遇到第一類頁(yè)面,則開始第二輪掃描,尋找A=0且M=1的第二類頁(yè)面,將所遇到的第一個(gè)這類頁(yè)面作為淘汰頁(yè)。在第二輪掃描期間,將所有經(jīng)過的頁(yè)面的訪問位置0。(3)如果第二步也失敗,即未找到第二類頁(yè)面,則將指針返回到開始的位置,并將所有的訪問位復(fù)0。然后,重復(fù)第一步,如果仍失敗,必要時(shí)再重復(fù)第二步,此時(shí)就一定能夠找到被淘汰的頁(yè)。3、改進(jìn)型的 Clock算法的流程圖如下:3、頁(yè)面置換實(shí)現(xiàn)過程(1) 定義頁(yè)面表的數(shù)據(jù)結(jié)構(gòu),它包括頁(yè)號(hào)(info),訪問位(A),修改標(biāo)志(M)和指針4個(gè)屬性。代碼如下: template<typename T>class Node/結(jié)點(diǎn)類模板,不同數(shù)據(jù)

5、類型,編譯時(shí)生成不同的類 public:T info; /定義三個(gè)變量int A; /訪問頁(yè)變量,引用位的值int M; /修改頁(yè)變量,引用位的值Node<T> *link;/定義類的基地址 ;(2)通過界面接收的頁(yè)面數(shù)(K),在主程序中先對(duì)K個(gè)頁(yè)面通過調(diào)用方法Insertrear(T data)進(jìn)行初始化,代碼如下:while(1)if(n<k)cout<<"請(qǐng)輸入要訪問的頁(yè)面號(hào):"<<endl; cin>>num; cout<<endl; www->Insertrear(num); n+;初始化顯示

6、如下圖:(3) 初始化頁(yè)面之后會(huì)提示是否對(duì)內(nèi)存中存在的頁(yè)面進(jìn)行修改,選擇Y,就會(huì)調(diào)用方法change(),并對(duì)你選擇的頁(yè)面的修改標(biāo)志(M)進(jìn)行修改,把它改為1(說明該頁(yè)面已被修改過了)。選擇N,就會(huì)提示你“請(qǐng)輸入訪問的頁(yè)面號(hào)”,當(dāng)你輸入一個(gè)頁(yè)面號(hào): a、通過調(diào)用方法find0(T data)判斷你輸入的頁(yè)面號(hào)是否跟內(nèi)存中存在的頁(yè)面號(hào)是否相同,如果相同,通過調(diào)用方法tihuan(Node<T>*p,T data)來進(jìn)行置換頁(yè)面。代碼如下:find0(T data)Node<T> *tempb;tempb=head->link;while(tempb!=head)if

7、(tempb->info=data)return tempb;tempb=tempb->link;return NULL; b、如果不是相同的兩個(gè)頁(yè)面,通過調(diào)用find1(T data)來尋找內(nèi)存中是否存在訪問位為0,修改標(biāo)志為0的頁(yè)號(hào),如果找到了,通過調(diào)用方法tihuan(Node<T>*p,T data)來進(jìn)行置換頁(yè)面。如果沒有找到就調(diào)用find2(T data)來進(jìn)行第二次掃描,并把掃描過的頁(yè)面的訪問為改為1。如果在內(nèi)存中找到訪問為為0,修改標(biāo)志為1的頁(yè)號(hào),通過調(diào)用方法tihuan(Node<T>*p,T data)來進(jìn)行置換頁(yè)面,否則,繼續(xù)循環(huán)fin

8、d1(T data)的查找直到置換為止。代碼如下:第一次掃描:find1(T data) Node<T> *tempb;tempb=head->link;while(tempb!=head)if(tempb->A=0&&tempb->M=0)return tempb;tempb=tempb->link;return NULL; 第二次掃描:find2(T data) Node<T> *tempb;tempb=head->link;while(tempb!=head)if(tempb->A=0&&temp

9、b->M=1)return tempb;tempb->A=0;tempb=tempb->link;return NULL;找到內(nèi)存中存在訪問位為0,修改標(biāo)志為0的頁(yè)號(hào),如下圖:找到內(nèi)存中存在訪問為0,修改標(biāo)志為1的頁(yè)號(hào),如下圖:四、實(shí)驗(yàn)總結(jié) 通過這幾周的課程設(shè)計(jì),加深了對(duì)操作系統(tǒng)的認(rèn)識(shí),了解了操作系統(tǒng)中各種資源分配算法的實(shí)現(xiàn),特別是對(duì)虛擬存儲(chǔ),頁(yè)面置換有了深入的了解,并能夠用高級(jí)語(yǔ)言進(jìn)行模擬演示。在這短短的幾周時(shí)間里,通過瀏覽、閱讀有關(guān)的資料,學(xué)到了很多東西,同時(shí)也發(fā)現(xiàn)僅僅書本的知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,需要把知識(shí)運(yùn)用到實(shí)踐中去,能力才能得到提高。 不僅提高對(duì)操作系統(tǒng)的了解,這次的課程設(shè)計(jì)也使自己的C+編程能力加強(qiáng)了不少。一分耕耘,一分收獲,這次的課程設(shè)計(jì)讓我受益匪淺。雖然自己所做的很少也不夠完善,但畢竟也是努力的結(jié)果。另外,使我體會(huì)最深的是:任何一門知識(shí)的掌握,僅靠學(xué)習(xí)理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,要與實(shí)際動(dòng)手操作相結(jié)合才能達(dá)到功效。參考文獻(xiàn)1 朱振

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論