南京郵電大學(xué)-操作系統(tǒng)實驗報告_第1頁
南京郵電大學(xué)-操作系統(tǒng)實驗報告_第2頁
南京郵電大學(xué)-操作系統(tǒng)實驗報告_第3頁
南京郵電大學(xué)-操作系統(tǒng)實驗報告_第4頁
南京郵電大學(xué)-操作系統(tǒng)實驗報告_第5頁
已閱讀5頁,還剩9頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

課內(nèi)實驗報告課程名: 操作系統(tǒng)任課教師: 沈超專業(yè): 信息管理與信息系統(tǒng)學(xué) 號: 姓 名: 二0—六至二0—七年度第一學(xué)期南京郵電大學(xué)經(jīng)濟與管理學(xué)院《操作系統(tǒng)》課程實驗第一次實驗報告實驗內(nèi)容及基本要求:實驗項目名稱:調(diào)度系統(tǒng)的設(shè)計與實現(xiàn)實驗類型:設(shè)計每組人數(shù):1實驗內(nèi)容及要求:實驗內(nèi)容:本次實驗的主要內(nèi)容是模擬調(diào)度系統(tǒng)的實現(xiàn),包括高級、中級和低級調(diào)度的管理系統(tǒng)實現(xiàn),調(diào)度算法的設(shè)計與實現(xiàn)以及銀行家算法的設(shè)計設(shè)計與實現(xiàn)。本次實驗主要包括兩部分內(nèi)容:1、 模擬具有三級調(diào)度的計算機系統(tǒng)進程運行過程,設(shè)計進程調(diào)度算法,將其存入進程文件中。如:進程1:運行5秒后有3秒的I/O操作,之后有10秒的運行,結(jié)束??梢詫懗桑骸眕1:r5,io3,r3e;”。編程實現(xiàn)調(diào)度算法函數(shù),設(shè)計優(yōu)先級、時間片大小和并發(fā)進程個數(shù),系統(tǒng)不斷從進程文件中讀出進程信息,選擇一種進程調(diào)度算法,模擬進程的運行及調(diào)度過程,比較不同算法在周轉(zhuǎn)時間和平均周轉(zhuǎn)時間上的差異。針對進程文件里面的數(shù)據(jù)為正常、缺項、格式不正確等各種情況,檢測程序的執(zhí)行結(jié)果。2、 理解安全性算法和銀行家算法的核心機制:針對3類資源、5個進程的情況,設(shè)計相應(yīng)的數(shù)據(jù)結(jié)構(gòu),分別表示每個進程占用各類資源的情況;編程實現(xiàn)安全性算法函數(shù),編制主函數(shù),動態(tài)輸入資源的占用情況,進程的資源申請,調(diào)用安全性函數(shù),實現(xiàn)銀行家算法;輸入可分配和不可分配的請求,測試系統(tǒng)的正確性。實驗要求:進程調(diào)度模擬程序根據(jù)一個進程調(diào)度文件,模擬進程的各種調(diào)度過程,用適合的表達方式表示出來。銀行家算法程序提供一個用戶界面,可以在上邊發(fā)出資源申請命令,系統(tǒng)應(yīng)能給出是否可以接受申請,并且有結(jié)論輸出。思考:1、 終端型進程流適合使用哪種調(diào)度算法?長批處理作業(yè)適合使用哪種調(diào)度算法?2、 動態(tài)優(yōu)先級調(diào)度算法的優(yōu)先級變化率應(yīng)該如何設(shè)置?實驗結(jié)果:一、短作業(yè)優(yōu)先調(diào)度算法。短作業(yè)優(yōu)先算法(SJF)就是從就緒隊列中選出一估計運行時間最短的進程,將處理機分配給它,使它立即執(zhí)行并一直執(zhí)行到完成。算法實現(xiàn)過程:先定義一個結(jié)構(gòu)體,里面定義了進程編號、進程名稱、到達時間、運行時間、周轉(zhuǎn)時間等等的內(nèi)容,然后給進程編號和名稱、到達時間、運行時間等賦上初值。接下來設(shè)置時間標(biāo)志,一個一步一步對每到達的一個進程進行處理,并記錄下結(jié)束運行時間等數(shù)據(jù)。最后把所有數(shù)據(jù)記錄到結(jié)構(gòu)體后,就可以輸出結(jié)果。SJF()關(guān)鍵代碼:inttemptime=0;〃當(dāng)期時間inti=0,j;intnumberschedul,tempcounter;doubleruntime;runtime=Process[i].WholeTime*1.0;j=l;while((j<N)&&(Process[i].ArrivalTime==Process[j].ArrivalTime)){〃判斷是否有兩個進程同時到達if(Process[j].WholeTime<Process[i].WholeTime){runtime=Process[i].WholeTime;i=j;}j++;}〃查找下一個被調(diào)度的進程numberschedul=i;Process[numberschedul].ServiceTime=Process[numberschedul].ArrivalTime;Process[numberschedul].FinishTime=Process[numberschedul].ServiceTime+Process[numberschedul].WholeTime;Process[numberschedul].runflag=1;temptime=Process[numberschedul].FinishTime;Process[numberschedul].order=1;tempcounter=1;while(tempcounter<N){for(j=0;j<N;j++){if((Process[j].ArrivalTime<=temptime)&&(!Process[j].runflag)){runtime=Process[j].WholeTime;numberschedul=j;break;}}for(j=0;j<N;j++){if((Process[j].ArrivalTime<=temptime)&&(!Process[j].runflag))if(Process[j].WholeTime<runtime)runtime=Process[j].WholeTime;numberschedul=j;}}Process[numberschedul].ServiceTime=temptime;Process[numberschedul].FinishTime=Process[numberschedul].ServiceTime+Process[numberschedul].WholeTime;Process[numberschedul].runflag=1;temptime=Process[numberschedul].FinishTime;tempcounter++;Process[numberschedul].order=tempcounter;}程序結(jié)果截圖:進程名彩:=Lb10IE50continue:10c:15d周轉(zhuǎn)時間=1T.sanykeyto0E[1進程名彩:=Lb10IE50continue:10c:15d周轉(zhuǎn)時間=1T.sanykeyto0E[1■F!\vc6.O\VC6.O\flies\D&bug\SJF.?£e" 一口X10 025 255 1010 15菇束ID5015■25周轉(zhuǎn)10.UG45.00S001&.0D執(zhí)行順序142O52Bf二、銀行家算法(網(wǎng)上借鑒)銀行家算法,當(dāng)進程提出資源申請時,系統(tǒng)首先檢查該進程對資源的申請量是否超過其最大需求量及系統(tǒng)現(xiàn)有的資源能否滿足進程需要。若超過,則報錯,若不能滿足,則讓該進程等待;否則進一步檢查把資源分給該進程后系統(tǒng)能否出于安全狀態(tài),若安全,則分配,否則置該進程為等待資源狀態(tài)。算法實現(xiàn)過程:設(shè)進程i提出請求REQUEST[j],則銀行家算法按如下規(guī)則進行判斷。如果REQUEST[i][j]<=NEED[i][j],則轉(zhuǎn)(2);否則,出錯。如果REQUEST[i][j]<=AVAILABLE[i][j],則轉(zhuǎn)(3);否則,出錯。系統(tǒng)試探分配資源,修改相關(guān)數(shù)據(jù):AVAILABLE[j]-=REQUEST[i][j];ALLOCATION[i][j]+=REQUEST[i][j];NEED[i][j]-=REQUEST[i][j];系統(tǒng)執(zhí)行安全性檢查,如安全,則分配成立;否則試探險性分配作廢,系統(tǒng)恢復(fù)原狀,進程等待。Check()關(guān)鍵代碼:{intk,f,no=0;intwork[M],a[M];printf("處于安全狀態(tài).");charfinish[M];printf("安全序列號:");anquan=1;for(i=0;i<n;i++)printf("%d",a[i]);for(i=0;i<n;i++)finish[i]='F';printf("\n");for(j=0;j<m;j++)work[j]=available[j];printf("進程");k=n;printf("");doprintf("Max");{for(i=0;i<n;i++)rintf("");{if(finish[i]=='F')rintf("allocation");{f=1;printf("");for(j=0;j<m;j++)printf("need");if(need[i][j]>work[j])printf("");

f=0;printf("available");if(f==1)printf("\n");〃找到還沒完成的且需求數(shù)小于可提供for(i=0;i<n;i++)進程繼續(xù)運行的{printf("%2d",i);{finish[i]='T';printf(" ");a[no++]=i;for(j=0;j<m;j++)〃記錄安全序列號printf("%2d",max[i][j]);for(j=0;j<m;j++)printf(" ");work[j]=work[j]+allocation[i][j];for(j=0;j<m;j++)〃釋放該進程已分配的資源available。]=work[j];}}}printf("%2d",allocation[i][j]);k--;}while(k>0);f=1;printf("");for(i=0;i<n;i++)for(j=0;j<m;j++)〃判斷有沒有進程沒完成{if(finish[i]=='F'){printf("%2d",need[i][j]);f=0;printf("");break; }for(j=0;j<m;j++){}if(f==0) {if(i>0)printf("不安全狀態(tài)!\n");break;anquan=0;printf("%2d",available[j]);}}else{printf("\n");}}}■1"F:\vc6.0\VC&.CAflie&\Debug\blank.exe'程序結(jié)果截圖:a.vai1品1e33Z■ITtLl1品1C2jLI口XDri列L序OL勵—ILJ_rKW普皇J14a.vai1品1e33Z■ITtLl1品1C2jLI口XDri列L序OL勵—ILJ_rKW普皇J14的一45^不&1至董J和渝叉和.」.-..」oOZOOO33口236口.--UO_■..」22□〔...」.I'.』。4^-b^Is-.」..」這次上機模擬了進程調(diào)度過程和解決了死鎖問題,讓我對短作業(yè)優(yōu)先調(diào)度算法和銀行家算法有了比在課堂上更深刻的認(rèn)識。紙上得來終覺淺,絕知此事要躬行。這句話說的很有道理,本以為自己在課堂上已經(jīng)對算法的調(diào)度過程掌握得一清二楚,但在實踐編程的時候,總是遇到系統(tǒng)不按短作業(yè)次序執(zhí)行,或者周轉(zhuǎn)時間計算結(jié)果錯誤等邏輯錯誤,只有當(dāng)自己把程序執(zhí)行過程和老師ppt上的過程一一對照認(rèn)真理解,才最終把短作業(yè)優(yōu)先調(diào)度算法編寫出來。銀行家算法大部分內(nèi)容是在我上網(wǎng)搜到的代碼,之后對照ppt上銀行家算法的過程后改動了一些內(nèi)容得以順利運行,這加深了我對銀行家算法避免死鎖檢查步驟的理解。以上就是我對這兩個程序編寫大致情況,總的來說,這次上機使我受益匪淺。成績評定:該生對待本次實驗的態(tài)度口認(rèn)真口良好口一般口比較差。本次實驗的過程情況口很好口較好口一般口比較差對實驗結(jié)果的分析口很好口良好口一般口比較差文檔書寫符合規(guī)范程度口很好口良好口一般口比較差綜合意見:成績指導(dǎo)教師簽名日期12.2《操作系統(tǒng)》課程實驗第二次實驗報告實驗內(nèi)容及基本要求:實驗項目名稱:內(nèi)存分配算法模擬實現(xiàn)實驗類型:操作每組人數(shù):1實驗內(nèi)容及要求:實驗內(nèi)容:本實驗的主要內(nèi)容是實現(xiàn)存儲管理系統(tǒng)中的內(nèi)存分配、地址變換和虛擬存儲管理中的頁面置換。具體內(nèi)容包括三個方面:1、 掌握動態(tài)分區(qū)分配的基本原理,設(shè)計動態(tài)分區(qū)分配系統(tǒng),可以實現(xiàn)首次適應(yīng)算法、最壞適應(yīng)算法和最佳適應(yīng)算法進行分區(qū)分配。2、 理解虛擬存儲器的地址變換過程,設(shè)計用于模擬快表、頁表、地址變換所用的寄存器的數(shù)據(jù)結(jié)構(gòu)。編制頁表的初始信息文件,舉例說明文件中具有的信息:共有5塊,每塊的狀態(tài)、在內(nèi)存和外存的起始地址等。編程實現(xiàn)虛擬存儲器地址變換算法程序,動態(tài)輸入所要訪問的邏輯地址,變換過程文字描述以及變換后的物理地址;檢查輸入有效、無效地址,測試程序的正確性和錯誤處理能力。(字符串表示二進制)3、 編程實現(xiàn)LRU算法或CLOCK/改進算法等置換算法(二選一),模擬實現(xiàn)虛擬存儲器的地址變換過程。理解LRU或CLOCK改進算法等置換算法;設(shè)計與算法相關(guān)的數(shù)據(jù)結(jié)構(gòu),如:LRU的堆?;駽LOCK改進算法中的循環(huán)結(jié)構(gòu);按照最多5塊的內(nèi)存分配情況,編程實現(xiàn)所選算法,動態(tài)輸入訪問內(nèi)存的塊號序列,輸出置換結(jié)果;輸入合法、非法的訪問序列數(shù)據(jù),檢查程序的正確性和健壯性。實驗要求:虛擬地址變換程序提供邏輯地址輸入界面,形象地表示出變換成物理地址的過程與最后變換成的物理地址。置換算法程序提供內(nèi)存訪問序列的輸入界面,輸出正確的置換過程描述和置換結(jié)果。思考:1、 地址變換產(chǎn)生錯誤的原因有哪些?2、 在頁面置換過程中,為什么會出現(xiàn)抖動的情況?實驗結(jié)果:1、首次適應(yīng)算法首次適應(yīng)算法(firstfit)就是在搜索儲存空間時,選擇所碰到的第一個滿足作業(yè)儲存量要求的塊分配給用戶算法實現(xiàn)過程:首次適應(yīng)算法(firstfit),定義了一個二維數(shù)組space,第一列存放空余內(nèi)存空間,第二列存放空余空間首地址,存放時與之比較,首次匹配則終止比較,插入作業(yè)?;厥账惴ǎ╮ecycle),就是讓要刪除的作業(yè)的首尾地址值被后一個作業(yè)替換,然后在show()中重新排序,對space數(shù)組里的數(shù)據(jù)重新賦值,然后展示出來。voidfirstfit(int主要代碼:for(i=0;i<=cout;i++){ //找到首次匹配的空間并插入if(space[i][0]>=inserttask){if(i==0){ram[n][0]=space[0][1];ram[n][1]=ram[n][0]+inserttask;space[0][0]=ram[0][0]-ram[n][1];space[0][1]=ram[n][1];}elseif(i==cout){ram[n][0]=space[cout][1];ram[n][1]=ram[n][0]+inserttask;space[cout][0]=200-ram[n][1];pace[cout][1]=ram[n][1];}else{ram[n][0]=space[i][1];ram[n][1]=ram[n][0]+inserttask;space[i][0]=ram[i][0]-ram[n][1];space[i][1]=ram[n][1];}ram[n][2]=inserttask;printf("插入地址位置為:%d——%d\n”,ram[n][0],ram[n][1]);n++;flag=0;break;}}

