作业与作业调度

作业

作业(job)是在多道批处理系统中用户提交给系统的一项相对独立的工作。它不仅包括了程序和数据,还应该提供一份作业说明书,系统根据说明书来控制程序运行。在批处理操作系统中,是以作业为基本单位从外存调入内存。

作业控制块(JCB)

多道批处理系统中,每一个作业都有单独的作业控制块,其中保存了系统对作业管理和调度所需的所有信息。
每当一个新作业被提交时,便由“作业注册”程序为新作业创建一个JCB,然后装入后备队列等待调度。

作业调度的主要任务

作业调度的任务是根据JCB中的信息,检查系统资源是否满足作业运行需要的资源需求,并按照一定的算法从外存将作业转移到内存,分配相应的资源。因此作业调度需要解决主要问题:
1. 接纳多少作业: 调度程序应该从后备队列调入多少个作业来使CPU利用率和系统吞吐量最大。系统希望能装入更多的作业来完成更多的任务,但是太多的作业又会造成内存内存不足而影响服务质量。所以作业调度算法需要解决调度数量的问题。
2. 接纳那些作业:作业之间有提交的先后顺序不同,还有紧迫程度的不同。所以调度算法也要能解决作业调度先后顺序的问题。

先来先服务(FCFS)调度算法

先来先服务(First come first serve)是最简单的调度方式。顾名思义就是根据作业提交的顺序依次调度。这种方法优先考虑了在系统中等待时间最长的作业,从后备队列选取队首的几个作业为它们分配内存和资源。
优点:考虑到了作业的等待时间,让等待更久的作业先运行
缺点:没有考虑到作业的执行时长和紧迫性。比如先调度执行时间较长的作业会使后续作业等待更久;调度最先进入的作业而忽略了重要的紧迫的作业。

短作业优先(SJF)调度算法

短作业优先(Short Job First)调度算法考虑到角度是作业的执行时间。它先选取所需运行时间较短的作业为其分配资源。这样做是因为在实际情况中,短作业占大多数,优先执行短作业可以减少大多数作业的等待时间。也就是说牺牲长作业来获取短作业的更快完成。
缺点:(1)作业运行时长难以估计
(2)对长作业非常不利:比如有一个很早就进入后备队列的长作业会因为一直短作业优先导致该作业始终处于等待状态。
(3)无法满足紧迫作业优先

优先级调度算法

优先级算法根据外部给予作业的优先级调度。这样可以保证高紧迫性的作业优先调度。不同于下面的HRRN算法,优先级调度算法的优先级是静态的,是事先外部赋予的优先级,无法在中途改变。

高响应比(HRRN)调度算法

FCFS算法考虑的是等待时间,SJF算法考虑到是执行时间,两者都有各自的优点和缺点,如果将两者结合也就是同时考虑等待时间和执行时间就可以弥补各自的缺点了。这样同时考虑两者的算法就是高响应比(Highest Response Ratio Next)调度算法。
HRRN算法引入了动态优先级的概念,即每个作业的优先级可以改变。也就是说随着作业等待时间增加,优先级会增加。这种优先级可以表示为:
在这里插入图片描述
这里的要求服务时间也就是作业执行所需的时间。所以我们可以得知:两个所需执行时间相同的作业会优先调度等待时间更长的;两个等待时间相同的作业会优先调度所需执行时间更短的。这样也就利用了FCFS和SJF两种算法的原理,共同衡量了作业的优先级。

你可能感兴趣的:(操作系统原理,笔记,操作系统)