linux短进程优先调度算法,短作业优先调度算法

实验内容:

模拟实现动态高优先权优先(若数值越大优先权越高,每运行一个时间单位优先权-n,若数值越小优先权越高,没运行一个时间单位优先权+n),具体如下:

设置进程体:进程名,进程的到达时间,服务时间,初始优先权,进程状态(W——等待,R——运行,F——完成),进程间的链接指针

进程初始化:由用户输入进程名、服务时间、初始优先权进行初始化,同时,初始化进程的状态为W。

显示函数:在进程调度前、调度中和调度后进行显示。

排序函数:对就绪状态的进程按照优先权排序。优先权相同时进入等待队列时间早的进程在前。注意考虑到达时间

调度函数:每次从等待队列队首调度优先权最高的进程执行,状态变化。并在执行一个时间单位后优先权变化,服务时间变化,状态变化。当服务时间为0时,状态变为F。

删除函数:撤销状态为F的进程。

实验要求:

测试数据可以随即输入或从文件中读入。

必须要考虑到进程的到达时间

最终能够计算每一个进程的周转时间。

操作系统实验。C++优先队列实现,周转时间或其它的相加可以自己家,结果都算出来了~~~

/*

短作业优先调度算法实现

*/

#includeusing namespace std;

struct job

{

int id;//作业ID

int StartTime;//开始时间

int ServerTime;//服务时间

int runtime;//运行时间

int finsihTime;//完成时间

} j[100001];

bool operator b.StartTime;

return a.ServerTime>b.ServerTime;

}

bool cmp(job a,job b)

{

return a.StartTimereadQueue;//准备队列

void updateFinishTime(int id,int time)

{

for(int i=0; ; i++)

{

if(j[i].id == id)

{

j[i].finsihTime = time;

break;

}

}

}

int main()

{

int n;

// int time = 0;

printf("输入进程个数:");

scanf("%d",&n);

printf("输入每个进程的id,到达时间,服务时间\n");

for(int i=0; i

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值