2012級(jí)操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第1頁(yè)
2012級(jí)操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第2頁(yè)
2012級(jí)操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第3頁(yè)
2012級(jí)操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第4頁(yè)
2012級(jí)操作系統(tǒng)實(shí)驗(yàn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

實(shí)驗(yàn)三內(nèi)存管理【實(shí)驗(yàn)?zāi)康呐c要求】⒈了解虛擬存儲(chǔ)技術(shù)的特點(diǎn)。⒉掌握請(qǐng)求頁(yè)式存儲(chǔ)管理的頁(yè)面置換算法。3.了解頁(yè)面大小和內(nèi)存實(shí)際容量對(duì)命中率的影響。【實(shí)驗(yàn)原理】分頁(yè)存儲(chǔ)管理將一個(gè)進(jìn)程的邏輯地址空間分成若干大小相等的片,成為頁(yè)面或頁(yè)。在進(jìn)程運(yùn)行過(guò)程中,若其所要訪問(wèn)的頁(yè)面不在內(nèi)存而需要把他們調(diào)入內(nèi)存,但內(nèi)存已無(wú)空閑時(shí),為了保證該進(jìn)程能正常運(yùn)行,系統(tǒng)必須從內(nèi)存中調(diào)出一頁(yè)程序或數(shù)據(jù),送磁盤的對(duì)換區(qū)中。但應(yīng)將哪個(gè)頁(yè)面調(diào)出,須根據(jù)一定的算法來(lái)確定。通常,把選擇換出頁(yè)面的算法稱為頁(yè)面置換算法(PageReplacementAlgorithm)。一個(gè)好的頁(yè)面置換算法,應(yīng)具有較低的頁(yè)面更換頻率。從理論上講,應(yīng)將那些以后不再會(huì)訪問(wèn)的頁(yè)面換出,或?qū)⒛切┰谳^長(zhǎng)時(shí)間內(nèi)不會(huì)再訪問(wèn)的頁(yè)面調(diào)出。⒈最佳置換算法OPT(Optimal)⒉先進(jìn)先出頁(yè)面置換算法FIFO⒊最近最久未使用置換算法LRU⒋最少訪問(wèn)頁(yè)面置換算法LFU⒌最近最不經(jīng)常使用算法NUR【實(shí)驗(yàn)主要儀器與材料】⒈帶Linux操作系統(tǒng)的PC機(jī)。⒉GCC編譯器?!緦?shí)驗(yàn)內(nèi)容】1、通過(guò)隨機(jī)數(shù)產(chǎn)生一個(gè)指令序列,共320條指令。指令的地址按下述原則生成:50%的指令是順序執(zhí)行的25%的指令是均勻分布在前地址部分25%的指令是均勻分布在后地址部分具體的實(shí)施方法是:在【0,319】的指令地址之間隨機(jī)選取一起點(diǎn)m;順序執(zhí)行一條指令,即執(zhí)行地址為m+1的指令;在前地址【0,m+1】中隨機(jī)選取一條指令并執(zhí)行,該指令的地址為m’;順序執(zhí)行一條指令,其地址為m’+1;在后地址[m’+2,319]中隨機(jī)選取一條指令并執(zhí)行;重復(fù)上述步驟,直到執(zhí)行320次指令。2、將指令序列變換成為頁(yè)地址流設(shè):頁(yè)面大小為1K;用戶內(nèi)存容量為4頁(yè)到32頁(yè);用戶虛擬容量為32K。在用戶虛存中,按每K存放10條指令排列虛擬地址,即320條指令在虛存中的存放方式為:第0條~第9條指令為第0頁(yè)(對(duì)應(yīng)虛存地址為【0,9】);第10條~第19條指令為第1頁(yè)(對(duì)應(yīng)虛存地址為【10,19】); …第310條~第319條指令為第31頁(yè)(對(duì)應(yīng)虛存地址為【310,319】)。按以上方式,用戶指令可組成32頁(yè)。3、計(jì)算并輸出下列各種算法在不同內(nèi)存容量下的命中率。先進(jìn)先出的算法(FIFO);最近最少使用算法(LRU);最佳淘汰算法(OPT):先淘汰最不常用的頁(yè)地址;其中OPT為選作內(nèi)容。命中率=1–頁(yè)面時(shí)效次數(shù)/頁(yè)地址流長(zhǎng)度在本實(shí)驗(yàn)中,頁(yè)地址流長(zhǎng)度為320,頁(yè)面失效次數(shù)為每次訪問(wèn)相應(yīng)指令時(shí),該指令所對(duì)應(yīng)的頁(yè)不在內(nèi)存的次數(shù)。【實(shí)驗(yàn)步驟及實(shí)驗(yàn)結(jié)果分析】首先用srand()和rand()函數(shù)定義和產(chǎn)生指令序列,然后將指令序列變換成相應(yīng)的頁(yè)地址流,并針對(duì)不同的算法計(jì)算出相應(yīng)的命中率。//****利用先進(jìn)先出算法(FIFO)和最近最久未使用算法(LRU)****//#include<stdio.h>#include<stdlib.h>#include<unistd.h>#include<string.h>#defineNULL_110000constintty=320;intd[320];//指令序列intpage[320];//頁(yè)地址流intp[32];//內(nèi)存頁(yè)面intque;//缺頁(yè)次數(shù)inttime[32];//記錄頁(yè)面距離上次被訪問(wèn)的時(shí)間voidcreat(intleng)//leng為內(nèi)存頁(yè)面數(shù)量{ inti; que=0; for(i=0;i<leng;i++) { p[i]=NULL_1;//讓內(nèi)存頁(yè)面置空 time[i]=0; }}//******先進(jìn)先出算法voidFIFO(intleng)//leng為內(nèi)存頁(yè)面數(shù)量{ inti,j,k; intn; //n為要被替換的頁(yè)面號(hào),按0,1,2...leng,0,1,2...leng循環(huán)變化 creat(leng);//初始化內(nèi)存頁(yè)面 n=0; for(i=0;i<ty;i++) { k=0; for(j=0;j<leng;j++) { if(p[j]==NULL_1) break; elseif(p[j]==page[i])//在內(nèi)存中有該頁(yè) { k=1; break; } } if(k==0) { que++; p[n]=page[i]; n++; } if(n==leng) n=0; } printf("%-7.3f\t",1-(float)que/ty);}//******最近最久未使用算法voidLRU(intleng)//leng為內(nèi)存頁(yè)面數(shù)量{ inti,j,k; inttmax;//存time的最大值 intt;//t為要被訪問(wèn)的頁(yè)面號(hào) creat(leng);//初始化內(nèi)存頁(yè)面 for(i=0;i<ty;i++) { k=0; for(j=0;j<leng;j++) { if(p[j]==NULL_1) break; elseif(p[j]==page[i])//在內(nèi)存中有該頁(yè) { k=1; t=j; break; } } if(k==0) { que++; tmax=time[0]; t=0; for(j=0;j<leng;j++)//查找最久沒(méi)訪問(wèn)的頁(yè)面號(hào)賦予t { if(tmax<time[j]) { tmax=time[j]; t=j; } } p[t]=page[i]; } for(j=0;j<leng;j++)//將每個(gè)頁(yè)面time自增 time[j]++; time[t]=0;//將這次被訪問(wèn)的頁(yè)面time清零 } printf("%-7.3f\t",1-(float)que/ty);}voidmain(){intm,i;srand(10*getpid()); //用來(lái)作為初始化隨機(jī)數(shù)隊(duì)列的"種子"m=(int)((float)(ty-1)*(rand()/(RAND_MAX+1.0))); //選0-319中一數(shù)for(i=0;i<ty;i+=4)//產(chǎn)生指令隊(duì)列{ d[i]=m; //任選一指令訪問(wèn)點(diǎn)m d[i+1]=d[i]+1;//順序執(zhí)行一條指令m+1 d[i+2]=(int)((float)d[i]*(rand()/(RAND_MAX+1.0)));//執(zhí)行前地址指令m',即選擇(0,m+1)之間的數(shù)d[i+3]=d[i+2]+1; //順序執(zhí)行一條指令m=(int)((float)((ty-1)-d[i+2])*(rand()/(RAND_MAX+1.0)))+d[i+2]; //選(m'+2,319)之間數(shù)}for(i=0;i<ty;i++) //將指令序列變換成頁(yè)地址流page[i]=d[i]/10;printf("PAGE\tFIFO\tLRU\t\n");for(i=4;i<=32;i++)//內(nèi)存從4頁(yè)到32頁(yè){printf("%2d\t",i);FIFO(i);LRU(i);printf("\n");}}程序運(yùn)行結(jié)果:【思考題】⒈在內(nèi)存頁(yè)面較少(4~5個(gè))的情況時(shí),各種頁(yè)面置換算法的命中率有何差別?FIFO算法和LRU算法命中率都在55%左右,相差不大。⒉在內(nèi)存頁(yè)面為7~12個(gè)頁(yè)面時(shí),各種頁(yè)面置換算法的命中率有何差異?FIFO算法命中率在59%-67%,LRU算法命中率在60%-70%之間,相對(duì)來(lái)說(shuō),最近最久未使用算法效率更好一些。⒊在內(nèi)存頁(yè)面為25~32個(gè)頁(yè)面時(shí),各種頁(yè)面置換算法的命中率有何差異??jī)煞N算法命中率都在80%-90%之間,當(dāng)內(nèi)存中中頁(yè)面數(shù)逐漸增加時(shí),訪問(wèn)的都已裝入內(nèi)存,從而命中率都較大。實(shí)驗(yàn)四文件系統(tǒng)【實(shí)驗(yàn)?zāi)康呐c要求】1、熟悉Linux文件系統(tǒng)的文件和目錄結(jié)構(gòu),掌握Linux文件系統(tǒng)的基本特征。2、掌握命令行方式下文件操作命令和程序中文件操作函數(shù)的使用方法。3.、掌握Linux文件系統(tǒng)的加載和卸載方法。 【實(shí)驗(yàn)主要儀器與材料】1、帶Linux操作系統(tǒng)的PC機(jī)2、GCC編譯器【實(shí)驗(yàn)內(nèi)容】1.熟悉Linux下的文件操作命令,如查看文件系統(tǒng)的分區(qū)和設(shè)備文件、查看文件系統(tǒng)目錄結(jié)構(gòu)、創(chuàng)建文件夾、復(fù)制文件、更改文件權(quán)限等,觀察Linux文件系統(tǒng)的特點(diǎn)。2.對(duì)比實(shí)驗(yàn)一的文件拷貝代碼,利用不同的文件操作函數(shù)實(shí)現(xiàn)文件的輸出和拷貝。3.實(shí)現(xiàn)對(duì)光盤的加載和訪問(wèn),然后卸載設(shè)備。4.加載Windows文件系統(tǒng),實(shí)現(xiàn)對(duì)Windows數(shù)據(jù)的訪問(wèn)和共享?!緦?shí)驗(yàn)步驟及實(shí)驗(yàn)結(jié)果分析】實(shí)驗(yàn)內(nèi)容:1.df:查看文件系統(tǒng)的狀態(tài)信息,顯示各分區(qū)容量、硬盤占用空間、目前剩余空間及掛載點(diǎn)等信息du:統(tǒng)計(jì)目錄或文件所占磁盤空間的大小mkdir:創(chuàng)建文件夾cp:復(fù)制文件chmod:更改文件權(quán)限2.(1)#include<unistd.h>#include<stdio.h>#include<stdlib.h>intmain(){ FILE*fp; charch; charfname[30]; printf("Pleaseinputthefilename:"); scanf("%s",&fname); fp=fopen(fname,"r"); if(fp==NULL) { printf("Can’topenthefile!\n"); exit(0); } while((ch=getc(fp))!=EOF) {putchar(ch);} fclose(fp); return0;}(2)#include<unistd>#include<stdio.h>intmain(){ FILE*fp=NULL; FILE*fq=NULL; charch; fq=fopen("/root/c_code/test/t.c","a"); fp=fopen("/etc/passwd","r") //打開文件 while((ch=fgetc(fp))!=EOF) {fputc(ch,fq);} fclose(fp); fclose(fq); fp=NULL; fq=NULL; return0;}3.(1)新建一個(gè)目錄mkdir/mnt/cdrom(2)加載光盤mount/dev/cdrom/mnt/cdrom(3)卸載光盤umount/mnt/cdrom(4)彈出光盤、關(guān)閉光驅(qū)eject4.加載windows文件系統(tǒng)手動(dòng)加載方式:(1)root用戶登錄Linux(2)新建windows分區(qū)掛接目錄mkd

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論