版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
南通大學計算機科學與技術學院操作系統(tǒng)作業(yè)調度實驗報告班級___________計091___________姓名___________________學號_____________指導教師戴樹貴一、任務:實現(xiàn)作業(yè)調度的三個算法a.先來先服務算法(FCFS)。b.最短作業(yè)優(yōu)先算法(SJF)。c.最短剩余時間優(yōu)先算法(SRTF)。二、實驗目的:進一步理解作業(yè)調度算法的相關內容明白作業(yè)調度的主要內容通過編程掌握作業(yè)調度的主要算法三、要求: 1.實現(xiàn)對三種算法的模擬實現(xiàn)。 2.分別計算出三種算法的平均作業(yè)周轉時間、平均帶權作業(yè)周轉時間。四、原理:a.先來先服務算法(FCFS)按作業(yè)到達CPU時間先后順序進行非剝奪式調度,先到達CPU的作業(yè)先被執(zhí)行。b.最短作業(yè)優(yōu)先算法(SJF)忽視作業(yè)的等待時間,按作業(yè)所需要的CPU運行時間長短進行非剝奪式調度,CPU運行時間短的作業(yè)先被執(zhí)行。c.最短剩余時間優(yōu)先算法(SRTF).最短作業(yè)優(yōu)先算法是非剝奪式的,可將其改造成剝奪式的調度算法,當前某進程/線程正在運行,如果有新進程/線程移入就緒隊列,若它所需要的CPU運行時間比當前運行的進程/線程所需要的剩余CPU時間還短,搶占式最短作業(yè)時間優(yōu)先算法強行剝奪當前執(zhí)行者的控制權,調度新進程/線程執(zhí)行。五、實驗環(huán)境:MicrosoftVisualBasic6.0中文版算法頭文件:#include<iostream>usingnamespacestd;structpro{ intname; //進程序號 doublearriver; //到達時間 doubleruntime; //所需CPU時間(運行時間) doublecopyruntime; //備份------所需CPU時間(運行時間) doublefinish; //完成時間 doubleroundtime; //周轉時間 doublearroundtime;//帶權周轉時間 boolcompare; //最短剩余時間優(yōu)先算法------到達時間小于time可比};//先來先服務算法//intF1(void){ intsumpro; //進程總數(shù) doublesumtime=0; //累計運行時間 doubleaveragetime=0;//平均作業(yè)周轉時間 inti; cout<<"請輸入進程總數(shù)\n"; cin>>sumpro; pro*userpro=newpro[sumpro]; for(i=0;i<sumpro;i++) { userpro[i].name=i+1; userpro[i].arriver=0; cout<<"請輸入進程"<<i+1<<"的所需CPU時間(ms)\n"; cin>>userpro[i].runtime; userpro[i].finish=sumtime+userpro[i].runtime; sumtime=userpro[i].finish; //或sumtime+=userpro[i].runtime; userpro[i].roundtime=userpro[i].finish-userpro[i].arriver; userpro[i].arroundtime=userpro[i].roundtime/userpro[i].runtime; } cout<<"******************************先來先服務算法*********************************\n"; cout<<"進程序號到達時間運行時間完成時間周轉時間帶權周轉時間\n"; for(i=0;i<sumpro;i++) { cout<<""<<i<<""<<userpro[i].arriver<<""<<userpro[i].runtime<<"" <<userpro[i].finish<<""<<userpro[i].roundtime<<""<<userpro[i].arroundtime<<"\n"; } cout<<endl; for(i=0;i<sumpro;i++) { averagetime+=userpro[i].roundtime; } averagetime=averagetime/sumpro; cout<<"平均作業(yè)周轉時間="<<averagetime<<"(ms)\n"; averagetime=0; for(i=0;i<sumpro;i++) { averagetime+=userpro[i].arroundtime; } averagetime=averagetime/sumpro; cout<<"平均帶權作業(yè)周轉時間="<<averagetime<<"(ms)\n\n"; return0;}//最短作業(yè)優(yōu)先算法//intF2(){ intsumpro; //進程總數(shù) doublesumtime=0; //累計運行時間 doubleaveragetime=0;//平均作業(yè)周轉時間 inti,j; cout<<"請輸入進程總數(shù)\n"; cin>>sumpro; pro*userpro=newpro[sumpro+1]; for(i=1;i<=sumpro;i++) { userpro[i].name=i; userpro[i].arriver=0; cout<<"請輸入進程"<<i<<"的所需CPU時間(ms)\n"; cin>>userpro[i].runtime; } for(i=2;i<=sumpro;i++) { j=i; userpro[0]=userpro[j]; while(j>1&&userpro[j-1].runtime>userpro[0].runtime) { userpro[j]=userpro[j-1]; j--; } userpro[j]=userpro[0]; } for(i=1;i<=sumpro;i++) { userpro[i].finish=sumtime+userpro[i].runtime; sumtime=userpro[i].finish; //或sumtime+=userpro[i].runtime; userpro[i].roundtime=userpro[i].finish-userpro[i].arriver; userpro[i].arroundtime=userpro[i].roundtime/userpro[i].runtime; } cout<<"***************************最短作業(yè)優(yōu)先算法***********************************\n"; cout<<"進程序號到達時間運行時間完成時間周轉時間帶權周轉時間\n"; for(i=1;i<=sumpro;i++) { cout<<""<<userpro[i].name<<""<<userpro[i].arriver<<""<<userpro[i].runtime<<"" <<userpro[i].finish<<""<<userpro[i].roundtime<<""<<userpro[i].arroundtime<<"\n"; } cout<<endl; for(i=1;i<=sumpro;i++) { averagetime+=userpro[i].roundtime; } averagetime=averagetime/sumpro; cout<<"平均作業(yè)周轉時間="<<averagetime<<"(ms)\n"; averagetime=0; for(i=1;i<=sumpro;i++) { averagetime+=userpro[i].arroundtime; } averagetime=averagetime/sumpro; cout<<"平均帶權作業(yè)周轉時間="<<averagetime<<"(ms)\n\n"; return0;}//////////////////////////////////////////////最短剩余時間優(yōu)先算法/////////////////////////////////////intF3(){ intsumpro; //進程總數(shù) doublesumtime=0; //累計運行時間 doubleaveragetime=0;//平均作業(yè)周轉時間 inti,j=0,k=0; inttime,sum_time=0; cout<<"請輸入進程總數(shù)\n"; cin>>sumpro; pro*userpro=newpro[sumpro+1]; for(i=1;i<=sumpro;i++) { userpro[i].compare=false; userpro[i].name=i; cout<<"請輸入進程"<<i<<"的到達時間(ms)\n"; cin>>userpro[i].arriver; cout<<"請輸入進程"<<i<<"的所需CPU時間(ms)\n"; cin>>userpro[i].runtime; userpro[i].copyruntime=userpro[i].runtime; sum_time+=userpro[i].runtime; } for(time=0;time<=sum_time;time++) { for(i=1;i<=sumpro;i++) { if(userpro[i].arriver<=time) { userpro[i].compare=true; } } for(i=1;i<=sumpro&&userpro[i].compare&&userpro[i].copyruntime>0;i++) { k=i; userpro[0]=userpro[k]; while(k>1&&userpro[k-1].copyruntime>userpro[0].copyruntime) { userpro[k]=userpro[k-1]; k--; } userpro[k]=userpro[0]; } for(i=1;i<=sumpro;i++) //完成時間增加 { if(userpro[i].copyruntime>=0&&userpro[i].copyruntime<=sum_time) userpro[i].finish=time; } if(userpro[1].copyruntime>=0) //最短剩余時間的進程的運行時間減少 { userpro[1].copyruntime--; if(userpro[1].copyruntime<=0&&time!=sum_time) userpro[1].copyruntime=sum_time+102; } } for(i=1;i<=sumpro;i++) { userpro[i].finish+=1; //或sumtime+=userpro[i].runtime; userpro[i].roundtime=userpro[i].finish-userpro[i].arriver; userpro[i].arroundtime=userpro[i].roundtime/userpro[i].runtime; } cout<<"***************************最短剩余時間優(yōu)先算法***********************************\n"; cout<<"進程序號到達時間運行時間完成時間周轉時間帶權周轉時間\n"; for(i=1;i<=sumpro;i++) { cout<<""<<userpro[i].name<<""<<userpro[i].arriver<<""<<userpro[i].runtime<<"" <<userpro[i].finish<<""<<userpro[i].roundtime<<""<<userpro[i].arroundtime<<"\n"; } cout<<endl; for(i=1;i<=sumpro;i++) { averagetime+=userpro[i].roundtime; } averagetime=averagetime/sumpro; cout<<"平均作業(yè)周轉時間="<<averagetime<<"(ms)\n"; averagetime=0; for(i=1;i<=sumpro;i++) { averagetime+=userpro[i].arroundtime; } averagetime=averagetime/sumpro; cout<<"平均帶權作業(yè)周轉時間="<<averagetime<<"(ms)\n\n"; return0;}主程序;
#include<iostream>#include"123.h"usingnamespacestd;intmain(){ intx; cout<<"**********************主菜單**********************"<<endl; cout<<"1先來先服務算法"<<endl <<"2最短作業(yè)優(yōu)先算法"<<endl <<"3最短剩余時間優(yōu)先算法"<<endl <<"4退出程序"<<endl; cout<<"***********************************
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度耕地質量提升工程補充耕地指標采購合同3篇
- 現(xiàn)代家用電器技術發(fā)展趨勢與市場預測
- 物聯(lián)網(wǎng)下的嵌入式軟件從設計到實現(xiàn)的高效之路
- 二零二五年智慧城市規(guī)劃設計股份收購與合作合同3篇
- 2025年度航空航天結構件加工與測試服務合同簽訂指南3篇
- 2025版跨境電商毛坯店面租賃合同范本4篇
- 二零二五版現(xiàn)代風格美縫服務合同3篇
- 二零二五年度商用廚具升級改造項目合同4篇
- 二零二五年度果園土地流轉及綜合利用合同3篇
- 電化教學設備開啟教育信息化新篇章
- 2024公路瀝青路面結構內部狀況三維探地雷達快速檢測規(guī)程
- 2024風力發(fā)電葉片維保作業(yè)技術規(guī)范
- 《思想道德與法治》課程教學大綱
- 2024光儲充一體化系統(tǒng)解決方案
- 處理后事授權委托書
- 食材配送服務方案投標方案(技術方案)
- 足療店營銷策劃方案
- 封條(標準A4打印封條)
- 2024年北京控股集團有限公司招聘筆試參考題庫含答案解析
- 延遲交稿申請英文
- 運動技能學習與控制課件第十章動作技能的指導與示范
評論
0/150
提交評論