- 1、本文档共12页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
作业调度算法课案
PAGE 12
PAGE
XI`AN TECHNOLOGICAL UNIVERSITY
实验报告
实验课程名称 计算机操作系统
专 业: 软 件 工 程
班 级:
姓 名:
学 号:
实验学时:
指导教师:
成 绩:
2016 年 11 月 9 日
西安工业大学实验报告
专业软件工程班级姓名学号
33实验课程计算机操作系统指导教师实验日期2016.11.9同实验者实验项目实验一 作业调度算法实验设备及器材Vs2008
实验目的
进程调度是处理机管理的核心内容。本实验要求用高级语言编写模拟进程调度程序,以便加深理解有关进程控制快、进程队列等概念,并体会和了解优先级算法的具体实施办法。
实验原理
由于在单道批处理系统中,作业一投入运行,它就占有计算机的一切资源直到作业完成为止,因此调度作业时不必考虑它所需要的资源是否得到满足,它所占用的 CPU时限等因素。
1.先来先服务算法:按照作业提交给系统的先后顺序来挑选作业,先提交的先被挑选。
2.最短作业优先算法:是以进入系统的作业所提出的“执行时间”为标准,总是优先选取执行时间最短的作业。
3.优先级作业优先算法:是以进入系统的作业所提出的“优先级”为标准,总是优先选取优先级小的作业。
实验步骤、数据记录及处理
实验步骤:
1. 先定义一个结构体,在主函中先调用input()输入函数,在input()输入函数中,依次按着提示输入数据。三种作业调度算法分别在三个子函数中执行:
分别使用了fcfs(pc,i);short_in(pc,i);psa(pc,i);三个函数分别实现先来先服务算法、短作业优先算法和优先级算法。这里先把段作业优先的思路理一理。
在短作业优先调度算法函数short_in()中,按照短作业优先调度的算法规则,每个作业完成后,在其完成时间前提交的作业中,运行时间最短的作业程序优先计算,在所有的作业都执行执行完后,程序再算出这种算法的平均周转时间和平均带权周转时间,并将所有的作业按其执行的顺序进行排序;
代码实现(c语言):
#includestdio.h
#includestdlib.h
#define MAX_SIZE 100
typedef struct _PCB
{
int pid; //进程号
int serve_time;//服务时间
int com_tim; //到达时间
int pri;//优先级
int finish_time;//完成时间
float zh_tim; //周转时间
float dzhi_time;//带权周转时间
}PCB;
void swap(PCB *p,PCB *s)
{
PCB tmp = *p;
*p = *s ;
*s = tmp;
}
void sort_cm(PCB *p,int len)
{
for(int i = 0;i len-1;i ++)
{
for(int j = 0;j len-1-i;j ++)
{
if(p[j].com_tim p[j+1].com_tim)
{
swap(p[j],p[j+1]);
}
}
}
}
void sort_serv(PCB *p,int start,int end)
{
for(int i = start;i end ;i ++)
{
for(int j = start ;j end;j ++)
{
if(p[j].serve_time p[j+1].serve_time)
{
swap(p[j],p[j+1]);
}
}
}
}
void sort_pri(PCB *p,int start,int end)
{
for(int i = start;i end ;i ++)
{
for(int j = start ;j end;j ++)
{
if(p[j].pri p[j+1].pri)
{
swap(p[j],p[j+1]);
}
}
}
}
void fcfs(PCB *p ,int
文档评论(0)