頁面置換算法操作系統(tǒng)課程設計_第1頁
已閱讀1頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  《操作系統(tǒng)課程設計報告 》</p><p>  專 業(yè): 計算機 </p><p>  班 級: 網絡工程班 </p><p>  姓 名: </p><p>  

2、指導教師: </p><p>  學 號: </p><p>  目 錄</p><p>  1.課程設計目的……………………………………………………2</p><p>  2.課程設計題目描述和要求………………………………………3&l

3、t;/p><p>  3.課程設計內容……………………………………………………3</p><p>  3.1頁面置換原理描述………………………………………………3</p><p>  3.2 模擬頁面置換算法的代碼……………………………………6</p><p>  4.課程設計實驗總結………………………………………………8</p>

4、<p>  5.參考文獻…………………………………………………………9</p><p>  Clock頁面置換算法</p><p><b>  1.課程設計目的</b></p><p>  本實驗主要對操作系統(tǒng)中應用的一些關鍵算法進行模擬。學生通過設計與實現相關算法,能夠加強對相應理論的理解,并對了解操作系統(tǒng)內部的基本處理原理與過程也

5、有很多益處。</p><p>  2.課程設計題目描述和要求</p><p>  基本要求:描述Clock算法的基本原理、必要的數據結構、算法執(zhí)行流程圖、編碼實現。</p><p>  1)初始化:輸入作業(yè)可占用的總頁框數,初始化置空。</p><p>  2)輸入請求序列:輸入一個作業(yè)頁號訪問請求序列,依次占用相應頁框,直至全部占用;<

6、;/p><p>  3)Clock算法:當頁框全部占用后,對于后續(xù)新的頁號訪問請求,執(zhí)行Clock算法,淘汰1個頁面后裝入新的頁號。</p><p>  4)顯示當前分配淘汰序列:顯示淘汰的頁號序列。</p><p><b>  3.課程設計內容</b></p><p>  3.1頁面置換原理描述</p>&l

7、t;p>  在采用請求分頁機制的操作系統(tǒng)中,當運行一個程序的時候,若要訪問的頁面不在內存中而需要把它們調入內存,但此時內存已無空閑空間,為了保證該進程能正常運行,需選擇內存中暫時不用的頁面調出到磁盤交換區(qū)。選擇調出哪個頁面,由頁面算法決定。頁面置換算法的好壞,直接影響系統(tǒng)的性能,所以一個好的頁面置換算法,應盡可能選擇調出較長時間內不會再訪問的頁面,以保證較低的缺頁率。</p><p>  改進型的Clock

8、算法的思想:在將一個頁面換出時,如果該頁已被修改過,便須將它重新寫到磁盤上;但如果該頁未被修改過,則不必將它拷回磁盤。同時滿足這兩條件的頁面作為首先淘汰的頁。由訪問位A和修改位M可以組合成下面四種類型的頁面:</p><p>  1 類(A=0,M=0):表示該頁最近既未被訪問、又未被修改,是最佳淘汰頁。</p><p>  2 類(A=0,M=1):表示該頁最近未被訪問,但已被修改,并不

9、是很好的淘汰頁。</p><p>  3 類(A=1,M=0):最近已被訪問,但未被修改,該頁有可能再被訪問。</p><p>  4 類(A=1,M=1):最近已被訪問且被修改,該頁有可能再被訪問。</p><p>  在內存中的每個頁必定是這四類頁面之一,在進行頁面置換時,可采用與簡單Clock算法相類似的算法,其差別在于須同時檢查訪問位和修改位,以確定該頁是四

10、類頁面中的哪一種。此算法稱為改進型Clock算法。其執(zhí)行過程可分成以下三步:</p><p> ?。?)從指針所指示的當前位置開始,掃描循環(huán)隊列,尋找A=0且M=0的第一類頁面,將所遇到的第一個頁面作為所選中的淘汰頁。在第一次掃描期間不改變訪問位A。</p><p> ?。?)如果第一步失敗,即查找一周后未遇到第一類頁面,則開始第二輪掃描,尋找A=0且M=1的第二類頁面,將所遇到的第一個這

11、類頁面作為淘汰頁。在第二輪掃描期間,將所有經過的頁面的訪問位置0。</p><p>  (3)如果第二步也失敗,即未找到第二類頁面,則將指針返回到開始的位置,并將所有的訪問位復0。然后,重復第一步,如果仍失敗,必要時再重復第二步,此時就一定能夠找到被淘汰的頁。</p><p><b>  3.2 流程圖實現</b></p><p>  3.2

12、模擬頁面置換算法的代碼</p><p>  定義頁面表的數據結構,它包括頁號(info),訪問位(A),修改標志(M)和指針4個屬性。代碼如下:</p><p>  template<typename T>class Node//結點類模板,不同數據類型,編譯時生成不同的類 </p><p><b>  { public:</b>

13、</p><p>  T info; //定義三個變量</p><p>  int A; //訪問頁變量,引用位的值</p><p>  int M; //修改頁變量,引用位的值</p><p>  Node<T> *link;//定義類的基地址 </p><p><b>  };

