版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
本文格式為Word版,下載可任意編輯——廣工操作系統(tǒng)試驗報告
操作系統(tǒng)試驗報告
學(xué)生學(xué)院計算機(jī)學(xué)院專業(yè)班級2023級計算機(jī)科學(xué)與技術(shù)四班學(xué)號3110006015學(xué)生姓名張法光指導(dǎo)教師何翠紅
2023年1月05日
目錄
試驗一、進(jìn)程調(diào)度4試驗二、作業(yè)調(diào)度8試驗三、動態(tài)分區(qū)分派方式的模擬16試驗四、文件系統(tǒng)24
3
1試驗一進(jìn)程調(diào)度
1、試驗?zāi)康?/p>
編寫并調(diào)試一個模擬的進(jìn)程調(diào)度程序,采用“短進(jìn)程優(yōu)先〞調(diào)度算法對五個進(jìn)程進(jìn)行調(diào)度。以加深對進(jìn)程的概念及進(jìn)程調(diào)度算法的理解.
2、試驗原理
在多道程序系統(tǒng)中,一個作業(yè)被提交后必需經(jīng)過處理機(jī)調(diào)度后,方能獲
得處理機(jī)執(zhí)行。對調(diào)度的處理又都可采用不同的調(diào)度方式和調(diào)度算法。調(diào)度算法是指:根據(jù)系統(tǒng)的資源分派策略所規(guī)定的資源分派算法。
短進(jìn)程優(yōu)先調(diào)度算法是指對短進(jìn)程優(yōu)先調(diào)度的算法,它是從后備隊列中選
擇一個或者若干個進(jìn)程,將處理機(jī)分派給它,使它馬上執(zhí)行并一直執(zhí)行到完成,或發(fā)生某事件而被阻塞放棄處理機(jī)時再重新調(diào)度。
短進(jìn)程優(yōu)先調(diào)度源程序如下:
#include#definen5#definenum5#definemax65535typedefstructpro{
intPRO_ID;//進(jìn)程號intarrive_time;//到達(dá)時間intsum_time;//運(yùn)行總時間intflag;
}Pro;
//整數(shù)排序
intbubble(inttemp[]){
inti,j,tem=0;
for(i=1;itemp[j+1])}
{
tem=temp[j];temp[j]=temp[j+1];temp[j+1]=tem;lastX=0;}
if(lastX==1)break;
}
returntemp[0];
//進(jìn)程排序
Probubble(Prop[]){
inti,j;
Protemp={0};Pros[num];
for(i=0;is[j+1].sum_time){
temp=s[j];s[j]=s[j+1];s[j+1]=temp;lastX=0;}
if(lastX==1)break;
}
5
voidSPF(intp){
if(n>0){
inti,j,k,l,tc=0;
Proseq[n];Protemp_seq[n];
printf(\printf(\計科4班張法光3110006015\\n\
printf(\
printf(\試驗一:短進(jìn)程優(yōu)先調(diào)度算法SPF\\n\
printf(\請依次輸入5個進(jìn)程的進(jìn)程號、到達(dá)時間和執(zhí)行時間\\n\printf(\成員變量用逗號隔開;進(jìn)程間用回車隔開\\n\
printf(\for(i=0;i#include#include
#definegetpch(type)(type*)malloc(sizeof(type))#definenull0intn;
floatT1=0,T2=0;inttimes=0;
structjcb//作業(yè)控制塊{
charname[10];//作業(yè)名
intreachtime;//作業(yè)到達(dá)時間intstarttime;//作業(yè)開始時間
intneedtime;//作業(yè)需要運(yùn)行的時間floatsuper;//作業(yè)的響應(yīng)比intfinishtime;//作業(yè)完成時間floatcycletime;//作業(yè)周轉(zhuǎn)時間
floatcltime;//作業(yè)帶權(quán)周轉(zhuǎn)時間charstate;//作業(yè)狀態(tài)structjcb*next;//結(jié)構(gòu)體指針}*ready=NULL,*p,*q;
typedefstructjcbJCB;
voidinital()//建立作業(yè)控制塊隊列,先將其排成先來先服務(wù)的模式隊列{
inti;
printf(\輸入作業(yè)數(shù):\scanf(\for(i=0;ireachtime=i;
printf(\作業(yè)默認(rèn)到達(dá)時間:%d\printf(\輸入作業(yè)要運(yùn)行的時間:\scanf(\p->state='W';
9
p->next=NULL;
if(ready==NULL)ready=q=p;else{
q->next=p;q=p;}}
}
voidoutput(JCB*q,intj){/*顯示所有作業(yè)的狀況*/JCB*pr=ready;floatf=0.0;
printf(\所有作業(yè)的狀況:\\n\列表顯示所有作業(yè)的狀況
if(j==3){
printf(\作業(yè)名\\t\\t到達(dá)時間\\t所需運(yùn)行間\\t響應(yīng)比\\t\\t作業(yè)狀態(tài)\\n\printf(\while(pr){
if(pr->supername,pr->reachtime,pr->needtime,f,pr->state);elseprintf(\pr->name,pr->reachtime,pr->needtime,pr->super,pr->state);
pr=pr->next;}
}
else{
printf(\作業(yè)名\\t\\t到達(dá)時間\\t所需運(yùn)行間\\t作業(yè)狀態(tài)\\n\
printf(\while(pr){printf(\pr->name,pr->reachtime,pr->needtime,pr->state);pr=pr->next;}}
}
voiddisp(JCB*q,intm)//顯示作業(yè)運(yùn)行后的周轉(zhuǎn)時間及帶權(quán)周轉(zhuǎn)時間等{
if(m==3)//顯示高響應(yīng)比算法調(diào)度作業(yè)后的運(yùn)行狀況{output(q,m);
printf(\作業(yè)%s正在運(yùn)行,估計其運(yùn)行狀況:\\n\
printf(\開始運(yùn)行時刻\\t完成時刻\\t周轉(zhuǎn)時間\\t帶權(quán)周轉(zhuǎn)時間\\t相應(yīng)比\\n\\n\printf(\getch();
}
else//顯示先來先服務(wù),最短作業(yè)優(yōu)先算法調(diào)度后作業(yè)的運(yùn)行狀況{
output(q,m);
printf(\作業(yè)%s正在運(yùn)行,估計其運(yùn)行狀況:\\n\
10
printf(\開始運(yùn)行時刻\\t完成時刻\\t周轉(zhuǎn)時間\\t帶權(quán)周轉(zhuǎn)時間\\n\\n\
printf(\getch();}}
voidrunning(JCB*p,intm)//運(yùn)行作業(yè)
{
if(p==ready)//先將要運(yùn)行的作業(yè)從隊列中分開出來{ready=p->next;p->next=NULL;}else{q=ready;while(q->next!=p)q=q->next;q->next=p->next;}
p->starttime=times;//計算作業(yè)運(yùn)行后的完成時間,周轉(zhuǎn)時間等等p->state='R';
p->finishtime=p->starttime+p->needtime;
p->cycletime=(float)(p->finishtime-p->reachtime);
p->cltime=(float)(p->cycletime/p->needtime);T1+=p->cycletime;T2+=p->cltime;
disp(p,m);//調(diào)用disp()函數(shù),顯示作業(yè)運(yùn)行狀況
times+=p->needtime;p->state='F';
printf(\作業(yè)%s已經(jīng)完成!\\n請輸入任意鍵繼續(xù)\\n\free(p);//釋放運(yùn)行后的作業(yè)
getch();
}
voidsuper()//計算隊列中作業(yè)的高響應(yīng)比{
JCB*padv;
padv=ready;
do{if(padv->state=='W'
}
padv=padv->next;}while(padv!=NULL);
}
voidfinal()//最終打印作業(yè)的平均周轉(zhuǎn)時間,平均帶權(quán)周轉(zhuǎn)時間{
floats,t;
11
t=T1/n;
s=T2/n;getch();
printf(\作業(yè)已經(jīng)全部完成!\
printf(\個作業(yè)的平均周轉(zhuǎn)時間是:%f\
printf(\個作業(yè)的平均帶權(quán)周轉(zhuǎn)時間是%f:\\n\\n\\n\}
voidhrn(intm)//高響應(yīng)比算法{
JCB*min;inti,iden;system(\inital();
for(i=0;istate=='W'iden=0;}elseif(p->super>min->super)min=p;p=p->next;}while(p!=NULL);
running(min,m);//調(diào)用running()函數(shù)}//for
final();//調(diào)用running()函數(shù)}
voidfcfs(intm)//先來先服務(wù)算法{
inti,iden;system(\inital();
for(i=0;istate=='W'if(iden)p=p->next;}while(p!=NULLif(iden)
{
i--;printf(\沒有滿足要求的進(jìn)程,需等待\times++;
12
if(times>100){printf(\時間過長\}else{
running(p,m);//調(diào)用running()函數(shù)}
}
final();//調(diào)用running()函數(shù)}
voidmain()//主函數(shù){
intm;
while(1){
printf(\printf(\計科4班張法光3110006015\\n\printf(\試驗2-作業(yè)調(diào)度系統(tǒng)\\n\printf(\先來先服務(wù)算法\\n\
printf(\響應(yīng)比高者優(yōu)先算法\\n\printf(\退出程序\\n\
printf(\printf(\選擇所要操作:\\n\
scanf(\switch(m){
case1:fcfs(m);
getch();
times=0;main();break;case2:hrn(m);getch();times=0;main();break;case3:exit(0);
default:
printf(\選擇錯誤,重新選擇.\getch();
system(\}
13
}}
5、程序運(yùn)行結(jié)果
5.1先來先服務(wù)算法
14
5.2響應(yīng)比高者優(yōu)先算法
6、結(jié)果分析與試驗小結(jié)
參考了幾個作業(yè)調(diào)度的范例,作業(yè)調(diào)度實踐起來并不難,但需要漸漸調(diào)試。和同學(xué)探討了設(shè)計思路之后就開始做了,雖然有小錯誤,但是經(jīng)過反復(fù)調(diào)試也修正了BUG。
15
printf(\請輸入登錄用戶名:\/*用戶登陸*/scanf(\
for(userid=0;userid>\\n\
printf(\printf(\create新建文件.\printf(\delete刪除文件.\printf(\open開啟文件.\printf(\close關(guān)閉文件.\printf(\read讀出文件.\printf(\write寫進(jìn)文件.\printf(\display顯示用戶列表.\printf(\quit安全退出.\
printf(\printf(\操作命令:createdeleteopenclosereadwritedisplayquit\\n\printf(\請輸入操作命令:\
36
scanf(\getchar();
for(i=0;iDuLNode*p=block_first;while(p){if(p->data.ID==ID){p->data.state=Free;p->data.ID=Free;if(p->prior->data.state==Free)//與前面的空閑塊相連{p->prior->data.size+=p->data.size;p->prior->next=p->next;p->next->prior=p->prior;}if(p->next->data.state==Free)//與后面的空閑塊相連{p->data.size+=p->next->data.size;p->next->next->prior=p;p->next=p->next->next;}break;}p=p->next;}returnOK;}
//顯示主存分派狀況voidshow(){coutnext;while(p){coutdata.ID==Free)coutdata.state==Free)coutnext;}}
//主函數(shù)voidmain(){intch;//算法選擇標(biāo)記cout>ch;Initblock();//開創(chuàng)空間表intchoice;//操作選擇標(biāo)記while(1){
cout>choice;if(choice==1)alloc(ch);//分派內(nèi)存elseif(choice==2)//內(nèi)存回收{(diào)intID;cout>ID;free(ID);}elseif(choice==3)show();//顯示主存elseif(choice==0)break;//退出else//輸入操作有誤{cout5、源程序清單(需附詳細(xì)的解釋)#include#include#include#defineNULL0
#definegetpch(type,num)(type*)malloc(sizeof(type)*num)
structufd{/*其次級:用戶文件目錄UFD*/charfilename[10];/*文件名*/
charprocode[3];/*保護(hù)碼1:讀2:寫3:執(zhí)行*/intlength;/*文件長度*/}*p;
typedefstructufdUFD;
structmdf{/*第一級:主目錄MDF*/charname[10];/*用戶名*/
UFD*directory;/*文件目錄指針*/}maindir[10];/*用戶數(shù)組*/
typedefstructmdfMDF;
structafd{/*文件運(yùn)行目錄*/charfilename[10];/*文件名*/
charprocode[3];/*保護(hù)碼1:讀2:寫3:執(zhí)行*/
intrw;/*讀寫指針初始狀態(tài)讀:0寫:文件長度*/}afd[5];
intusernum,opennum;/*登陸用戶數(shù)量開啟文件數(shù)量*/intfilenum[10];/*所有的用戶目錄下的文件數(shù)目*/charusername[10];/*當(dāng)前登陸系統(tǒng)的用戶名*/char
command[][10]={\/*文件操作命令*/
voidlogin()/*用戶注冊,信息寫入database文件*/{inti,j;
FILE*fp;intloginum;
intcreatnum[10];
printf(\注冊頁面=====\\n\\n\
26
printf(\請輸入注冊的用戶數(shù)量:\scanf(\for(i=0;i=10
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026福建廈門市集美區(qū)英村(兌山)幼兒園非在編教職工招聘1人備考考試題庫附答案解析
- 2026四川廣安市華鎣市委“兩新”工委、華鎣市級行業(yè)(綜合)黨委社會化選聘新興領(lǐng)域黨建工作專員6人備考考試題庫附答案解析
- 安全生產(chǎn)法一崗雙責(zé)制度
- 山東生產(chǎn)追溯措施制度
- 生產(chǎn)設(shè)備設(shè)施清潔制度
- 2026年上半年云南特殊教育職業(yè)學(xué)院招聘人員(6人)備考考試試題附答案解析
- 煉鋼廠全員生產(chǎn)責(zé)任制度
- 2026廣東深圳市龍崗區(qū)婦幼保健院招聘142人(第一批次)備考考試試題附答案解析
- 航空器生產(chǎn)制造規(guī)章制度
- 2026北京大學(xué)口腔醫(yī)學(xué)院(口腔醫(yī)院)招聘4人(第2批)備考考試試題附答案解析
- (完整版)韓國商法
- 《既有工業(yè)區(qū)改造環(huán)境提升技術(shù)導(dǎo)則》
- 湖北省荊州市八縣市2023-2024學(xué)年高二上學(xué)期期末考試物理試卷
- 2024年度初會《經(jīng)濟(jì)法基礎(chǔ)》高頻真題匯編(含答案)
- 課例研究報告
- 五年級上冊道德與法治期末測試卷推薦
- 重點傳染病診斷標(biāo)準(zhǔn)培訓(xùn)診斷標(biāo)準(zhǔn)
- GB/T 3934-2003普通螺紋量規(guī)技術(shù)條件
- 蘭渝鐵路指導(dǎo)性施工組織設(shè)計
- CJJ82-2019-園林綠化工程施工及驗收規(guī)范
- 小學(xué)三年級閱讀練習(xí)題《鴨兒餃子鋪》原文及答案
評論
0/150
提交評論