《網(wǎng)絡操作系統(tǒng)》課程設計_第1頁
《網(wǎng)絡操作系統(tǒng)》課程設計_第2頁
《網(wǎng)絡操作系統(tǒng)》課程設計_第3頁
《網(wǎng)絡操作系統(tǒng)》課程設計_第4頁
《網(wǎng)絡操作系統(tǒng)》課程設計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 網(wǎng)絡操作系統(tǒng)課 程 設 計 報 告 書題 目:請求調(diào)頁存儲管理方式的模擬 dns協(xié)議模擬實現(xiàn) 學 號:081007111 2010 年 12 月 1 日目錄 五、請求調(diào)頁存儲管理方式的模擬1 設計思想說明-32 文件系統(tǒng)結構的說明-43 數(shù)據(jù)結構的說明-54 各模塊的算法流程圖-55 程序清單:注意加注釋-76 使用說明書-187 體會,建議-19七、dns協(xié)議模擬實現(xiàn) 1 程序源碼-202 操作步驟-223 運行結果-23 五、請求調(diào)頁存儲管理方式的模擬通過對頁面、頁表、地址轉換和頁面置換過程的模擬,加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。題目要求1假設每個頁面中可存放10條指令,分配給

2、作業(yè)的內(nèi)存塊數(shù)為4。2用c語言或c+語言模擬一個作業(yè)的執(zhí)行過程,該作業(yè)共有320條指令,即它的地址空間為32頁,目前它的所有頁都還未調(diào)入內(nèi)存。在模擬過程中,如果所訪問的指令已在內(nèi)存,則顯示其物理地址,并轉下一條指令。如果所訪問的指令還未裝入內(nèi)存,則發(fā)生缺頁,此時需記錄缺頁的次數(shù),并將相應頁調(diào)入內(nèi)存。如果4個內(nèi)存塊均已裝入該作業(yè),則需進行頁面置換,最后顯示其物理地址,并轉下一條指令。在所有320指令執(zhí)行完畢后,請計算并顯示作業(yè)運行過程中發(fā)生的缺頁率。3置換算法:請分別考慮最佳置換算法(opt)、先進先出(fifo)算法和最近最久未使用(lru)算法。4作業(yè)中指令的訪問次序按下述原則生成;50%的

3、指令是順序執(zhí)行的;25%的指令是均勻分布在前地址部分;25%的指令均勻分布在后地址部分。具體的實現(xiàn)辦法是:(1)在0,319之間隨機選取一條起始執(zhí)行指令,其序號為m;(2)順序執(zhí)行下一條指令,其序號為m+1條指令;(3)通過隨機數(shù),跳轉到前地址部分0,m-1中的某條指令處,其序號為m1;(4)順序執(zhí)行下一條指令,即序號為m1+1的指令;(5)通過隨機數(shù),跳轉到后地址部分m1+2,319中的某條指令處,其序號為m2;(6)順序執(zhí)行下一條指令,則序號為m2+1的指令;(7)重復跳轉到前地址部分,順序執(zhí)行,跳轉到后地址部分;順序執(zhí)行的過程,直至執(zhí)行320條指令。1 設計思路 在進程運行過程中,若其所

4、要訪問的頁面不在內(nèi)存時,需把它們調(diào)入內(nèi)存,但內(nèi)存已無空閑空間時,為了保證該進程能正常運行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁程序或數(shù)據(jù),送磁盤的對換區(qū)中。但應將哪個頁面調(diào)出,所以需要根據(jù)一定的算法來確定。在這一過程中,選擇換出頁面的算法稱為頁面置換算法。一個好的頁面置換算法,應具有較低的頁面更換頻率。頁面置換算法的好壞,將直接影響到系統(tǒng)的性能。以下分別是實驗要求的兩個頁面置換算法的介紹及其設計思想。(1)先進先出法該算法總是淘汰最先進入內(nèi)存的頁面,既選擇在內(nèi)存中駐留時間最久的頁面予以淘汰。在該算法的模擬過程中,每當頁面被置換進入內(nèi)存時,將置換頁面所在的物理塊中訪問標記設為-1;并且每執(zhí)行一次指令,便將物

5、理塊的訪問標記自動加1,需要置換時將訪問標記最大的物理塊中的頁面置換出去,這樣能防止當物理塊訪問標記出現(xiàn)兩個以上相同的值的錯誤執(zhí)行,更好地模擬了先進先出法;(2)最近最久未使用 該算法以最近的過去作為不久將來的近似, 將過去最長一段時間里不曾被使用的頁面置換掉。在該算法的模擬過程中,每當物理塊中的頁面被訪問時(包括原先存在的和后來置換進入的頁面),便將其物理塊訪問標記置為1。以后每執(zhí)行一條指令,便將物理塊中各頁面的訪問標記加1,需置換時訪問標記最大的便是將要被置換的。2文件系統(tǒng)結構的說明3數(shù)據(jù)結構的說明4各模塊的算法流程圖(1)整體流程圖(2)lru算法流程圖(3)lru算法流程圖5 程序清單

