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

下載本文檔

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

文檔簡介

1、百度文庫操作系統(tǒng)實(shí)踐報(bào)告準(zhǔn)考證號(hào):考生姓名:一.實(shí)驗(yàn)?zāi)康牟僮飨到y(tǒng)是一門實(shí)踐性很強(qiáng)的計(jì)算機(jī)專業(yè)課程, 它要求我們掌握操作系統(tǒng)的 工作原理和基本理論知識(shí)。它注重方法、技術(shù)的實(shí)際應(yīng)用。在上機(jī)實(shí)踐考核中, 為培養(yǎng)考生良好的學(xué)習(xí)與工作作風(fēng)。要求考生按一定的規(guī)范進(jìn)行上機(jī)前的考核準(zhǔn) 備。熟悉軟硬件環(huán)境。上機(jī)調(diào)試和正確運(yùn)行程序,以及提交實(shí)踐考核報(bào)告。上機(jī) 實(shí)踐考核在機(jī)器環(huán)境上調(diào)試、運(yùn)行程序和產(chǎn)生正確的結(jié)果。但準(zhǔn)備階段和整理實(shí) 踐報(bào)告也十分重要,只有做好充分的準(zhǔn)備,熟悉機(jī)器及環(huán)境,盡可能的正確編碼, 才能高效率地利用機(jī)時(shí)。在書寫報(bào)告時(shí),必須依照規(guī)定的格式整理好文檔資料, 為考生將來從事于軟件 開發(fā)和研制工作,打

2、下一個(gè)堅(jiān)實(shí)的基礎(chǔ)。二.實(shí)驗(yàn)環(huán)境1 .硬件環(huán)境:/CPU P4內(nèi)存:256M硬盤:40G(局域網(wǎng))/2 .軟件環(huán)境: /操作系統(tǒng):Windows XP百度文庫開發(fā)工具:Microsoft Visual C+三.實(shí)驗(yàn)內(nèi)容 /實(shí)驗(yàn)六1 .內(nèi)容描述/在Windows環(huán)境下創(chuàng)建子進(jìn)程,在父子進(jìn)程之間實(shí)驗(yàn)進(jìn)程通信。、2 .實(shí)驗(yàn)過程實(shí)驗(yàn)原理:系統(tǒng)內(nèi)部進(jìn)程間通訊和數(shù)據(jù)交換有多種方式:消息、共享內(nèi)存、匿 名(命名)管道、郵槽、Windows套接字等多種技術(shù)。其中利用消息機(jī) 制實(shí)現(xiàn)IPC雖然同其他方法相比有交換的數(shù)據(jù)量小、攜帶的信息少等缺 點(diǎn),但由 于其實(shí)現(xiàn)方便、應(yīng)用 靈活而廣泛應(yīng)用于無須大量、頻繁數(shù)據(jù)交 換的內(nèi)

3、部進(jìn)程通訊系統(tǒng)之中。Windows是一種面向?qū)ο蟮捏w系結(jié)構(gòu),Windows環(huán)境和應(yīng)用程序都 是通過消息來交互的。Windows應(yīng)用程序開始執(zhí)行后,Windows為該程 序創(chuàng)建一個(gè)“消息隊(duì)列(message queue)",用以存放郵寄給該程序可能 創(chuàng)建的各種不同窗口的消息。消息隊(duì)列中消息的結(jié)構(gòu)(MSG)為/typedef struct tagMSGHWND hwnd;UINT message;WPARAM wParam; /LPARAM lParam;DWORD time;POINT pt;百度文庫MSG;其中第一個(gè)成員變量是用以標(biāo)識(shí)接收消息的窗口的窗口句柄;第二 個(gè)參數(shù)便是消息標(biāo)識(shí)

4、號(hào),如WM_PAINT第三個(gè)和第四個(gè) 參數(shù)的具體意義 同message值有關(guān),均為 消息參數(shù)。前四 個(gè)參數(shù)是非常重要和經(jīng)常用到 的,至于后兩個(gè)參數(shù)則分別表示郵寄消息的時(shí)間和光標(biāo)位置(屏幕坐 標(biāo))。把消息傳送到應(yīng)用程序有兩種方法:一種是由系統(tǒng)將消息”郵寄 (post)" 鈾應(yīng)用程序的“消息隊(duì)列"這是"進(jìn)隊(duì)消息"Win32 API 有對(duì)應(yīng)的 函數(shù)PostMessage(),此函數(shù)不等待該消息處理完就返回;而另一種則 是由系統(tǒng)在直接調(diào)用窗口函數(shù)時(shí)將消息”發(fā)送(send)”給應(yīng)用程序的窗 口函數(shù),屬于"不進(jìn)隊(duì)消息"對(duì)應(yīng)的函數(shù)是SendMess

