《操作系统--作业调度算法学习》

先来先服务(FCFS)

这种算法比较容易理解类似于我们排队买饭一样,先来的排在最前面
,然后打饭阿姨先为他服务。来的早的等待时间就长。具体实现可以用到我们的队列.

queue 
{
    int front;//入队指针
    int rear;//出队指针
    int served[max];//排的队
};
void push()//入队
{
 served[front++];
}
void pop()//出队
{
   served[rear++];
}

短作业调度(SJF)

这种算法从字面中就可以看到,是根据时间长短来确定先做哪一个的。
我们在学校上学的时候 老师会布置很多作业。有抄一篇课文,有写单页纸作文,还有写几道题。我们要开始做作业的时候从里面开始选取时间较短的完成。这就是短作业,比较每个作业需要做完的时间。
但是问题来了,你必须自己给它们排一个时间的顺序。

存在的缺点
1.需要花时间进行时间的评估和排序。
2.对长时间作业非常不利而且没有考虑到作业的紧迫程度。可能短作业要过几天交,而长作业今天就要完成,但是你经过时间的排序就会把它放到最后。这样长作业的时间周期会特别长而且很可能造成损失。
3.人-机器无法实现交互。在作业待续队列中,可能你刚提交的作用,立即就被执行了,但是你想撤销无法实现。

//具体实现方法很多,可采用栈思想之一
stack
{
  int top;
  int served[max];
}
void push()
{
//进栈排序,时间最长的在下面
  sreved[top++];
}
void pop()
{
  sreved[top--];//出栈服务.
}

优先级调度

这种算法可以说是队前两种算法的一种归纳。
先来先服务(FCFS)算法可以看成来的时间作为优先级。
短作业(SJF)可以拿完成时间当作优先级。
而这里的优先级主要是以紧迫程度,去医院看病,就会有病情严重治疗的的顺序。

具体实现,可以结合一定的算法去排个序
sort();
served[max];

高响应比优先调度

这种算法是结合来前两种先来先服务(FCFS)和短作业(SJF)的特性,
用了一个数学公式

我们用Rp表示优先权

                      等待时间+完成时间
               Rp=   —————————————————  
             	          完成时间

所以我们可以利用数学公式的性质。
等待时间于完成时间的差异就会将我们的作业进行一个优先级的排序。
但同时就存在,有有如前两种一样性质的算法,但做了一个折中的处理。

希望对你们有帮助。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值