操作系統(tǒng)課程設(shè)計-老化算法模擬分頁系統(tǒng)_第1頁
操作系統(tǒng)課程設(shè)計-老化算法模擬分頁系統(tǒng)_第2頁
操作系統(tǒng)課程設(shè)計-老化算法模擬分頁系統(tǒng)_第3頁
操作系統(tǒng)課程設(shè)計-老化算法模擬分頁系統(tǒng)_第4頁
操作系統(tǒng)課程設(shè)計-老化算法模擬分頁系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)總體設(shè)計1.1概要設(shè)計1.編寫一個程序,它使用老化算法模擬一個分頁系統(tǒng)。頁幀的數(shù)量是參數(shù)。頁面的訪問序列從文件中讀取。對于一個給定的輸入文件。列出每1000個內(nèi)存訪問中發(fā)生缺頁中斷的數(shù)目,它是可用頁幀數(shù)的函數(shù)。(教材P141,41題);2.一個簡單的典型測試數(shù)據(jù):分配的內(nèi)存幀數(shù):3進程頁訪問序列:0、1、2、3、4、1、2、0、1、2、3、4、0、1、2、3;3.程序中相對地址空間為10個頁。程序設(shè)計作為參數(shù)輸入,假設(shè)頁幀為3塊,初始均為空;程序設(shè)計時作為參數(shù)輸入,時鐘周期為10個數(shù);4.按要求設(shè)計測試比較更大數(shù)據(jù)量的頁面訪問。操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第3頁。