14、</b></p><p> ?。?)通過界面接收的頁面數(K),在主程序中先對K個頁面通過調用方法Insertrear(T data)進行初始化,代碼如下:</p><p><b>  while(1)</b></p><p><b>  {if(n<k)</b></p><p>

15、  {cout<<"請輸入要訪問的頁面號:"<<endl;</p><p><b>  cin>>num;</b></p><p>  cout<<endl;</p><p>  www->Insertrear(num);</p><p><

16、b>  n++;</b></p><p><b>  }</b></p><p><b>  }</b></p><p>  初始化頁面之后會提示是否對內存中存在的頁面進行修改,選擇Y,就會調用方法change(),并對你選擇的頁面的修改標志(M)進行修改,把它改為1(說明該頁面已被修改過了)。選擇N,就

17、會提示你“請輸入訪問的頁面號”,當你輸入一個頁面號:</p><p>  a、通過調用方法find0(T data)判斷你輸入的頁面號是否跟內存中存在的頁面號是否相同,如果相同,通過調用方法tihuan(Node<T>*p,T data)來進行置換頁面。代碼如下:</p><p>  find0(T data)</p><p>  {Node<T&

18、gt; *tempb;</p><p>  tempb=head->link;</p><p>  while(tempb!=head)</p><p>  {if(tempb->info==data)</p><p>  return tempb;</p><p>  tempb=tempb->li

19、nk;</p><p><b>  }</b></p><p>  return NULL;</p><p><b>  }</b></p><p>  b、如果不是相同的兩個頁面,通過調用find1(T data)來尋找內存中是否存在訪問位為0,修改標志為0的頁號,如果找到了,通過調用方法tihu

20、an(Node<T>*p,T data)來進行置換頁面。如果沒有找到就調用find2(T data)來進行第二次掃描,并把掃描過的頁面的訪問為改為1。如果在內存中找到訪問為為0,修改標志為1的頁號,通過調用方法tihuan(Node<T>*p,T data)來進行置換頁面,否則,繼續(xù)循環(huán)find1(T data)的查找直到置換為止。代碼如下:</p><p><b>  第一次掃

21、描:</b></p><p>  find1(T data)</p><p><b>  {</b></p><p>  Node<T> *tempb;</p><p>  tempb=head->link;</p><p>  while(tempb!=head)&

22、lt;/p><p><b>  {</b></p><p>  if(tempb->A==0&&tempb->M==0)</p><p>  return tempb;</p><p>  tempb=tempb->link;</p><p><b>  }

23、</b></p><p>  return NULL;</p><p><b>  } </b></p><p><b>  第二次掃描:</b></p><p>  find2(T data) </p><p><b>  {</b><

24、;/p><p>  Node<T> *tempb;</p><p>  tempb=head->link;</p><p>  while(tempb!=head)</p><p><b>  {</b></p><p>  if(tempb->A==0&&te

25、mpb->M==1)</p><p>  return tempb;</p><p>  tempb->A=0;</p><p>  tempb=tempb->link;</p><p><b>  }</b></p><p>  return NULL;</p>

26、<p><b>  }</b></p><p>  找到內存中存在訪問位為0,修改標志為0的頁號,如下:</p><p>  頁號 訪問位 修改標志</p><p>  2 1 0</p><p>  3 1 1<

27、/p><p>  1 1 0</p><p>  找到內存中存在訪問為0,修改標志為1的頁號,如下:</p><p>  頁號 訪問位 修改標志</p><p>  5 0 1</p><p>  7

28、 1 1</p><p>  14 1 1</p><p>  請輸入要訪問的頁面號</p><p><b>  12</b></p><p>  找到內存訪問位為0,修改位為1的頁號,修改后:</p><p>  頁號

29、訪問位 修改標志</p><p>  12 1 0 </p><p>  7 1 1 </p><p>  14 1 1</p><p><b>  四、實驗總結 </b></p&

30、gt;<p>  通過這幾周的課程設計,加深了對操作系統(tǒng)的認識,了解了操作系統(tǒng)中各種資源分配算法的實現,特別是對虛擬存儲,頁面置換有了深入的了解,并能夠用高級語言進行模擬演示。在這短短的幾周時間里,通過瀏覽、閱讀有關的資料,學到了很多東西,同時也發(fā)現僅僅書本的知識是遠遠不夠的,需要把知識運用到實踐中去,能力才能得到提高。 不僅提高對操作系統(tǒng)的了解,這次的課程設計也使自己的C編程能力加強了不少。一分耕耘,一分收獲,這次的課程

31、設計讓我受益匪淺。雖然自己所做的很少也不夠完善,但畢竟也是努力的結果。另外,使我體會最深的是:任何一門知識的掌握,僅靠學習理論知識是遠遠不夠的,要與實際動手操作相結合才能達到功效。</p><p><b>  5參考文獻</b></p><p>  [1] 譚浩強.C語言程序設計.第三版 清華大學出版社</p><p>  [2] 嚴蔚敏。數據

溫馨提示

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

評論

0/150

提交評論