5、age()其必須等待該 消息處理完后方可返回。父進(jìn)程的實(shí)現(xiàn)1)新建一工程文件:FatherProcess ,選取 MFC AppWizard(exe)。2)第二步選取 Single document( 單文檔)。3)其余幾步均為確省值。4)添加三個(gè)菜單“進(jìn)程通信”,子菜單 ”向“子進(jìn)程”發(fā)送命令”和 與其對(duì)應(yīng)的函數(shù):運(yùn)行結(jié)果父進(jìn)程向子進(jìn)程發(fā)送消息結(jié)果如下圖:/百度文庫實(shí)驗(yàn)七1.內(nèi)容描述編程模擬磁盤移臂調(diào)度算法2.實(shí)驗(yàn)過程程序清單:來先服務(wù)算法(FCFS)*n");printf(" *2.*n");printf(" *3.*n");printf(

6、" *4.*n");printf("*5);最短尋道時(shí)間優(yōu)先算法(SSTF)單向掃描算法(CSCAN)電梯調(diào)度算法(SCAN)scanf("%d", &n);百度文庫if(n=0)exit(0); 八 printf("n"); /switch(n) case 1:SetDI(DiscLine);FCFS(Hand,DiscLine); /先來先服務(wù)算法(FCFS)break; case 2:SetDI(DiscLine);SSTF(Hand,DiscLine); /最短尋道時(shí)間優(yōu)先算法.(SSTF) break; c

7、ase 3:SetDI(DiscLine);CSCAN(Hand,DiscLine); /單向掃描算法(CSCAN)break;case 4:SetDI(DiscLine);SCAN(Hand,DiscLine,0,9); 電梯調(diào)度算法(SCAN)break;case 5:break; printf("nn+是否繼續(xù)(按0結(jié)束,按1繼續(xù))?");scanf("%5d",&Con);百度文庫/數(shù)組Sour復(fù)制到數(shù)組Dist ,復(fù)制到x個(gè)數(shù) void CopyL(int Sour口,int Dist口,int x)int i;for(i=0;i<

8、;=x;i+)Disti=Souri;/打印輸出數(shù)組Privoid Print(int Pri口,int x)int i;for(i=0;i<=x;i+)printf("%5d",Prii);/隨機(jī)生成磁道數(shù)void SetDI(int DiscL口)int i;、'、/int nQueueQUEUELEN = 143, 86, 145, 93, 179, 95, 150, 103, 176, 132;百度文庫for(i=0; i< QUEUELEN; i+)DiscLi=nQueuei;隨機(jī)生成10個(gè)磁道號(hào) printf("+ /'需

9、要尋找的磁道號(hào):");Print(DiscL,9); /輸出隨機(jī)生成的磁道號(hào)printf("n");/數(shù)組Sour把x位置的數(shù)刪除,并把y前面的數(shù)向前移動(dòng),y后的數(shù)保持不變(即會(huì)出現(xiàn)2個(gè)y)void DelInq(int Sour口,int x,int y)int i;for(i=x;i<y;i+)Souri=Souri+1;x+;/先來先服務(wù)算法(FCFS) void FCFS(int Han,int DiscL口) int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl口復(fù)制給數(shù)組RLine口int i,k,All,Temp; /Temp是計(jì)算移動(dòng)

10、的磁道距離的臨時(shí)變量All=0; 統(tǒng)計(jì)全部的磁道數(shù)變量/k=9; /限定10個(gè)的磁道數(shù)CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine百度文庫printf("n+ 按照FCF就法磁道的訪問順序?yàn)椋?quot;);All=Han-RLine0;for(i=0;i<=9;i+)/Temp=RLine0-RLine1;/ 求出移動(dòng)磁道數(shù),前一個(gè)磁道數(shù)減 去后一個(gè)磁道數(shù)得出臨時(shí)的移動(dòng)距離 if(Temp<0)Temp=(-Temp);/移動(dòng)磁道數(shù)為負(fù)數(shù)時(shí),算出相反數(shù)作為移 動(dòng)磁道數(shù)printf("%5d",RLine0);All=T

11、emp+All;/求全部磁道數(shù)的總和'、DelInq(RLine,0,k);/每個(gè)磁道數(shù)向前移動(dòng)一位k-; BestJage1=All;Best1存放移動(dòng)磁道數(shù)BestJage0=1; Best0存放算法的序號(hào)為:1Jage+;/排序的序號(hào)加1 Aver=(float) All)/10;/求平均尋道次數(shù)printf("n+臂移動(dòng)總量:<%5d> ",All); /最短尋道時(shí)間優(yōu)先算法(SSTF) void SSTF(int Han,int DiscL口) int i,j,k,h,All; int Temp; /Temp是計(jì)算移動(dòng)的磁道距離的臨時(shí)變量int

12、 RLine10; / 將隨機(jī)生成的磁道數(shù)數(shù)組 Discl口復(fù)制給數(shù)組 RLine口百度文庫int Min;All=0; 統(tǒng)計(jì)全部的磁道數(shù)變量 k=9; /限定10個(gè)的磁道數(shù) CopyL(DiscL,RLine,9); 復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLineprintf("n+ 按照SSTF算法磁道的訪問順序?yàn)?#39;:"); for(i=0;i<=9;i+) Min=64000;/for(j=0;j<=k;j+) 內(nèi)循環(huán)尋找與當(dāng)前磁道號(hào)最短尋道的時(shí)間的磁道號(hào)if(RLinej>Han) /如果第一個(gè)隨機(jī)生成的磁道號(hào)大于當(dāng)前的磁道號(hào),執(zhí)行下一句Temp=RLin

13、ej-Han; /求出臨時(shí)的移動(dòng)距離elseTemp=Han-RLinej; /求出臨時(shí)的移動(dòng)距離if(Temp<Min) /如果每求出一次的移動(dòng)距離小于Min,執(zhí)行下一句Min=Temp; /Temp 臨時(shí)值賦予 Min'h寸把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予 hAll=All+Min; /統(tǒng)計(jì)一共移動(dòng)的距離printf("%5d",RLineh);Han=RLineh;DelInq(RLine,h,k); /每個(gè)磁道數(shù)向前移動(dòng)一位k-; '、/百度文庫BestJage1=All;Best1存放移動(dòng)磁道數(shù)BestJage0=2;/Best0存放算法的序號(hào)

14、為:2Jage+;/排序序號(hào)加1Aver=(float)All)/10;/求平均尋道次數(shù)printf("n+/ 臂移動(dòng)總量:<%5d> ",All); /掃描算法(SCAN) int SCAN(int Han,int DiscL口,int x,int y) int j,n,k,h,m,All;int t=0;int Temp;int Min;int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組 Discl口復(fù)制給數(shù)組RLine口int Order;Order=1; k=y;m=2; /控制while語句的執(zhí)行,即是一定要使當(dāng)前磁道向內(nèi)向外都要掃描到All=0; /

15、統(tǒng)計(jì)全部的磁道數(shù)變量/CopyL(DiscL,RLine,9); /復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLine /printf("n+按照電梯調(diào)度算法磁道的訪問順序?yàn)?");/Min=64000;for(j=x;j<=y;j+) /尋找與當(dāng)前磁道號(hào)最短尋道的時(shí)間的磁道號(hào) if(RLinej>Han) /如果第一個(gè)隨機(jī)生成的磁道號(hào)大于當(dāng)前10百度文庫的磁道號(hào),執(zhí)行下一句Temp=RLinej-Han; /求出臨時(shí)的移動(dòng)距離else/Temp=Han-RLinej; /求出臨時(shí)的移動(dòng)距離if(Temp<Min) Min=Temp; /Temp 臨時(shí)值賦予 Min h=j;

16、 /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予hAll=All+Min; printf("%5d",RLineh);if(RLineh>=Han) /由外向里Order=0;t=1;Han=RLineh;DelInq(RLine,h,k); /k-;while(m>0)if(Order=1) /order1的話,磁道向內(nèi)移動(dòng) for(j=x;j<=y;j+) h=-1;Min=64000;判斷磁道的移動(dòng)方向,即是由里向外還是每個(gè)磁道數(shù)向前移動(dòng)一位是判斷磁盤掃描的方向標(biāo)簽,order是11百度文庫for(n=x;n<=k;n+) /判斷離當(dāng)前磁道最近的磁道號(hào)if(

17、RLinen<=Han) Temp=Han-RLinen; if(Temp<Min) Min=Temp; /Temp 臨時(shí)值賦予 Min /h=n; /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦予h if(h!=-1) All=All+Min; /疊加移動(dòng)距離printf("%5d",RLineh); Han=RLineh; / 最近的磁道號(hào)作為當(dāng)前磁道 DelInq(RLine,h,k); k-; Order=0; / 當(dāng)完成向內(nèi)的移動(dòng),order賦予0,執(zhí)行else 語句,使磁道向外移動(dòng) m-; 向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩 次 else /order

18、 是0的話,磁道向外移動(dòng) 12百度文庫for(j=x;j<=y;j+) h=-1; /Min=64000;,for(n=x;n<=k;n+) /判斷離當(dāng)前磁道最近的磁道號(hào)if(RLinen>=Han) Temp=RLinen-Han; if(Temp<Min) Min=Temp; /Temp 臨時(shí)值賦予 Minh=n; /把最近當(dāng)前磁道號(hào)的數(shù)組下標(biāo)賦 予h if(h!=-1)All=All+Min; /疊加移動(dòng)距離printf("%5d",RLineh);Han=RLineh; /最近的磁道號(hào)作為當(dāng)前磁道/DelInq(RLine,h,k);k-;

19、/Order=1; / 當(dāng)完成向內(nèi)的移動(dòng),order賦予0,執(zhí)行else 語句,使磁道向外移動(dòng)m-;向內(nèi)完成一次,m減一次,保證while循環(huán)執(zhí)行兩13百度文庫次NAll=NAll+All; /if(y-x)>5) / BestJage1=All;Best1存放移動(dòng)磁道數(shù)/ BestJage0=3;/Best口0存放算法的序號(hào)為:3/Jage+;/排序序號(hào)加1Aver=(float)All)/10;/求平均尋道次數(shù)printf("n+臂移動(dòng)總量:<%5d> ",All);return(Han);/單向掃描算法(CSCAN)void CSCAN(int Ha

20、n,int DiscL口)int j,h,n,Temp,m,k,All,Last,i;int RLine10; /將隨機(jī)生成的磁道數(shù)數(shù)組Discl口復(fù)制給數(shù)組RLine口int Min; /int tmp=0;m=2;/k=9;All=0; /統(tǒng)計(jì)全部的磁道數(shù)變量14百度文庫Last=Han;CopyL(DiscL,RLine,9); /八復(fù)制磁道號(hào)到臨時(shí)數(shù)組RLineprintf("n+按照單向掃描算法磁道的訪問順序?yàn)?");while(k>=0)for(j=0;j<=9;j+) /從當(dāng)前磁道號(hào)開始,由內(nèi)向外搜索離當(dāng)前磁道最近的磁道號(hào)h=-1;Min=6400