2詳細設(shè)計操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第3頁。2.1模塊設(shè)計整個程序運用老化算法并使用VisualStudio2008開發(fā)平臺。整個程序中分為讀取文件,修改R位,讀取R位,判斷缺頁中斷和主函數(shù)。2.1.1主函數(shù)模塊main()程序流程控制和控制時鐘周期以及最終的結(jié)果打印。voidmain(){ charch[Size]; read(ch); inti=0; while('0'<=ch[i]&&ch[i]<='9'){ printf("%c",ch[i]); //寫入幀并判斷缺頁中斷 dauflt(ch[i]); //修改R位 change(ch[i]); i++; //時鐘周期為10個數(shù) if(i%10==0){ printf("灬灬灬灬灬灬灬灬灬灬灬灬灬灬\n"); printf("\n"); //寫入計數(shù)器 readch(); //清空R位 for(inti=0;i<10;i++) R[i]=0; } } printf("\n計數(shù)器最終情況:\n"); for(intj=0;j<row;j++) {操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第4頁。 printf("\t\t");操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第4頁。 for(intk=0;k<5;k++) printf("%d",count[k][j]); printf("\n"); } printf("缺頁中斷數(shù):\t%d\n",fault_num);}2.1.2修改R位模塊 change(charc)將讀入的字符逐一進行判斷并修改其對應的R位上的值,當R位上為0則改為1,1則無需做任何修改。//讀取R位voidreadch(){ charch; for(inti=0;i<5;i++){ ch=frame[i]; //獲取幀對應的R位,并寫入計數(shù)器 count[i][row]=R[ch-48]; } row++;}2.1.3讀取文件模塊 read(charch[])判斷文件是否存在,并將data.txt的內(nèi)容讀取到字符數(shù)組ch[]中。//讀取文件內(nèi)容voidread(charch[]){ 操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第5頁。 inti=0;操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第5頁。file=fopen("date.txt","rb"); if(file==NULL) printf("cannotopenthedate.txtfile"); while(!(feof(file))) { ch[i]=getc(file); i++; } fclose(file);}2.1.4判定缺頁中斷模塊 dauflt(charc)每當讀入一個文件首先在frame[4]判斷是否有空位,有則直接補到空位處并引發(fā)缺頁中斷;無則查看計數(shù)器,選擇最小計數(shù)器對應的幀來存放,并同樣引發(fā)缺頁中斷;另外,當此數(shù)在幀內(nèi)存在時,無需做任何操作。//判斷缺頁中斷voiddauflt(charc){ inth=0; intmin=0; intcounts[3]={0}; //判斷是否有空位 for(h=0;h<3;h++){ if(frame[h]==c) break; if(0>frame[h]||frame[h]<9){ frame[h]=c; fault_num++; printf("丨"); break;操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第6頁。 } 操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第6頁。 } //無空位的情況 if(h==3){ //判斷幀內(nèi)是否有這個數(shù) for(intp=0;p<3;p++){ if(frame[p]==c) break; } //幀內(nèi)無這個數(shù) if(p==3){ //發(fā)生缺頁中斷 fault_num++; printf("丨"); //統(tǒng)計計數(shù)器 for(intk=0;k<3;k++){ for(intj=0;j<row;j++){ counts[k]+=count[k][j]; } } //比較計數(shù)器,選擇最小器 intminlin=counts[0]; for(intj=1;j<3;j++){ if(minlin>counts[j]){ min=j;操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第7頁。 minlin=counts[j];操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第7頁。 } } frame[min]=c; } } //輸出當前幀內(nèi)情況 printf("\t幀內(nèi)情況:"); for(intz=0;z<3;z++){ printf("%c\t",frame[z]); } printf("\n");}2.1.5讀取R位模塊readch()每當時鐘周期到時,調(diào)用此函數(shù)將幀frame[4]內(nèi)的值寫入計數(shù)器count[4][row]中,row表示當前處于第幾個時鐘周期。//讀取R位voidreadch(){ charch; for(inti=0;i<3;i++){ ch=frame[i]; //獲取幀對應的R位,并寫入計數(shù)器 count[i][row]=R[ch-48]; } row++;操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第8頁。}

2.2流程圖操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第8頁。主函數(shù)主函數(shù)main讀取文件read讀取文件read成功幀內(nèi)是否存在幀內(nèi)是否存在否否缺頁中斷dauflt是缺頁中斷dauflt是修改R位change修改R位change時鐘周期是否到了時鐘周期是否到了否否是是寫入計數(shù)器,清空R位寫入計數(shù)器,清空R位打印打印結(jié)果結(jié)束結(jié)束操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第9頁。

3調(diào)試與測試操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第9頁。3.1調(diào)試過程中的問題讀取文件時候訪問不了數(shù)據(jù),頁面訪問序列存放到文件data.txt中,該文件放入工程目錄下,然后將文件中的序列讀入一個數(shù)組中。修改R位,每個頁設(shè)置一個R位(訪問位),取值為0(表示未訪問),取值為1,當在一個時鐘滴答內(nèi)訪問該頁時,置為1。每個時鐘滴答開始時置所有頁的R位為0。操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第10頁。

3.2測試結(jié)果操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第10頁。data.txt中的數(shù)據(jù):結(jié)果:操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第11頁。

參考文獻操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第11頁。[1]塔嫰鮑姆:《現(xiàn)代操作系統(tǒng)》[M],機械工業(yè)出版社2009.7,第99頁。操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第12頁。

心得體會操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第12頁。 每一次課程設(shè)計度讓我學到了在平時課堂不可能學到的東西。所以我對每一次課程設(shè)計的機會都非常珍惜。不一定我的課程設(shè)計能夠完成得有多么完美,但是我總是很投入的去研究去學習。一個多月的實驗就這樣到了尾聲,我想我還學到了一些東西。學習這門課之前不知道上這門課的真正用途在哪里,現(xiàn)在才知道操作系統(tǒng)是那么有用,電腦中一重之重的基礎(chǔ)軟件,當然非常復雜,這次的實驗我是做第三個題目,而這個程序題目要求也并非真正的分頁系統(tǒng),而是模擬老化算法的分頁系統(tǒng),所以做起來難度并非很高。操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第13頁。

操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第13頁。教師評語操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第14頁。

#include<stdio.h>操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第14頁。#include<stdlib.h>#include<string.h>FILE*file;#defineSize1000#defineNum10 //缺頁中斷數(shù)staticintfault_num=0; //幀static charframe[3]; //訪問位static intR[10]={0}; //計數(shù)器static intcount[3][1000]={0}; //計數(shù)器的列數(shù)static introw=0;//讀取文件內(nèi)容voidread(charch[]){ inti=0;file=fopen("date.txt","rb"); if(file==NULL) printf("cannotopenthedate.txtfile"); while(!(feof(file))) { ch[i]=getc(file); i++; } fclose(file);}//修改R位voidchange(charc){ for(inti=0;i<10;i++){ i+=48; if(c==i) R[i-48]=1; i-=48; }}//讀取R位voidreadch(){ charch; for(inti=0;i<3;i++){ ch=frame[i]; //獲取幀對應的R位,并寫入計數(shù)器 count[i][row]=R[ch-48];操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第15頁。 }操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第15頁。 row++;}//判斷缺頁中斷voiddauflt(charc){ inth=0; intmin=0; intcounts[3]={0}; //判斷是否有空位 for(h=0;h<3;h++){ if(frame[h]==c) break; if(0>frame[h]||frame[h]<9){ frame[h]=c; fault_num++; printf("丨"); break; } } //無空位的情況 if(h==3){ //判斷幀內(nèi)是否有這個數(shù) for(intp=0;p<3;p++){ if(frame[p]==c) break; } //幀內(nèi)無這個數(shù) if(p==3){ //發(fā)生缺頁中斷 fault_num++; printf("丨"); //統(tǒng)計計數(shù)器 for(intk=0;k<3;k++){ for(intj=0;j<row;j++){ counts[k]+=count[k][j]; } } //比較計數(shù)器,選擇最小器 intminlin=counts[0]; for(intj=1;j<3;j++){ if(minlin>counts[j]){ min=j; minlin=counts[j];操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第16頁。 }操作系統(tǒng)課程設(shè)計老化算法模擬分頁系統(tǒng)全文共17頁,當前為第16頁。 } frame[min]=c; } } //輸出當前幀內(nèi)情況 printf("\t幀內(nèi)情況:"); for(intz=0;z<3;z++){ printf("%c\t",frame[z]); } printf("\n");}voidmain(){ charch[Size]; read(ch); inti=0; while('0'<=ch[i]&&ch[i]<='9'){ printf("%c",ch[i]); //寫入幀并判斷缺頁中斷 dauflt(ch[i]); //修改R位 change(ch[i]); i++; //時鐘周期為10個數(shù) if(i%10==0){ printf("灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬灬\n"); print

溫馨提示

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

評論

0/150

提交評論