-
大小: 338KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-13
- 語言: 其他
- 標(biāo)簽:
資源簡介
隨機(jī)給出一個(gè)進(jìn)程調(diào)度實(shí)例,如:
進(jìn)程 到達(dá)時(shí)間 服務(wù)時(shí)間
A 0 3
B 2 6
C 4 4
D 6 5
E 8 2
模擬進(jìn)程調(diào)度,給出按照算法先來先服務(wù)FCFS、輪轉(zhuǎn)RR(q=1)、最短進(jìn)程優(yōu)先SPN、最短剩余時(shí)間SRT、最高響應(yīng)比優(yōu)先HRRN進(jìn)行調(diào)度各進(jìn)程的完成時(shí)間、周轉(zhuǎn)時(shí)間、響應(yīng)比的值。
實(shí)驗(yàn)報(bào)告(含流程圖及運(yùn)行結(jié)果)&源碼

代碼片段和文件信息
#include
#include
#include
typedef?struct?process_FCFS{
char?name;//進(jìn)程名
float?arrivetime;//到達(dá)時(shí)間
float?servetime;//服務(wù)時(shí)間
float?finishtime;//完成時(shí)間
float?roundtime;//周轉(zhuǎn)時(shí)間
float?daiquantime;//響應(yīng)比
struct?process_FCFS?*link;//結(jié)構(gòu)體指針
}FCFS;?
FCFS?*p*q*head=NULL;
struct?process_FCFS?a[100];
FCFS?inital(struct?process_FCFS?a[]int?n);
void?print(struct?process_FCFS?a[]int?n);
void?Fcfs(struct?process_FCFS?a[]int?n);
struct?process_FCFS?*sortarrivetime(struct?process_FCFS?a[]int?n);
struct?process_FCFS?*sortarrivetime(struct?process_FCFS?a[]int?n)
{
int?ij;
struct?process_FCFS?t;
int?flag;
for(i=1;i {
flag=0;
for(j=0;j {
if(a[j].arrivetime>a[j+1].arrivetime)
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
flag=1;//交換
}
}
if(flag==0)//如果一趟排序中沒發(fā)生任何交換,則排序結(jié)束
break;
}
return?a;
}
void?Fcfs(struct?process_FCFS?a[]int?n)
{
int?i;
a[0].finishtime=a[0].arrivetime+a[0].servetime;
????a[0].roundtime=a[0].finishtime-a[0].arrivetime;
a[0].daiquantime=a[0].roundtime/a[0].servetime;
for(i=1;i {
if(a[i].arrivetime {
a[i].finishtime=a[i-1].finishtime+a[i].servetime;
????a[i].roundtime=a[i].finishtime-a[i].arrivetime;
????a[i].daiquantime=a[i].roundtime/a[i].servetime;
}
else
{
a[i].finishtime=a[i].arrivetime+a[i].servetime;
????????????a[i].roundtime=a[i].finishtime-a[i].arrivetime;
????????a[i].daiquantime=a[i].roundtime/a[i].servetime;
}
}
printf(“先來先服務(wù)\n“);
print(an);
}
void?print(struct?process_FCFS?a[]int?n)
{
int?i;
for(i=0;i {
printf(“進(jìn)程名:%c?“a[i].name);
printf(“到達(dá)時(shí)間:%f?“a[i].arrivetime);
printf(“服務(wù)時(shí)間:%f?“a[i].servetime);
printf(“完成時(shí)間:%f?“a[i].finishtime);
printf(“周轉(zhuǎn)時(shí)間:%f?“a[i].roundtime);
printf(“響應(yīng)比:%f?“a[i].daiquantime);
printf(“\n“);
}
}
//主函數(shù)
int?main()
{
int?ni;
n=10;//進(jìn)程數(shù)?
srand(time(0));
for(i=0;i {
a[i].name=65+i;?
a[i].arrivetime=((float)(rand()%100)/10);
a[i].servetime=((float)(rand()%100)/10+rand()%10);
}
*sortarrivetime(an);
Fcfs(an);
for(;;);
return?0;
}
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件????????5815??2017-11-28?14:22??RR.cpp
?????文件????????2281??2017-11-28?14:21??FCFS?.cpp
?????文件????????4705??2017-11-28?14:24??SPN.cpp
?????文件????????6353??2017-11-28?14:25??SRT.cpp
?????文件????????7113??2017-11-28?14:26??HRRN.cpp
?????文件??????348107??2017-11-28?14:24??實(shí)驗(yàn)4?報(bào)告.docx
?????文件???????53248??2017-12-30?11:05??實(shí)驗(yàn)4?處理器調(diào)度.doc
評論
共有 條評論