if(flag!=0)printf("插入失?。n");}voidrecycleE?要代碼:inti,number,flag;〃回收操作,把要刪除的作業(yè)信息用后一個覆蓋flag=1;while(flag){ printf(-請輸入要回收的作業(yè)號:,scanf("%d”,&number);if(number>0&&number-1<n){for(i=number-1;i<=n;i++){ram[i][0]=ram[i+1][0];ram[i][1]=ram[i+1][1];}n--;flag=0;}else{printf("無此作業(yè)號!\n");}}printf("注意,刪除后作業(yè)號會改變!\n");程序結(jié)果截圖:]■z:\uc6.fl\VC6.&;niei\Debug\F;rsLFTt.ese,亍轎K已日用作業(yè)總數(shù)(作業(yè)空間最大為1昕:卬接血序機!k枷盤L個作業(yè)起伯內(nèi)存地址卻未民構(gòu)存地址徵認(rèn)總內(nèi)存太小為E,翰心km作業(yè)起始內(nèi)律址址卻本尾內(nèi)存地址(跋認(rèn)總內(nèi)存太小為女山)?:i6D命掙蘇玲作業(yè)起始內(nèi)律地址布豐尾內(nèi)存地址(新認(rèn)總內(nèi)存大小為女山)Ki]ffl31位位位存存存A4J_31位位位存存存A4J_KI.U如O劇O22:,■普,'R^e6.0\UC6.0\flies\Debug\F;ritFil^it-口布恒芳:如一質(zhì)白,習(xí)空卒即.田件位蚩:面,'R^e6.0\UC6.0\flies\Debug\F;ritFil^it-口布恒芳:如一質(zhì)白,習(xí)空卒即.田件位蚩:面——1時占后臣面:BC G圣章目化臀空案內(nèi)存:網(wǎng)隅髀理嚼黨贏頃鄴H1 '輸恩:無代的作也的空回太??;■A——印bo:叵嵌,誦出)?Wi]信輅入期缺的作盼空iti尢?。築O盹——1如5回?fù)Q,退出)?fc/Vt]膈^麴缺的作明窒問太小,虧-St膈^麴缺的作明窒問太小,虧-St宓:國麟型甯'?;品詛出;?(c/Vt)a"R\vc5.0\VC6Aflie£\Debdg\Frr&tRt?ex&'甘ftfl1 1F F*ittlt1 富* *小Bfl*Mfl*a"R\vc5.0\VC6Aflie£\Debdg\Frr&tRt?ex&'甘ftfl1 1F F*ittlt1 富* *小Bfl*Mfl*業(yè)Mfl*可i7錄撻占尋有骸TR[斗n^LF睬履0——040 60C:ij—160;0 3D占用空間口160——19U占用空|S]:30I知中H韋豐菲市H書豐寸注H*菲FFHW幫菲FHTHIFFH杵宇主甜THIF書HI捧書時擄*主FFH審*書郵瞽小帝忡符主FFHW*FFH審Ira^a前占用情只下:is「| □2U——3J40——? ,—.】匠 190占用空間:ia展.;_牙作業(yè)瑋作;:10Z:f:-j/7:Juu2、LRU算法最近最久未使用置換算法就是當(dāng)需要置換一頁時,選擇在最近一段時間內(nèi)最久不用的頁予以淘汰。算法實現(xiàn)過程:定義了一個存放頁面的數(shù)組page和一個記錄頁面使用情況的數(shù)組p,兩個數(shù)組長度都為3。每當(dāng)置換一個頁面或因頁面存在而未置換時,與頁面對應(yīng)的數(shù)組p位置的數(shù)就會加1;當(dāng)要置換一個頁面時,比較數(shù)組p3個數(shù)的大小,值最小的就是最久未使用的頁面。LRU算法關(guān)鍵代碼:for(i=0;i<N;i++){printf("%5d",input[i]);num=compare(i,input);//比較頁面是否存在if(flag)p[num]=i+1;else{longtime=findmin(p);//找到下標(biāo)最小的頁面的位置page[longtime]=input[i];p[longtime]=i+1;sum++;}printf("%12d%5d%5d\n”,page[0],page[1],page[2]);}printf("\n");change=sum-3;change_rate=float(change)/N;lost_rate=float(sum)/N;程序結(jié)果截圖:

CB,,R\ui:6.O\VC6.0i\Fli&s,ilDebug\LRU?e!isB,:」?L21ZOI7D1HJr_頁畫引用憎;eF-1-1FD-1r□12D1li□12D3j:□34DZ4□Z432032032032L32L32L02L□2L0.■L□7L0r:」?L21ZOI7D1HJr_3、虛擬存儲器的地址變換先將一個進程的邏輯地址空間分成若干個大小相等的片稱為頁面或頁,并為各頁加以編號,從0開始,每個頁面后有頁面號,當(dāng)有請求時,把邏輯地址前幾位提出來與頁號比較,成功后返回頁面號,與有效地址形成物理地址。算法實現(xiàn)過程:設(shè)定一個二維字符串?dāng)?shù)組數(shù)組存儲頁面信息,兩個一維字符串?dāng)?shù)組存放輸入和輸出地址。假設(shè)頁號為3位,頁面號和有效地址都為4位,把輸入數(shù)組的前三位與每個頁號相比較,成功后返回下標(biāo),然后拼接輸出。intcompare(charinput關(guān)鍵代碼:for(i=0;i<8;i++){cout=0;for(j=0;j<3;j++)if(input[j]==page[i][j])cout++;if(cout==3) 〃若3位的頁號匹配成功cout=3{flag=1;p=i;break;}拼接字符串關(guān)鍵代碼:printf("對應(yīng)的物理地址如下:\n");for(i=0;i<4;i++)temp[i]=page[p][i+3];temp[4]='\0'; 〃避免亂碼strcpy(output,temp);//頁面號的復(fù)制for

溫馨提示

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

評論

0/150

提交評論