2024年操作系統(tǒng)實(shí)驗(yàn)報(bào)告-包括實(shí)驗(yàn)內(nèi)容_第1頁(yè)
2024年操作系統(tǒng)實(shí)驗(yàn)報(bào)告-包括實(shí)驗(yàn)內(nèi)容_第2頁(yè)
2024年操作系統(tǒng)實(shí)驗(yàn)報(bào)告-包括實(shí)驗(yàn)內(nèi)容_第3頁(yè)
2024年操作系統(tǒng)實(shí)驗(yàn)報(bào)告-包括實(shí)驗(yàn)內(nèi)容_第4頁(yè)
2024年操作系統(tǒng)實(shí)驗(yàn)報(bào)告-包括實(shí)驗(yàn)內(nèi)容_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)報(bào)告試驗(yàn)課程:計(jì)算機(jī)操作系統(tǒng)學(xué)生姓名:學(xué)號(hào):專(zhuān)業(yè)班級(jí):電氣Ⅲ類(lèi)班12月15曰目錄試驗(yàn)一編程實(shí)現(xiàn)銀行家安全算法…………3試驗(yàn)二存儲(chǔ)管理的模擬實(shí)現(xiàn)……………6試驗(yàn)三磁盤(pán)調(diào)度算法的模擬實(shí)現(xiàn)………15 南昌大學(xué)試驗(yàn)匯報(bào)(1)編程實(shí)現(xiàn)銀行家安全算法學(xué)生姓名:學(xué)號(hào):專(zhuān)業(yè)班級(jí):試驗(yàn)類(lèi)型:□驗(yàn)證□綜合■設(shè)計(jì)□創(chuàng)新試驗(yàn)曰期:10.25,11.1試驗(yàn)成績(jī):一、試驗(yàn)?zāi)康耐ㄟ^(guò)試驗(yàn)加強(qiáng)對(duì)銀行家安全算法的理解和掌握。二、試驗(yàn)內(nèi)容熟悉防止死鎖發(fā)生的措施,死鎖與安全序列的關(guān)系,編程實(shí)現(xiàn)銀行家算法,規(guī)定輸出進(jìn)程的安全序列。三、試驗(yàn)規(guī)定1、需寫(xiě)出設(shè)計(jì)闡明;2、設(shè)計(jì)實(shí)現(xiàn)代碼及闡明3、運(yùn)行成果;四、重要試驗(yàn)環(huán)節(jié)根據(jù)試驗(yàn)規(guī)定設(shè)計(jì)本次試驗(yàn)流程圖,并根據(jù)試驗(yàn)流程圖編寫(xiě)出試驗(yàn)程序。上機(jī)運(yùn)用C語(yǔ)言進(jìn)行程序輸入,并進(jìn)行程序檢查,找出編程錯(cuò)誤,直到程序運(yùn)行成功為止。分析本次試驗(yàn)所獲得的收獲。五、試驗(yàn)數(shù)據(jù)及處理成果六、試驗(yàn)體會(huì)或?qū)Ω纳圃囼?yàn)的提議程序基本實(shí)現(xiàn)了銀行家算法的功能,并在其基礎(chǔ)上考慮了輸出顯示的格式的美觀性、輸入錯(cuò)誤規(guī)定重新輸入等幾種方面,盡量的使程序完整某些。這段程序算是三個(gè)試驗(yàn)中最困難最復(fù)雜的一種,由于能力有限,因此在緊張的的編寫(xiě)和調(diào)試過(guò)程中碰到了許多的問(wèn)題,通過(guò)查詢(xún)資料、翻閱書(shū)本、向同學(xué)請(qǐng)教、多次調(diào)試等措施逐漸處理了大部分問(wèn)題,編寫(xiě)的過(guò)程中也有比較某些算法的優(yōu)劣性,找出比很好的算法,收獲非常大。七、參照資料《計(jì)算機(jī)操作系統(tǒng)》湯子瀛等

