




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、學 號:課 程 設 計題 目進程調度模擬設計優(yōu)先級法、最高響應比優(yōu)先調度算法學 院計算機科學與技術專 業(yè)計算機科學與技術班 級計算機班姓 名指導教師2012年1月12日目 錄1課程設計目的與功能描述31.1目的描述31.2功能描述32.需求分析42.1基本原理4優(yōu)先級調度算法4最高響應比調度算法42.2基本需求設計53程序設計53.1數(shù)據(jù)結構53.2模塊說明6主要函數(shù)模塊及功能6模塊框圖63.2.4 程序流程圖74.開發(fā)平臺及源程序的主要部分104.1開發(fā)平臺104.2源程序的主要部分105. 程序測試175.1測試用例175.2程運行結果及分析18對測試用例的驗證18對基本錯誤處理20其他功
2、能226. 自我評價與總結256.1自我評價256.2經(jīng)驗與收獲256.3對算法改進的想法27本科生課程設計成績評定表28課程設計任務書學生姓名: 專業(yè)班級:指導教師: 工作單位: 計算機科學與技術學院 題 目: 進程調度模擬設計優(yōu)先級法、最高響應比優(yōu)先調度算法初始條件:1預備內(nèi)容:閱讀操作系統(tǒng)的處理機管理章節(jié)內(nèi)容,對進程調度的功能以及進程調度算法有深入的理解。2實踐準備:掌握一種計算機高級語言的使用。要求完成的主要任務: (包括課程設計工作量及其技術要求,以及說明書撰寫等具體要求)1模擬進程調度,能夠處理以下的情形:能夠選擇不同的調度算法(要求中給出的調度算法); 能夠輸入進程的基本信息,如
3、進程名、優(yōu)先級、到達時間和運行時間等; 根據(jù)選擇的調度算法顯示進程調度隊列; 根據(jù)選擇的調度算法計算平均周轉時間和平均帶權周轉時間。2設計報告內(nèi)容應說明: 課程設計目的與功能; 需求分析,數(shù)據(jù)結構或模塊說明(功能與框圖); 源程序的主要部分; 測試用例,運行結果與運行情況分析; 自我評價與總結:i)你認為你完成的設計哪些地方做得比較好或比較出色;ii)什么地方做得不太好,以后如何改正;iii)從本設計得到的收獲(在編寫,調試,執(zhí)行過程中的經(jīng)驗和教訓);iv)完成本題是否有其他方法(如果有,簡要說明該方法);v)對實驗題的評價和改進意見,請你推薦設計題目。時間安排:設計安排一周:周1、周2:完成
4、程序分析及設計。周2、周3:完成程序調試及測試。周4、周5:驗收、撰寫課程設計報告。(注意事項:嚴禁抄襲,一旦發(fā)現(xiàn),抄與被抄的一律按0分記)指導教師簽名: 年 月 日系主任(或責任教師)簽名: 年 月 日進程調度模擬設計優(yōu)先級法、最高響應比優(yōu)先調度算法1課程設計目的與功能描述1.1目的描述學習完計算機操作系統(tǒng)這門專業(yè)課后,對計算機操作系統(tǒng)的組成和功能有了一定的了解;基于此,在掌握操作系統(tǒng)實現(xiàn)進程調度以及對進程調度算法了解的基礎上,編寫一個程序,來模擬計算機操作系統(tǒng)進程的調度過程,從而加深對計算機操作系統(tǒng)進程調度各算法的在認識和理解;我抽到的題目為:進程調度模擬設計優(yōu)先級法、最高響應比優(yōu)先調度算
5、法。1.2功能描述此次我編寫程序為C+語言模擬進程調度的程序,主要功能有:1 選擇不同的調度算法,主要為選擇優(yōu)先級法、最高響應比優(yōu)先調度算法;2 輸入進程的基本信息,如進程名、優(yōu)先級、到達時間和運行時間;3 根據(jù)選擇的調度算法顯示進程調度隊列;4 根據(jù)選擇的調度算法計算平均周轉時間和平均帶權周轉時間并顯示。5 對基本的輸入錯誤進行處理,如:輸入進程信息時要求進程名不能相同,到達時間、運行時間和優(yōu)先級必須為正等輸入錯誤。2.需求分析2.1基本原理2.1.1優(yōu)先級調度算法優(yōu)先級法可被用作作業(yè)或進程的調度策略。首先,系統(tǒng)或用戶按某種原則為作業(yè)或進程指定一個優(yōu)先級來表示該作業(yè)或進程所享有的調度優(yōu)先權。
6、該算法的核心是確定進程或作業(yè)的優(yōu)先級,此次課程設計采用靜態(tài)優(yōu)先級。作業(yè)調度中的靜態(tài)優(yōu)先級大多按以下原則確定: 1 由用戶自己根據(jù)作業(yè)的緊急程度輸入一個適當?shù)膬?yōu)先級。為防止各用戶都將自己的作業(yè)冠以高優(yōu)先級,系統(tǒng)應對高優(yōu)先級用戶收取較高的費用。 2 由系統(tǒng)或操作員根據(jù)作業(yè)類型指定優(yōu)先級。作業(yè)類型一般由用戶約定或由操作員指定??蓪⒆鳂I(yè)分為: IO繁忙的作業(yè)、CPU繁忙的作業(yè)、IO與CPU均衡的作業(yè)、一般作業(yè)等,系統(tǒng)或操作員可以給每類作業(yè)指定不同的優(yōu)先級。 3 系統(tǒng)根據(jù)作業(yè)要求資源情況確定優(yōu)先級。例如根據(jù)估計所需處理機時間、內(nèi)存量大小、IO設備類型及數(shù)量等,確定作業(yè)的優(yōu)先級。 進程的靜態(tài)優(yōu)先級確定原則
7、可以是: Ø 按進程的類型給予不同的優(yōu)先級。例如,在有些系統(tǒng)中,進程被劃分為系統(tǒng)進程和用戶進程。系統(tǒng)進程享有比用戶進程高的優(yōu)先級。對于用戶進程來說,則可以分為: IO繁忙的進程、CPU繁忙的進程、IO與CPU均衡的進程、其他進程。對系統(tǒng)進程,也可以根據(jù)其所要完成的功能劃分為不同的類型,例如,調度進程、IO進程、中斷處理進程、存儲管理進程等。Ø 將作業(yè)的靜態(tài)優(yōu)先級作為它所屬進程的優(yōu)先級。2.2.2最高響應比調度算法最高響應比優(yōu)先法(HRN)是對FCFS方式和SJF 方式的一種綜合平衡。HRN調度策略同時考慮每個作業(yè)的等待時間長短和估計需要的執(zhí)行時間長短,從中選出響應比最高的作
8、業(yè)投入執(zhí)行。 響應比R定義: R=(W+T)/T=1+W/T其中T為該作業(yè)估計需要的執(zhí)行時間,W為作業(yè)在后備狀態(tài)隊列中的等待時間。 每當要進行作業(yè)調度時,系統(tǒng)計算每個作業(yè)的響應比,選擇其中R最大者投入執(zhí)行。這樣,即使是長作業(yè),隨著它等待時間的增加,W/T也就隨著增加,也就有機會獲得調度執(zhí)行。2.2基本需求設計程序實現(xiàn)模擬進程調度的優(yōu)先級調度算法和最高響應比調度算法;基本需求設計如下:進程信息的輸入、輸出采用命令行界面;程序執(zhí)行過程如下:首先 輸入進程信息,可連續(xù)添加;其次 選擇調度算法:優(yōu)先級和最高響應比調度算法;然后 根據(jù)選擇的調度算法,執(zhí)行相關函數(shù),顯示進程調度序列,輸出總進程周轉時間、總
9、帶權周轉時間、平均周轉時間、平均帶權周轉時間;最后 可再次選擇調度算法、重新創(chuàng)建進程鏈、銷毀進程鏈,如果選擇銷毀進程隊列,則退出程序。3程序設計3.1數(shù)據(jù)結構此次課程設計的存儲結構采用鏈表的數(shù)據(jù)結構,用鏈表的各個接點保存進程的相關信息,可實現(xiàn)對進程鏈的排序、刪除、比較查找等。存儲結構如下:struct ProcessProcess *pNext; string name; /進程名double readytime; /進程提交時間double runtime; /運行時間double priority;/進程的優(yōu)先級;3.2模塊說明3.2.1主要函數(shù)模塊及功能主要函數(shù)模塊及功能如下:Proce
10、ss * Add( Process * pHead)功能:主要完成要求用戶輸入進程的相關信息:進程名、進程提交時間、進程運行時間、進程優(yōu)先級;按輸入的提交時間的先后順序組織進程鏈,同時對用戶的一些簡單的錯誤輸入進行處理。Process * Copy(Process * pHead)功能:實現(xiàn)對用戶創(chuàng)建的進程鏈的深復制,由于要進行多次的進程調度,而每次的調度均會刪除進程鏈中的各個接點,直至鏈表為空,因此要將原進程鏈保存,每次只是對復制鏈進行操作。Process* Destroy(Process *pHead)功能:實現(xiàn)對進程各個接點的銷毀回收。void Hrn(Process*pHead,int
11、 n)功能:最高響應比調度算法執(zhí)行函數(shù),采用最高響應比的調度算法,實現(xiàn)對進程鏈的執(zhí)行,并輸出周轉時間、帶權周轉時間、平均周轉時間、平均帶權周轉時間。void Highpriority(Process*pHead,int n)功能:優(yōu)先級調度算法執(zhí)行函數(shù),采用高優(yōu)先級調度算法,實現(xiàn)對進程鏈的執(zhí)行,并輸出周轉時間、帶權周轉時間、平均周轉時間、平均帶權周轉時間。int main()功能:程序的入口,提供人機交互函數(shù),提示用戶創(chuàng)建進程序列,選擇調度算法。3.2.2模塊框圖主函數(shù)模塊銷毀進程鏈模塊最高響應比調度模塊優(yōu)先級調度模塊輸入進程模塊圖 3 - 13.2.4 程序流程圖本次程序流程圖如下其他輸入Y
12、N cpHead->pnext31優(yōu)先級調度算法24選擇操作:優(yōu)先級1、最高響應比2、重新創(chuàng)建進程鏈3、銷毀進程鏈4開始選擇 1、2、3、4最高響應比優(yōu)先算法重新創(chuàng)建進程鏈銷毀進程鏈創(chuàng)建進程鏈繼續(xù)?Y/N結束退出圖 3 - 2優(yōu)先級調度算法流程圖:否是否是否是開始復制進程鏈取cpHeadtime =頭接點提交時間從所有提交時間不大于time中選取一個優(yōu)先級最大進程flagtime<flag->readytime ?cpHead是否為空?time = flag->readytime 輸出flag執(zhí)行信息刪除flagFlag = c pHead ?輸出周轉時間和帶權周轉時間
13、完畢返回cpHead = cpHead->pnext圖 3 - 3最高響應比調度算法流程圖:否是否是否是開始復制進程鏈取cpHeadtime =頭接點提交時間從提交時間不大于time進程中選取一個響應比最大進程flagtime<flag->readytime ?cpHead是否為空?time = flag->readytime 輸出flag執(zhí)行信息刪除flagFlag = c pHead ?輸出周轉時間和帶權周轉時間完畢返回cpHead = cpHead->pnext圖 3 - 44.開發(fā)平臺及源程序的主要部分4.1開發(fā)平臺開發(fā)環(huán)境:Windows7平臺開發(fā)平臺:
14、VC+6.04.2源程序的主要部分輸入進程信息源程序:Process * Add( Process * pHead)int mksure=1,i=1; /用來判斷是否繼續(xù)輸入的標志cout<<"*<請輸入進程隊列!>*n"while(mksure=1)Process *p,*q;p=new Process;cout<<"請輸入第 "<<i<<" 個進程的信息:"<<endl;cout<<" 進程名: "cin>>p-&g
15、t;name;do cout<<"提交時間: "cin>>p->readytime;if(p->readytime<0)cout<<"輸入時間有誤,重新輸入!"while(p->readytime<0);do cout<<"運行時間: "cin>>p->runtime;if(p->runtime<0)cout<<"輸入時間有誤,重新輸入!"while(p->runtime<0);do
16、cout<<" 優(yōu)先級: "cin>>p->priority;if(p->priority<0)cout<<"輸入優(yōu)先級有誤,重新輸入!"while(p->priority<0);p->pNext=NULL;if(pHead = NULL) /假如鏈表為空,加到鏈表頭pHead=p; else /其他情況q=pHead;while(q)if(p->name = q->name) cout<<"你輸入的進程名字與已創(chuàng)建進程重名,請重新輸入!"
17、<<endl;break;elseq=q->pNext;if(q)continue;i- elseq=pHead;while( q ) if(q->pNext!=NULL) && (p->readytime >= q->pNext->readytime) /當q節(jié)點的下一結點不為空,或提交時間小于要添加節(jié)點的提交時間q=q->pNext;elsebreak; /如果要加入進程提交時間早于頭結點,將該節(jié)點作為頭結點if(q = pHead && q->readytime > p->readyt
18、ime)pHead=p;p->pNext=q; /如果加入的進程提交時間早于q節(jié)點進程,則將其插入q之前else p->pNext=q->pNext;q->pNext=p; cout<<"繼續(xù)添加? 是 - 1,否 - 0 n"cout<<"你的選擇:"cin>>mksure;if(mksure=1) i+;cout<<"-n" cout<<"*<進程隊列創(chuàng)建完畢!>*n"return pHead;優(yōu)先級調度算法源程序:
19、void Highpriority(Process*pHead,int n)Process *p,*cpHead,*p1;Process *flag=NULL;Process *q=NULL;double time=0,j=0,runTime=0,drunTime=0;int xuhao=0;string pnameMAX_NUM;for(int ss=0;ss<MAX_NUM;ss+)pnamess=""cpHead=Copy(pHead);if(cpHead=NULL)return ;cout<<"*<優(yōu)先級調度算法,進程調度結果如下:
20、>*n"cout<<" 順序 進程名 優(yōu)先級 開始時間 結束時間 周轉時間 帶權周轉時間n"p=cpHead;while(cpHead)q=cpHead;if(time < p->readytime) /如果進程提交時間早于要比較的進程,則先執(zhí)行time=p->readytime; flag=cpHead;while( q && q->readytime <= time) if(q->priority > flag->priority) /比較進程的優(yōu)先級flag=q;q=q->
21、;pNext; if(time < flag->readytime)/如果上一次結束時間比當前選中要執(zhí)行進程的結束時間小time=flag->readytime; /則當前進程開始時間為提交時間cout<<setw(4)<<xuhao+1;cout<<setw(8)<<flag->name;cout<<setw(8)<<flag->priority;cout<<setw(8)<<time;cout<<setw(10)<<(time + flag-
22、>runtime);cout<<setw(10)<<(time - flag->readytime + flag->runtime);cout<<setw(11)<<(double)(time-flag->readytime + flag->runtime)/flag->runtime)<<endl;j=(time - flag->readytime + flag->runtime); /當前執(zhí)行進程的周轉時間runTime+=j; /記錄周轉時間time += flag->run
23、time;drunTime=drunTime+j/flag->runtime; /帶權周轉時間pnamexuhao=flag->name;xuhao+; /將執(zhí)行過的進程從鏈表中刪除if(flag=cpHead) /最先開始執(zhí)行的進程就在鏈表頭cpHead=cpHead->pNext;else /最先開始執(zhí)行的進程在鏈表中p1=cpHead;while(p1->pNext!=flag)p1=p1->pNext;p1->pNext=flag->pNext;delete flag; /刪除這個進程所占的節(jié)點cout<<"進程執(zhí)行順序為
24、:"for(int ss=0;ss<n;ss+)cout<<pnamess;if(pnamess+1 !="")cout<<" -> "cout<<endl;cout<<" 總周轉時間為:"<<runTime<<endl;cout<<" 總帶權周轉時間為:"<<drunTime<<endl;cout<<" 平均周轉時間為:"<<runTime/
25、n<<endl; cout<<"平均帶權周轉時間為:"<<drunTime/n<<endl;cout<<"*<進程執(zhí)行結束!>*n"最高響應比調度算法源程序:void Hrn(Process*pHead,int n)Process *p,*cpHead,*p1;Process *flag=NULL;Process *q=NULL; double time=0,j=0,runTime=0, drunTime=0;int xuhao=0;string pnameMAX_NUM;for(i
26、nt ss=0;ss<MAX_NUM;ss+)pnamess=""cpHead=Copy(pHead);if(cpHead=NULL)return ;cout<<"*<最高響應比優(yōu)先算法,進程調度結果如下:>*n"cout<<" 順序 進程名 優(yōu)先級 開始時間 結束時間 周轉時間 帶權周轉時間n"p=cpHead;while(cpHead)q=cpHead;if(time < p->readytime) /如果該進程提交時間早于其它進程,則先執(zhí)行該進程time=p->read
27、ytime;flag=cpHead; /用于暫存將要執(zhí)行的進程/計算當前鏈表中進程的響應比while(q && q->readytime <= time)if(time - q->readytime)/(q->runtime) > (time - flag->readytime)/(flag->runtime)flag=q;q=q->pNext;if(time < flag->readytime)/如果上一次結束時間比當前選中要執(zhí)行進程的結束時間小time=flag->readytime; /則當前進程開始時間為
28、提交時間 cout<<setw(4)<<xuhao+1;cout<<setw(8)<<flag->name;cout<<setw(8)<<flag->priority;cout<<setw(8)<<time;cout<<setw(10)<<(time + flag->runtime);cout<<setw(10)<<(time - flag->readytime + flag->runtime);cout<<&
29、quot; "<<setw(11)<<(double)(time-flag->readytime + flag->runtime)/flag->runtime)<<endl; j=(time-flag->readytime+flag->runtime); /當前執(zhí)行進程的周轉時間runTime +=j; /記錄周轉時間time+=flag->runtime;drunTime+=j/flag->runtime; /帶權周轉時間pnamexuhao=flag->name;xuhao+;/將執(zhí)行過的進程從鏈
30、表中刪除if(flag=cpHead) /在鏈表頭cpHead=cpHead->pNext; else /在鏈表中p1=cpHead;while(p1->pNext!=flag)p1=p1->pNext;p1->pNext=flag->pNext;delete flag; /刪除這個進程所占的節(jié)點cout<<"進程執(zhí)行順序為:"for(int ss=0;ss<n;ss+)out<<pnamess;if(pnamess+1 !="")cout<<" -> "c
31、out<<endl;cout<<" 總周轉時間為:"<<runTime<<endl;cout<<" 總帶權周轉時間為:"<<drunTime<<endl;cout<<" 平均周轉時間為:"<<runTime/n<<endl; cout<<"平均帶權周轉時間為:"<<drunTime/n<<endl;cout<<"*<進程執(zhí)行結束!&g
32、t;*n"主函數(shù)源程序如下:int main() cout<<"tt*"<<endl;cout<<"tt* 歡迎使用模擬進程調度程序! *"<<endl;cout<<"tt* 當前沒有可執(zhí)行進程,進程請先創(chuàng)建進程! *"<<endl;cout<<"tt* 輸入的提交時間、運行時間、優(yōu)先級均需大于零! *"<<endl;cout<<"tt*"<<endl;Process
33、 * pHead = NULL; pHead=Add(pHead);Output(pHead);char again;do cout<<"*n"/輸入選擇的算法int decision;cout<<"tt*"<<endl;cout<<"tt* 請選擇進程調度算法! *"<<endl;cout<<"tt* 1.優(yōu)先級調度算法! *"<<endl;cout<<"tt* 2.最高響應比優(yōu)先算法! *"<
34、;<endl;cout<<"tt* 3.重新創(chuàng)建進程鏈! *"<<endl;cout<<"tt* 4.銷毀進程隊列,退出程序! *"<<endl;cout<<"tt*"<<endl;do cout<<"你的選擇:"cin>>decision;if(decision=1) / 優(yōu)先級調度算法 Highpriority(pHead,count);if(decision =2)/最高響應比算法Hrn(pHead,coun
35、t);if(decision =3)pHead=NULL;pHead=Add(pHead);Output(pHead);if(decision =4)pHead=Destroy(pHead);break;if(decision !=1 && decision!=2 && decision!=3 && decision!=4)cout<<"輸入有誤,請重新輸入!n"while(decision !=1 && decision!=2 && decision!=3);if(decision
36、 = 4)break;cout<<"繼續(xù)選擇調度算法?是(Y)否(N)n"cout<<"你的選擇:"cin>>again;while(again='Y' | again='y' | (char)again=1);system("pause"); return 0;復制進程鏈函數(shù)源程序如下:Process * Copy(Process * pHead)Process * p,*cpHead,*q,*temp;cpHead=NULL;q=pHead;p=new Proce
37、ss;int i=1;while(q)p->pNext=NULL;p->name=q->name;p->priority=q->priority;p->readytime=q->readytime;p->runtime=q->runtime;temp=p;if(cpHead=NULL)cpHead=p;q=q->pNext;if(q)p=new Process;if(i=1)cpHead->pNext=p;temp->pNext=p;i+;return cpHead;銷毀進程鏈函數(shù)源代碼如下:Process* Destro
38、y(Process *pHead)Process *dp,*dq;dp=pHead->pNext;pHead=NULL;while(dp)dq=dp;dp=dp->pNext;delete dq;cout<<"進程隊列已經(jīng)銷毀!不能執(zhí)行再次進程調度了!n"return pHead;輸出進程鏈信息函數(shù)源代碼如下:void Output(Process * pHead)Process *s=pHead;cout<<"*生成的進程鏈表如下:*n"cout<<"t進程名 提交時間 運行時間 優(yōu)先級&quo
39、t;<<endl;while(s)cout<<"t"<<setw(4)<<s->name<<setw(8)<<s->readytime<<setw(10)<<s->runtime<<setw(9)<<s->priority<<"n"s=s->pNext; count+;5. 程序測試5.1測試用例測試用例的輸入進程信息為:進程名提交時間運行時間優(yōu)先級PP11.021PP22.012PP32.52
40、3表 5 1采用優(yōu)先級調度算法1.0時刻 只有進程PP1提交到達系統(tǒng),故執(zhí)行進程PP13.0時刻 進程PP2、PP3均已到達系統(tǒng),但由于PP3優(yōu)先級高于PP2優(yōu)先級,故執(zhí)行進程PP35.0時刻 進程PP3執(zhí)行完畢,執(zhí)行進程PP26.0時刻 進程PP2執(zhí)行完畢進程調度順序為:PP1 à PP3 àPP2執(zhí)行信息如表:進程名提交時間運行時間優(yōu)先級開始時間結束時間周轉時間帶權周轉時間PP11.0211.03.02.01.0PP22.0125.06.04.04.0PP32.5233.05.02.51.25表 5 2平均周轉時間:8.5/3=2.833平均帶權周轉時間:6.25/3=
41、2.083采用最高響應比優(yōu)先調度算法1.0時刻 只有進程PP1提交到達系統(tǒng),故執(zhí)行進程PP13.0時刻 進程PP2、PP3均已到達系統(tǒng),響應比:RPP2=1+1.0/1=2;RPP3=1+0.5/2=1.25,故執(zhí)行進程PP24.0時刻 進程PP2執(zhí)行完畢,執(zhí)行進程PP36.0時刻 進程PP3執(zhí)行完畢進程調度順序為:PP1 à PP2 àPP3執(zhí)行信息如表:進程名提交時間運行時間優(yōu)先級開始時間結束時間周轉時間帶權周轉時間PP11.0211.03.02.01.0PP22.0123.04.02.02.0PP32.5234.06.03.51.75表 5 3平均周轉時間:7.5/3
42、=2.5平均帶權周轉時間:4.75/3=1.5835.2程運行結果及分析5.2.1對測試用例的驗證輸入用例中的進程信息,如圖:圖 5 1選擇優(yōu)先級調度算法,執(zhí)行結果如圖:圖 5 2分析 從程序運行結果來看,結果與5.1理論分析一直,說明程序運行結果正確!采用最高響應比優(yōu)先的調度算法,執(zhí)行結果如圖:圖 5 3分析 從程序運行結果來看,結果與5.1理論分析一直,說明程序運行結果正確!5.2.2對基本錯誤處理本程序考慮的基本輸入錯誤信息有:進程提交時間、運行時間、優(yōu)先級小于零,選擇算法操作時未按要求輸入;其他異常情況為:進程同名,由于每個進程有一個唯一的進程控制塊(PCB),要求進程控制號、進程名字
43、不一樣,因此模擬時應考慮到輸入進程同名的情況。Ø 當輸入進程的提交時間、運行時間、優(yōu)先級小于零時,程序提示輸入錯誤,要求用戶重新輸入!程序執(zhí)行結果如圖:圖 5 4圖 5 5圖 5 6Ø 當輸入進程與已輸入的進程同名時,程序進行檢測,并提示用戶重新輸入該進程信息,執(zhí)行結果如圖:圖 5 7Ø 當進程鏈創(chuàng)建完畢后,選擇相關操作,當未按要求輸入時,比如輸入非1、2、3的數(shù)字,提示輸入錯誤,并要求用戶重新輸入,執(zhí)行結果如下:圖 5 85.2.3其他功能本程序還可以重新創(chuàng)建進程鏈表,作為下一次調度算法的檢測,執(zhí)行如下圖:圖 5 9圖 5 10圖 5 116.自我評價與總結6.
44、1自我評價計算機操作系統(tǒng)這門課程是計算機專業(yè)一門基礎性學科,重要性可見一斑,學好這門課程對以后人生的發(fā)展具有深遠的影響。而課程設計便是對學習效果的檢驗。數(shù)課程設計不僅可以鍛煉我們獨立思考問題、解決問題的能力,而且可以培養(yǎng)我們的整體性思維的能力;通過課程設計,使我加深了對操作系統(tǒng)進程調度各個調度算法的再認識,特別是優(yōu)先級調度算法和最高響應比優(yōu)先調度算法;鞏固了很多操作系統(tǒng)和C+編程基礎性知識,比如:存儲結構、信息查找比較、算法設計等。出色的地方本次課程設計,剛開始看到課程設計題目時,感覺有些難度,通過對優(yōu)先級和最高響應比優(yōu)先調度算法的再次復習,最終確定了其設計的算法。程序實現(xiàn)了用優(yōu)先級和最高響應
45、比優(yōu)先調度算法模擬進程調度,而且結果與理論分析完全一致,說明程序正確,此外對于選中的滿足調度算法的進程,如果提交時間比上一次進程執(zhí)行完畢時的時間還大,則該進程的開始時間為自己的提交時間,而非上一次進程執(zhí)行完成時的結束時間;同時,考慮到了用戶的輸入錯誤,對進程提交時間、運行時間、優(yōu)先級小于零、選擇操作未按要求等輸入錯誤進行了處理;對輸入進程同名的情況進行排除并要求用戶重新輸入。不好的地方程序總雖然考慮了一些用戶輸入錯誤,并對其進行處理,但是這種處理是不完善的,只能對如:進程提交時間、運行時間、優(yōu)先級小于零、選擇操作未按要求等輸入錯誤進行了處理,而對進程提交時間、運行時間、優(yōu)先級、選擇操作不為數(shù)值
46、等情況進行了處理,這樣異常處理是片面的不完善的,對于此種情況,可以用JAVA語言來編寫這次程序,利用其強大的系統(tǒng)異常和處理機制可以很好的解決上述問題;兩種調度算法輸出各進程執(zhí)行情況時,直接將輸出語句放在調度算法之中,這樣由于兩種輸出基本上一樣,增加了程序的存儲開銷,可以將輸出單獨作為一個函數(shù)進行輸出處理。6.2經(jīng)驗與收獲這次課程設計,我明白了對于編寫程序,解題的思路尤為重要。在編寫程序之前,如果沒有比較清晰的思路,根本不可能編出好的程序。就算馬馬虎虎的編出來,程序的邏輯性、健壯性、完善性、合理性也不會很強。在編程之前,我們應反復研究題目要求,對題目涉及的情況進行比較充分的分析,以便編寫出更加符合題意的程序;其次要充分考慮各種臨界情況,對一些錯誤的輸入進行處理。因此在我們編程序之前一定要做好充分的準備,首先要理清自己的思路,然后再將思路分劃成幾個模塊,逐塊的寫好算法,最后再將所有的模塊有機的聯(lián)系起來,組成一個完整的程序。在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 山東2025年山東農(nóng)業(yè)大學公開招聘3人筆試歷年參考題庫附帶答案詳解
- 貴州經(jīng)貿(mào)職業(yè)技術學院《食品安全類綜合技能訓練》2023-2024學年第二學期期末試卷
- 武漢科技大學《大學美育》2023-2024學年第二學期期末試卷
- 遼寧城市建設職業(yè)技術學院《政府審計》2023-2024學年第二學期期末試卷
- 深圳職業(yè)技術大學《新媒體運營與分析》2023-2024學年第二學期期末試卷
- 福建船政交通職業(yè)學院《數(shù)字音頻視頻技術》2023-2024學年第二學期期末試卷
- 北京舞蹈學院《系統(tǒng)工程原理》2023-2024學年第二學期期末試卷
- 鶴壁職業(yè)技術學院《空間解析幾何》2023-2024學年第二學期期末試卷
- 鄭州職業(yè)技術學院《打印電子器件與材料》2023-2024學年第二學期期末試卷
- 徐州生物工程職業(yè)技術學院《國際結算》2023-2024學年第二學期期末試卷
- 2024年華東師大版學業(yè)水平信息技術模擬試卷(含答案解析)
- 派遣工的考勤管理制度
- GB/T 44353.1-2024動物源醫(yī)療器械第1部分:風險管理應用
- 中醫(yī)培訓課件:火龍罐的中醫(yī)技術
- 水運工程工程量清單計價規(guī)范
- 廣漢市2024年小學六年級第二學期小升初數(shù)學試卷含解析
- 燈具安裝服務合同模板
- 創(chuàng)新思維訓練智慧樹知到期末考試答案章節(jié)答案2024年江西理工大學
- CJT 273-2012 聚丙烯靜音排水管材及管件
- AQ 1044-2007 礦井密閉防滅火技術規(guī)范(正式版)
- 光伏項目施工總進度計劃表(含三級)
評論
0/150
提交評論