21、0;for(n=0;n<=k;n+)if(RLinen>=Han)Temp=RLinen-Han;if(Temp<Min)Min=Temp;h=n;Han=RLineh;Last=RLineh;if(h!=-1)All=All+Min; 統(tǒng)計(jì)一共移動(dòng)的距離printf("%5d",RLineh);DelInq(RLine,h,k);15百度文庫k-;if(k>=0)/ tmp=RLine0;for(i=0;i<k;i+)/算出剩下磁道號(hào)的最小值if(tmp>RLinei) tmp=RLinei;Han=tmp;/把最小的磁道號(hào)賦給 Han

22、Temp=Last-tmp;/求出最大磁道號(hào)和最小磁道號(hào)的距離差A(yù)ll=All+Temp;BestJage1=All;Best1 存放移動(dòng)磁道數(shù)BestJage0=4;/Best0存放算法的序號(hào)為:4Jage+;/排序序號(hào)加1Aver=(float)All)/10;/求平均尋道次數(shù)printf("n+臂移動(dòng)總量:<%5d> ",All);void PaiXu()int i,j,Temp;for(i=0;i<5;i+)for(j=0;j<4;j+)16百度文庫if(Best皿1>Bestj+11) /如果前一個(gè)算法的移動(dòng)磁道距離大于后一個(gè)移動(dòng)磁道

23、數(shù),執(zhí)行下面語句Temp=Bestj+11; / 從這起下三行執(zhí)行冒泡法將移動(dòng)距離大小排序,排完后則執(zhí)行每個(gè)算法的排序Bestj+11=Best皿1;Best皿1=Temp;/Temp=Bestj+10; / 將每個(gè)算法的序號(hào)用冒泡法排序Bestj+10=Bestj0;Best皿0=Temp;3.運(yùn)行結(jié)果:1 .先來先服算法運(yùn)行結(jié)果:17百度文庫2 .最短查找時(shí)間算法運(yùn)行結(jié)果:* MMMNMMMMMMKMMMM 通盤調(diào) 度算,去*»«*»*»*«*1MMMMMMMMMMMKMMM MMMMMMMMM MMWMMMHMMMMMM MM MM KMMM* L先來先JJ瞬尉去(FCFD* 2.最威尋道

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論