6、#include#include#include#include#define bsize 4typedef struct block /聲明一種新類型物理塊類型 int pagenum; /頁號int accessed; /訪問標識符,其值表示多久未被訪問block;int pc; /程序計數(shù)器,用來記錄指令的序號int n; /缺頁計數(shù)器,用來記錄缺頁的次數(shù)static int temp320; /用來存儲320條隨機數(shù)block blockbsize; /定義一大小為4的物理塊數(shù)組/*void init(); /程序初始化函數(shù)int findexist(int curpage); /查找

7、物理塊中是否有該頁面int findspace(); /查找是否有空閑物理塊int findreplace(); /查找應予置換的頁面void display(); /顯示void suijishu(); /產(chǎn)生320條隨機數(shù),顯示并存儲到temp320void pagestring(); /顯示調(diào)用的頁面隊列void lru(); / lru算法void fifo(); /fifo算法/*void init() /初始化物理塊 for(int i=0;ibsize;i+) blocki.pagenum=-1; /空閑物理塊 blocki.accessed=0; pc=n=0; /-int f

8、indexist(int curpage) /查找物理塊中是否有該頁面 for(int i=0; ibsize; i+)if(blocki.pagenum = curpage ) return i; /檢測到內(nèi)存中有該頁面,返回block中的位置 return -1; /沒有則返回-1/-int findspace() /查找是否有空閑物理塊 for(int i=0; ibsize; i+) if(blocki.pagenum = -1) return i; /找到空閑的block,返回block中的位置 return -1; /找不到則返回-1/-int findreplace() /查找應

9、予置換的頁面 int pos = 0; for(int i=0; iblockpos.accessed) pos = i; /找到應予置換頁面,返回block中位置 return pos;/-void display(int space) /顯示 for(int i=0; ibsize; i+) if(blocki.pagenum != -1) /物理塊不空 printf( %02d ,blocki.pagenum); cout調(diào)入的頁面是:blockspace.pagenum 其物理塊的地址是:&blockspace; coutendl;/-void suijishu(int pc) /產(chǎn)生

10、隨機數(shù) int flag=0; cout*按照要求產(chǎn)生的320個隨機數(shù):*endl; for(int i=0;i320;i+) tempi=pc;if(flag%2=0) pc=+pc%320; /產(chǎn)生50%的順序執(zhí)行指令(flag=0或2時順序執(zhí)行) if(flag=1) pc=rand()% (pc-1); /產(chǎn)生25%的均勻分布在前地址部分指令 if(flag=3) pc=pc+1+(rand()%(320-(pc+1); /產(chǎn)生25%的均勻分布在后地址部分指令 flag=+flag%4;printf( %03d,tempi); if(i+1)%10=0) coutendl; /-voi

11、d pagestring() /顯示調(diào)用的頁面隊列 for(int i=0;i320;i+) printf( %02d,tempi/10); if(i+1)%10=0) coutendl;/-void lru() / lru算法(最近最少使用算法)int exist,space,position ;int curpage; for(int i=0;i320;i+) if(i%100=0) getch(); /getch直接從鍵盤獲取鍵值pc=tempi; /指令在數(shù)組中的位置 curpage=pc/10; /指令所在頁面 exist = findexist(curpage); /查找物理塊中是

12、否有該頁面,若有返回物理塊號 if(exist=-1) /物理塊中不存在該頁space = findspace(); /查找是否有空閑物理塊 if(space != -1) /有空閑物理塊blockspace.pagenum = curpage; display(space); n=n+1; else /無空閑物理塊,則尋找置換頁面 position = findreplace(); /查找應予置換的頁面 blockposition.pagenum = curpage; blockposition.accessed = -1; /恢復剛調(diào)入的block中頁面accessed為-1 displa

13、y(position); n+; else blockexist.accessed = -1;/恢復存在的并剛訪問過的block中頁面accessed為-1for(int i=0; ibsize; i+) if(blocki.pagenum != -1) /物理塊不空printf( %02d ,blocki.pagenum);cout指令已經(jīng)存在! 其物理塊地址為:&blockexistendl; for(int j=0; j4; j+) /物理塊中各頁面的訪問標記加1 blockj.accessed+;cout缺頁次數(shù):nendl;cout缺頁率:(n/320.0)*100%endl;/-v

14、oid fifo() /fifo算法(先進先出算法)int exist,space,position ;int curpage; for(int i=0;i320;i+) if(i%100=0) getch(); /getch直接從鍵盤獲取鍵值pc=tempi; curpage=pc/10; exist = findexist(curpage); /查找物理塊中是否有該頁面 if(exist=-1) /物理塊中不存在該頁 space = findspace(); /查找是否有空閑物理塊 if(space != -1) /有空閑物理塊blockspace.pagenum = curpage; d

15、isplay(space); n=n+1; else /無空閑物理塊,則尋找置換頁面 position = findreplace(); /查找應予置換的頁面 blockposition.pagenum = curpage; display(position); n+; blockposition.accessed=-1; /置換頁面所在的物理塊中訪問標記設為-1 else /若存在該頁 for(int i=0; ibsize; i+) if(blocki.pagenum != -1) /物理塊不空printf( %02d ,blocki.pagenum);cout指令已經(jīng)存在! 其物理塊地址

16、為:&blockexistendl; for(int j=0; jbsize; j+) /物理塊中各頁面訪問標記自動加1 blockj.accessed+; cout缺頁次數(shù):nendl;cout缺頁率:(n/320.0)*100%endl;/*void main() int select; coutpc; /隨機選取一條起始執(zhí)行指令 if(pc=1&pc=319) suijishu(pc); /產(chǎn)生隨機數(shù) cout*對應的調(diào)用頁面隊列*endl; pagestring(); /顯示調(diào)用的頁面隊列 do cout*endl; cout-1:lru 2:fifo 3:退出 -endl; cout

17、*endl; coutselect; cout*endl; init(); switch(select) case 1:cout最近最久未使用置換算法lru:endl; cout*endl; lru(); break; case 2:cout先進先出置換算法fifo:endl; cout*endl; fifo(); break; default: ; while(select!=3); else cout輸入非法數(shù)據(jù)!;6使用說明書本程序能通過輸入第一條指令號(用3位整數(shù)代表指令號),產(chǎn)生320個隨機數(shù),并以每行10個顯示出來。再把這320個隨機數(shù)轉換成對應的頁面號,并以每行10個顯示出來。然

18、后,通過輸入選擇鍵,分別執(zhí)行兩個置換算法。各個置換算法能顯示頁面置換的情況,如果所訪問的指令已在內(nèi)存,則顯示“該指令已經(jīng)存在”并顯示其物理地址;如果所訪問的指令還未裝入內(nèi)存,則顯示“調(diào)入的頁面是?!?,并顯示其調(diào)入后的物理地址。所有指令執(zhí)行完畢后顯示缺頁次數(shù),和缺頁率?;緦崿F(xiàn)了對請求調(diào)頁存儲器管理方式的模擬。本程序的另一個亮點是使用getch( )使程序的執(zhí)行過程能夠暫停。本程序基本實現(xiàn)了實驗要求,自我感覺程序不夠精練,可讀性不高,還要進一步改進。6. 運行結果及分析7體會,建議通過本次操作系統(tǒng)實驗,使我們對操作系統(tǒng)這門課程有了更進一步的認識和了解,通過模擬實現(xiàn)請求頁式存儲管理的幾種基本頁面置

19、換算法,了解虛擬儲技術的特點。通過對頁面、頁表、地址轉換和頁面置換過程的模擬,加深對請求調(diào)頁系統(tǒng)的原理和實現(xiàn)過程的理解。本實驗的難點之一在于如何用c語言按要求模擬生成隨機指令,即50%的指令是順序執(zhí)行的,25%的指令是均勻分布在前地址部分,25%的指令是均勻分布在后地址部分,小組花了大量時間討論和研究該算法,并參考了相關的資料、運用了隨機函數(shù),最終通過一個函數(shù)suiji(int pc)予以實現(xiàn)。第二,如何較好地模擬出先進先出算法(fifo)、最近最少使用算法(lru)也花費了較多時間。在本次設計過程中,用到了許多c+的基本知識和操作系統(tǒng)的基本原理,是對平時所學知識的一次考驗,盡管這些知識都學過

20、,但運用到實際時,卻不知從何下手,而且錯誤不斷,往往為了找一個錯誤而花了大量的時間,這是專業(yè)知識掌握不夠,缺乏實踐動手能力的表現(xiàn)。在設計的過程中我們發(fā)現(xiàn)了許多自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固,以后還要多加努力。總之,通過該實驗,我們了解到編寫程序不是首要任務,而是一種實現(xiàn)手段。我們最重要的是如何做好需求分析和理清思路,做出正確、簡潔的流程設計,這樣可以達到事半功倍的效果。七、dns協(xié)議模擬實現(xiàn)dns協(xié)議為應用層協(xié)議,可實現(xiàn)ip地址和主機名之間的轉換。參考程序如下:1程序源代碼:#include#include#include #pragma comment(li

21、b,ws2_32.lib)/主文件/ int main() word wversionrequested=makeword(1,1); wsadata wsadata;/初始化 windows sockets api/ if(wsastartup(wversionrequested,&wsadata) printf(wsastartup failed%sn,wsagetlasterror(); return -1; char hostname256;/獲得本主機名/ int res=gethostname(hostname,sizeof(hostname); if(res!=0)/錯誤處理/

22、printf(error:%un,wsagetlasterror(); return -1; printf(本主機名為:%sn,hostname); /打印本主機名字/ printf(請輸入一個主機域名:); /輸入一個主機的域名/ scanf(%s,hostname);/利用主機名獲得主機的地址/ hostent* phostent=gethostbyname(hostname); if(phostent=null)/錯誤處理/ printf(error:%un,wsagetlasterror(); return -1; /解析返回的主機地址信息:別名、地址類型、地址長度,并打印/ hostent& he=*phostent; printf(name=%snaliase=%snaddrtype=%dnlength=%dn,he.h_name,he.h_aliases,he.h_addr

溫馨提示

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

評論

0/150

提交評論