西安電子科技大學(xué)出版社 南昌大學(xué)試驗(yàn)匯報(bào)(2)存儲(chǔ)管理的模擬實(shí)現(xiàn)學(xué)生姓名:學(xué)號(hào):專(zhuān)業(yè)班級(jí):試驗(yàn)類(lèi)型:□驗(yàn)證□綜合■設(shè)計(jì)□創(chuàng)新試驗(yàn)曰期:11.8,11.15,11.22試驗(yàn)成績(jī):一、試驗(yàn)?zāi)康拇鎯?chǔ)管理的重要功能之一是合理地分派空間。祈求頁(yè)式管理是一種常用的虛擬存儲(chǔ)管理技術(shù)。本試驗(yàn)的目的是通過(guò)祈求頁(yè)式存儲(chǔ)管理中頁(yè)面置換算法模擬設(shè)計(jì),理解虛擬存儲(chǔ)技術(shù)的特點(diǎn),掌握祈求頁(yè)式管理的頁(yè)面置換算法。二、試驗(yàn)內(nèi)容編程實(shí)現(xiàn)頁(yè)面置換算法,規(guī)定輸出頁(yè)面的置換過(guò)程,詳細(xì)可以編程實(shí)現(xiàn)OPT、FIFO和LRU算法。三、試驗(yàn)規(guī)定1、需寫(xiě)出設(shè)計(jì)闡明;2、設(shè)計(jì)實(shí)現(xiàn)代碼及闡明3、運(yùn)行成果;四、重要試驗(yàn)環(huán)節(jié)根據(jù)試驗(yàn)規(guī)定設(shè)計(jì)出程序圖。根據(jù)程序圖編寫(xiě)出試驗(yàn)程序。上機(jī)進(jìn)行程序調(diào)試,并找出錯(cuò)誤,直至程序通過(guò)。分析本次試驗(yàn)所得到的收獲。五、試驗(yàn)數(shù)據(jù)及處理成果#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<time.h>#defineoverflow-2#definenull0#definecodenum220//指令數(shù)#definepagenum20//頁(yè)數(shù)intn=pagenum,m=3;//n為提供的頁(yè)流數(shù),m為顧客可用的物理塊數(shù)typedefstructlink{ intdata; intsign;//訪問(wèn)位 structlink*next; structlink*rear;//總是指向鏈表的最終一種元素}qnode,*qlink;voidmenu(int*str);int*creatstr()//創(chuàng)立頁(yè)流,并保留在str[n]中{ int*str; time_tt;int count=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; } returnstr;}//*********************************FIFO算法**********************int**initstring()//初始化保留每個(gè)頁(yè)面進(jìn)行時(shí)的成果的二維數(shù)組a[n][m]{ int**a,i,j; a=(int**)malloc(sizeof(int*)*(n+1)); if(!a)exit(overflow); for(i=0;i<=n;i++) { a[i]=(int*)malloc(sizeof(int)*(m+1)); if(!a[i])exit(overflow); } for(i=1;i<=n;i++)//初始化保留成果的數(shù)組,使得一開(kāi)始都為空 for(j=1;j<=m;j++) a[i][j]=-1; returna;}voidprintresult(int**a,int*str){ inti,j; printf("****************************theordersofpages***********************\n"); for(i=1;i<=n;i++) printf("%3d",str[i]); putchar('\n'); for(i=1;i<=m;i++) { for(j=1;j<=n;j++) { if(a[j][i]==-1)printf(""); elseprintf("%3d",a[j][i]); } putchar('\n'); } putchar('\n');} intsearch(int*b,intx){//從物理塊中找目前要執(zhí)行的頁(yè)面與否已經(jīng)存在內(nèi)存中,找到返回1 inti; for(i=1;i<=m;i++) if(b[i]==x)returni; return0;}voidfifo(int*str)//先進(jìn)先出置換算法{ inti,j=0,flag,k; int**a; intcount=0;//用來(lái)計(jì)算缺頁(yè)次數(shù)的 a=initstring(); for(i=1;i<=n;i++) { flag=search(a[i],str[i]); //假如沒(méi)有找到,狀況一是沒(méi)有滿(mǎn),二是當(dāng)物理塊滿(mǎn)了就得置換 if(!flag)count++; if(!flag) a[i][j++%m+1]=str[i]; //else假如找到什么也不做 if(i!=n) for(k=1;k<=m;k++) a[i+1][k]=a[i][k]; } printresult(a,str);//輸出成果; printf("shortofpages:%d\n",count);}//***********************************LRU算法************************qlinkinitlink(){ //初始化鏈表,其有M個(gè)節(jié)點(diǎn),即可以寄存m個(gè)頁(yè)面 qlinkl,q,s; inti; l=(qlink)malloc(sizeof(qnode)); if(!l)exit(overflow); q=l; for(i=1;i<=m;i++) { s=(qlink)malloc(sizeof(qnode)); if(!s)exit(overflow); s->data=-1; q->next=s; q=s; } l->rear=q;//指向尾部,以便操作 l->rear->next=null; returnl;}qlinklsearch(int**a,qlinkl,intx,int*pagnum){ qlinkstatick=l;//k->next一直指向下一種空的物理塊 qlinkq=l,temp,p; intflag=0,tempx,findid,j,reardata,flag2=0; intstatici=1; intstatick1=m; intstaticcount=0;//用來(lái)計(jì)算缺頁(yè)數(shù) reardata=l->rear->data; while(q->next) { temp=q; q=q->next; if(q->data==x)//假如新來(lái)的頁(yè)面內(nèi)存中已經(jīng)有,則將它壓入棧頂,即鏈表的最終一位 if(q!=l->rear)//假如找到的不是最終一種節(jié)點(diǎn) {//這個(gè)循環(huán)僅僅在已滿(mǎn)的環(huán)境下有用 if(l->rear->data==-1){flag=1;break;}//假如沒(méi)有滿(mǎn)且新的頁(yè)面已存在內(nèi)存中 temp->next=q->next; l->rear->next=q; q->next=null; l->rear=q; flag2=2; } //else假如已存在的頁(yè)面在鏈尾,則不動(dòng) }//endwhile if(flag2!=2) { //狀況一物理塊未填滿(mǎn),狀況二滿(mǎn)了要置換新的 if(l->rear->data==-1)//物理塊沒(méi)有放滿(mǎn) { if(flag)//新的頁(yè)面已存在內(nèi)存中 { temp->next=q->next; q->next=k->next; k->next=q; k=k->next; } else{k=k->next;k->data=x;count++;} } else//假如滿(mǎn)了,且新來(lái)的頁(yè)面在內(nèi)存中也沒(méi)有,就置換出棧底的元素,即近來(lái)最久的 { 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++; } }//endifflag2 if(reardata==-1)//當(dāng)內(nèi)存中沒(méi)有滿(mǎn)的時(shí)候 { //printf("i1=%d\n",i); if(!flag)//假如頁(yè)本來(lái)沒(méi)有在內(nèi)存中 for(p=l->next,j=1;j<=m;j++,p=p->next)//將棧的狀態(tài)保留到二維數(shù)組中 a[i][j]=p->data; elseif(flag)//假如已經(jīng)在內(nèi)存中裏 { if(i!=n) for(j=1;j<=m;j++) a[i+1][j]=a[i][j]; } }//endif else//假如滿(mǎn)了 { if(i<=n) { //printf("i2=%d\n",i); for(j=1;j<=m;j++) a[i][j]=a[i-1][j]; findid=search(a[i],tempx); /*if(findid)*/a[i][findid]=x; } }//endelsei++; *pagnum=count; returnl;}voidlru(int*str){//實(shí)現(xiàn)措施:棧 int**a; inti; intcount=0; qlinkl; //其中第一種節(jié)點(diǎn)是最久的,而最終一種節(jié)點(diǎn)總是最新的 l=initlink(); //初始化特殊的棧a=initstring();//初始化保留成果的二維數(shù)組 for(i=1;i<=n;i++) l=lsearch(a,l,str[i],&count);//查找并處理 printresult(a,str); printf("shortofpages:%d\n",count);}//************************clock置換算法**************************intrsearch(qlinkr,intx)//在循環(huán)隊(duì)列中查找,即在內(nèi)存中找頁(yè)面與否已存在{ inti; qlinkp; for(p=r->next,i=1;i<=m;i++,p=p->next) if(x==p->data)return1; return0;}voidnru(int*str){ int**a; intflag,i,j; intcount=0; qlinkpt,r,p; r=initlink(); a=initstring(); r->rear->next=r->next;//形成循環(huán)隊(duì)列 pt=r->next; for(i=1;i<=n;i++) { flag=rsearch(r,str[i]); if(!flag)count++; if(!flag)//假如沒(méi)有找到 { if(r->rear->data==-1)//假如沒(méi)有滿(mǎn) { pt->data=str[i]; pt->sign=1; pt=pt->next; } else//假如滿(mǎn)了 { while(pt->sign!=0) {//找第一種訪問(wèn)位為0的頁(yè) pt->sign=0; pt=pt->next; } pt->data=str[i];//置換 pt->sign=1; }//endelse }//endif(!flag) //else假如已存在內(nèi)存中,就保持不動(dòng) for(p=r->next,j=1;j<=m;j++,p=p->next) a[i][j]=p->data; }//endfor printresult(a,str); printf("shortofpages:%d\n",count);}//****************主函數(shù)*****************voidmenu(int*str){ intco; printf("1.FIFO\n"); printf("2.LRU\n"); printf("3.LFU\n"); printf("4.NRU\n"); printf("5.exit\n"); printf("choose(1--5):"); scanf("%d",&co); switch(co) { case1:fifo(str);break; case2:lru(str);break; case3:lru(str);break; case4:nru(str);break; case5:exit(-1);break; }}intmain(){ //intstr[]={-1,7,0,1,2,0,3,0,4,2,3,0,3,2,1,2,0,1,7,0,1};//頁(yè)流 //clrscr();int*str=creatstr();//用隨機(jī)措施創(chuàng)立頁(yè)流 //intstr[]={-1,4,7,0,7,1,0,1,2,1,2}; menu(str);}六、試驗(yàn)體會(huì)或?qū)Ω纳圃囼?yàn)的提議通過(guò)本次課程設(shè)計(jì),加深了對(duì)操作系統(tǒng)的認(rèn)識(shí),理解了操作系統(tǒng)中多種資源分派算法的實(shí)現(xiàn),尤其是對(duì)虛擬存儲(chǔ),頁(yè)面置換有了深入的理解,并可以用高級(jí)語(yǔ)言進(jìn)行模擬演示。通過(guò)查閱有關(guān)資料對(duì)OPT、FIFO和LRU算法有了一定的理解,基本掌握了C語(yǔ)言編寫(xiě)的基本措施三種頁(yè)面置換算法的比較,OPT、FIFO和LRU算法,對(duì)頁(yè)面置換有更深一層的理解。使我對(duì)操作系統(tǒng)尤其是頁(yè)面置換這一部分的認(rèn)識(shí)有了很大的加深。七、參照資料《計(jì)算機(jī)操作系統(tǒng)》湯子瀛等

西安電子科技大學(xué)出版社 南昌大學(xué)試驗(yàn)匯報(bào)(3)磁盤(pán)調(diào)度算法的模擬實(shí)現(xiàn)學(xué)生

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論