进程调度C语言实现Word文档下载推荐.docx
- 文档编号:13961487
- 上传时间:2022-10-15
- 格式:DOCX
- 页数:15
- 大小:17.03KB
进程调度C语言实现Word文档下载推荐.docx
《进程调度C语言实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《进程调度C语言实现Word文档下载推荐.docx(15页珍藏版)》请在冰豆网上搜索。
//带权周转时间
}FCFS_time;
structSJF_time{//短作业优先
intflag;
}SJF_time;
structRR_time{//时间片轮转的结点
intflag_time;
//赋值为进程的服务时间,为0则进程完成
}RR_time;
structPri_time{//优先权非抢占式
}Pri_time;
structProcessNode*next;
}ProcessNode,*Linklist;
voidmain()
{
intchoice;
Linklistp,head;
Linklistread_information();
LinklistFCFS_scheduling(Linklisthead);
LinklistSJF_scheduling(Linklisthead);
LinklistRR_scheduling(Linklisthead);
LinklistPri_scheduling(Linklisthead);
head=read_information();
//读入进程的基本信息
do{
p=head->
next;
printf("
\n"
);
printf("
**********进程初始信息输出**********\n"
//输出初始化后的进程基本信息
进程名称"
到达时间"
服务时间"
优先级"
while(p)
{
%c"
p->
name);
%d"
arrive_time);
service_time);
priority);
p=p->
}
************************************\n"
//输出进程的调用选择项
1、FCFS----先到先服务\n"
2、SJF-----短作业优先\n"
3、RR------时间片轮转\n"
4、Pri-----优先权调度\n"
5、退出\n"
请在1—5之间选择:
"
scanf("
%d"
&
choice);
switch(choice)
{
case1:
FCFS_scheduling(head);
break;
case2:
SJF_scheduling(head);
break;
case3:
RR_scheduling(head);
break;
case4:
Pri_scheduling(head);
//case5:
exit();
}
}while(choice!
=5);
}
Linklistread_information()//进程读入函数
inti;
intnum;
//ProcessNode;
Linklistpro;
Linklistp;
Linklisthead;
************进程调度算法************\n"
请输入进程的个数:
"
scanf("
num);
*************初始化信息*************\n"
head=(Linklist)malloc(sizeof(ProcessNode));
//头结点
head->
next=NULL;
p=head;
for(i=1;
i<
=num;
i++)
{
pro=(Linklist)malloc(sizeof(ProcessNode));
//创建进程结点
输入第%d个进程信息:
i);
请输入进程名:
fflush(stdin);
%c"
pro->
到达时间:
服务时间:
优先级↑:
//pro->
next=head->
next=pro;
//逆序建链
p->
p=pro;
//顺序建链
//p++;
pro->
returnhead;
LinklistFCFS_scheduling(Linklisthead)//先到先服务算法函数
Linklistq;
//指向前一进程
while(p)//初始化进程的完成时间、周转时间、带权周转时间,初值均赋为0
FCFS_time.finish_time=0;
FCFS_time.turnaround_time=0;
FCFS_time.weigtharound_time=0;
p=q=head->
FCFS_time.finish_time=p->
arrive_time;
//避免第一个进程到达时间不为0
while(p)
if(p->
arrive_time<
=q->
FCFS_time.finish_time)//下一进程已到达,在等待中
FCFS_time.finish_time=(p->
service_time)+(q->
FCFS_time.finish_time);
//服务时间
FCFS_time.turnaround_time=(p->
FCFS_time.finish_time)-(p->
//周转时间
p->
FCFS_time.weigtharound_time=(float)(p->
FCFS_time.turnaround_time)/(p->
}
else
service_time+p->
q=p;
********************************FCFS********************************\n"
//输出先到先服务调度后的进程信息
完成时间"
周转时间"
带权周转时间"
%d"
FCFS_time.turnaround_time);
%0.2f"
FCFS_time.weigtharound_time);
p=p->
**********************************************************************\n"
LinklistSJF_scheduling(Linklisthead)//短作业优先算法
{
Linklistp,r;
//指向前一进程结点
intnum=0;
//记录进程个数
intadd_flag=0;
//进程完成服务个数
intservice_time_min;
intk;
//首元结点
whi
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 进程 调度 语言 实现