操作系統實驗報告包括實驗內容.doc_第1頁
操作系統實驗報告包括實驗內容.doc_第2頁
操作系統實驗報告包括實驗內容.doc_第3頁
操作系統實驗報告包括實驗內容.doc_第4頁
操作系統實驗報告包括實驗內容.doc_第5頁
已閱讀5頁,還剩17頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

實 驗 報 告實驗課程: 計算機操作系統 學生姓名: 學 號: 專業班級: 電氣類班 2011年 12月 15日目 錄一、 實驗一 編程實現銀行家安全算法3二、 實驗二 存儲管理的模擬實現6三、 實驗三 磁盤調度算法的模擬實現15南昌大學實驗報告 -(1)編程實現銀行家安全算法學生姓名: 學 號: 專業班級: 實驗類型: 驗證 綜合 設計 創新 實驗日期:10.25,11.1 實驗成績: 一、實驗目的通過實驗加強對銀行家安全算法的理解和掌握。二、實驗內容熟悉避免死鎖發生的方法,死鎖與安全序列的關系,編程實現銀行家算法,要求輸出進程的安全序列。三、實驗要求1、需寫出設計說明;2、設計實現代碼及說明3、運行結果;四、主要實驗步驟根據實驗要求設計本次實驗流程圖,并根據實驗流程圖編寫出實驗程序。上機運用C語言進行程序輸入,并進行程序檢查,找出編程錯誤,直到程序運行成功為止。分析本次實驗所獲得的收獲。五、實驗數據及處理結果六、實驗體會或對改進實驗的建議程序基本實現了銀行家算法的功能,并在其基礎上考慮了輸出顯示的格式的美觀性、輸入錯誤要求重新輸入等幾個方面,盡可能的使程序完整一些。這段程序算是三個試驗中最困難最復雜的一個,由于能力有限,所以在緊張的的編寫和調試過程中遇到了許多的問題,通過查詢資料、翻閱課本、向同學請教、多次調試等方法逐漸解決了大部分問題,編寫的過程中也有比較一些算法的優劣性,找出比較好的算法,收獲非常大。七、參考資料計算機操作系統 湯子瀛等 西安電子科技大學出版社南昌大學實驗報告 -(2)存儲管理的模擬實現學生姓名: 學 號: 專業班級: 實驗類型: 驗證 綜合 設計 創新 實驗日期:11.8,11.15,11.22 實驗成績: 一、實驗目的存儲管理的主要功能之一是合理地分配空間。請求頁式管理是一種常用的虛擬存儲管理技術。本實驗的目的是通過請求頁式存儲管理中頁面置換算法模擬設計,了解虛擬存儲技術的特點,掌握請求頁式管理的頁面置換算法。二、實驗內容編程實現頁面置換算法,要求輸出頁面的置換過程,具體可以編程實現OPT、FIFO和LRU算法。三、實驗要求1、需寫出設計說明;2、設計實現代碼及說明3、運行結果;四、主要實驗步驟根據實驗要求設計出程序圖。根據程序圖編寫出實驗程序。上機進行程序調試,并找出錯誤,直至程序通過。分析本次實驗所得到的收獲。五、實驗數據及處理結果#include #include #include #include #define overflow -2#define null 0#define codenum 220 /指令數#define pagenum 20 /頁數int n=pagenum,m=3; /n為提供的頁流數,m為用戶可用的物理塊數typedef struct linkint data;int sign; /訪問位struct link *next;struct link *rear;/總是指向鏈表的最后一個元素qnode,*qlink;void menu(int *str);int *creatstr() /創建頁流,并保存在strn中int *str;time_t t; intcount=0,m1,m2,m3;str=(int*)malloc(sizeof(int)*(pagenum+10);if(!str)exit(overflow);srand(unsigned)time(&t);while(count=pagenum)m1=rand()%codenum;str+count=m1/10;/str+count=(m1+1)/10;m2=rand()%(m1+1);str+count=m2/10;/str+count=(m2+1)/10;m3=(codenum-1)-rand()%(m1+2);str+count=m3/10;/str+count=(m3+1)/10;return str;/*FIFO算法*int *initstring() /初始化保存每個頁面進行時的結果的二維數組anm int *a,i,j;a=(int *)malloc(sizeof(int*)*(n+1);if(!a) exit(overflow);for(i=0;i=n;i+) ai=(int*)malloc(sizeof(int)*(m+1);if(!ai) exit(overflow);for(i=1;i=n;i+) /初始化保存結果的數組,使得一開始都為空for(j=1;j=m;j+)aij=-1;return a;void printresult(int *a,int *str)int i,j;printf(*the orders of pages*n);for(i=1;i=n;i+)printf(%3d,stri);putchar(n);for(i=1;i=m;i+)for(j=1;j=n;j+)if(aji=-1) printf( );else printf(%3d,aji);putchar(n);putchar(n);int search(int *b,int x) /從物理塊中找現在要執行的頁面是否已經存在內存中,找到返回1int i;for(i=1;i=m;i+)if(bi=x) return i;return 0;void fifo(int *str) /先進先出置換算法int i,j=0,flag,k;int *a;int count=0; /用來計算缺頁次數的a=initstring();for(i=1;i=n;i+)flag=search(ai,stri);/如果沒有找到,情況一是沒有滿,二是當物理塊滿了就得置換if(!flag) count+;if(!flag) aij+%m+1=stri;/else 如果找到什么也不做if(i!=n)for(k=1;k=m;k+)ai+1k=aik;printresult(a,str);/輸出結果;printf(short of pages:%dn,count);/*LRU算法*qlink initlink() /初始化鏈表,其有M個節點,即可以存放m個頁面qlink l,q,s;int i;l=(qlink)malloc(sizeof(qnode);if(!l) exit(overflow);q=l;for(i=1;idata=-1;q-next=s;q=s;l-rear=q; /指向尾部,方便操作l-rear-next=null;return l;qlink lsearch(int *a,qlink l,int x,int *pagnum) qlink static k=l; /k-next始終指向下一個空的物理塊qlink q=l,temp,p;int flag=0,tempx,findid,j,reardata,flag2=0;int static i=1;int static k1=m;int static count=0; /用來計算缺頁數reardata=l-rear-data;while(q-next)temp=q;q=q-next;if(q-data=x) /如果新來的頁面內存中已有,則將它壓入棧頂,即鏈表的最后一位if(q!=l-rear) /如果找到的不是最后一個節點 /這個循環僅僅在已滿的環境下有用if(l-rear-data=-1) flag=1;break; /如果沒有滿且新的頁面已存在內存中temp-next=q-next;l-rear-next=q;q-next=null;l-rear=q;flag2=2;/else 如果已存在的頁面在鏈尾, 則不動/end whileif(flag2!=2)/情況一物理塊未填滿,情況二滿了要置換新的if(l-rear-data=-1) /物理塊沒有放滿if(flag) /新的頁面已存在內存中temp-next=q-next;q-next=k-next;k-next=q;k=k-next;elsek=k-next;k-data=x;count+;else /如果滿了,且新來的頁面在內存中也沒有,就置換出棧底的元素,即最近最久的tempx=l-next-data;l-next-data=x;l-rear-next=l-next;l-rear=l-next;l-next=l-next-next;l-rear-next=null;count+;/ end if flag2if(reardata=-1) /當內存中沒有滿的時候/printf(i1=%dn,i); if(!flag) /如果頁原來沒有在內存中 for(p=l-next,j=1;jnext) /將棧的狀態保存到二維數組中 aij=p-data; else if(flag)/如果已經在內存中里 if(i!=n) for(j=1;j=m;j+) ai+1j=aij; /end ifelse/如果滿了if(i=n)/printf(i2=%dn,i); for(j=1;j=m;j+) aij=ai-1j;findid=search(ai,tempx);/*if(findid)*/ aifindid=x; /end else i+;*pagnum=count;return l;void lru(int *str) /實現方法:棧int *a;int i;int count=0;qlink l;/其中第一個節點是最久的,而最后一個節點總是最新的l=initlink();/初始化特殊的棧 a=initstring(); /初始化保存結果的二維數組for(i=1;inext,i=1;inext)if(x=p-data) return 1;return 0;void nru(int *str)int *a;int flag,i,j;int count=0;qlink pt,r,p;r=initlink();a=initstring();r-rear-next=r-next; /形成循環隊列pt=r-next;for(i=1;irear-data=-1) /如果沒有滿pt-data=stri;pt-sign=1;pt=pt-next;else /如果滿了while(pt-sign!=0) /找第一個訪問位為0的頁pt-sign=0;pt=pt-next; pt-data=stri; /置換pt-sign=1;/end else/end if(!flag)/else 如果已存在內存中,就保持不動for(p=r-next,j=1;jnext)aij=p-data;/end forprintresult(a,str);printf(short of pages:%dn,count);/*主函數*void menu(int *str)int co;printf(1.FIFOn);printf(2.LRUn);printf(3.LFUn);printf(4.NRUn);printf(5.exitn);printf(choose(1-5):);scanf(%d,&co);switch(co)case 1:fifo(str);break;case 2:lru(str);break;case 3:lru(str);break;case 4:nru(str);break;case 5:exit(-1);break;int main()/int str=-1,7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1; /頁流/clrscr(); int *str=creatstr(); /用隨機方法創建頁流/int str=-1,4,7,0,7,1,0,1,2,1,2;menu(str);六、實驗體會或對改進實驗的建議通過本次課程設計,加深了對操作系統的認識,了解了操作系統中各種資源分配算法的實現,特別是對虛擬存儲,頁面置換有了深入的了解,并能夠用高級語言進行模擬演示。通過查閱相關資料對OPT、FIFO和LRU算法有了一定的了解,基本掌握了C語言編寫的基本方法三種頁面置換算法的比較,OPT、FIFO和LRU算法,對頁面置換有更深一層的了解。使我對操作系統特別是頁面置換這一部分的認識有了很大的加深。七、參考資料計算機操作系統 湯子瀛等 西安電子科技大學出版社南昌大學實驗報告 -(3)磁盤調度算法的模擬實現學生姓名: 學 號: 專業班級: 實驗類型: 驗證 綜合 設計 創新 實驗日期: 11.29,12.6,12.13 實驗成績: 一、實驗目的通過實驗加強對磁盤調度算法的理解和掌握。二、實驗內容編寫程序實現磁盤調度算法,具體可以編寫程序實現FCFS算法、SSTF算法、SCAN算法和CSCAN算法之二。三、實驗要求1、需寫出設計說明;2、設計實現代碼及說明3、運行結果;四、主要實驗步驟根據實驗要求編寫實驗流程圖。根據實驗流程圖編寫實驗代碼。上機進行程序輸入,并運行,同時檢查實驗錯誤,直至實驗沒有錯誤為止。分析此次實驗所獲得的收獲。五、實驗數據及處理結果六、實驗體會或對改進實驗的建議FCFS是一種簡單的磁盤調度算法。它根據進程請求訪問磁盤的先后次序進行調度。此算法的優點是公平、簡單,且每個進程的請求都能依次得到處理,不會出現某一進程的請求長期得不到滿足的情況。但此算法由于未對尋道進行優化,致使平均尋道時間可能較長。SCAN算法不僅考

溫馨提示

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

評論

0/150

提交評論