操作系统---处理器调度

一、作业与进程的区别

一个进程是一个程序对某个数据集的执行过程,是分配资源的基本单位。作业是用户需要计算机完成的某项任务,是要求计算机所做工作的集合。一个作业的完成要经过作业提交、作业收容、作业执行和作业完成4个阶段。而进程是对已提交完毕的程序所执行过程的描述,是资源分配的基本单位。其主要区别如下。

   (1)作业是用户向计算机提交任务的任务实体。在用户向计算机提交作业后,系统将它放入外存中的作业等待队列中等待执行。而进程则是完成用户任务的执行实体,是向系统申请分配资源的基本单位。任一进程,只要它被创建,总有相应的部分存在于内存中。

   (2)一个作业可由多个进程组成,且必须至少由一个进程组成,反过来则不成立。

   (3)作业的概念主要用在批处理系统中,像UNIX这样的分时系统中就没有作业的概念。而进程的概念则用在几乎所有的多道程序系统中。

二、处理器调度

1、三个调度级别

高级调度又称作业调度,实现作业从外存调入内存运行,选择哪个作业所以需要调度算法。它和下面的中级调度互为逆过程。作业调度的过程:根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要的资源。然后再将新创建的进程插入就绪队列,准备执行,再后面就是对就绪队列中的进程进行进程调度了。

中级调度又称交换调度,引入中级调度的主要目的是为了提高内存的利用率和系统吞吐量,使得暂时不运行的进程从内存对换到外存上。

低级调度又称进程调度,作业调入内存,资源分配单位为进程,调度单位为线程,如果没有线程,调度单位就是进程,选择哪个进程占用cpu执行,需要调度算法。进程调度是操作系统中最基本的一种调度,其调度策略的优劣直接影响整个系统的性能
作业调度依靠作业控制块实现
交换调度的实现是由操作系统自动完成,不需要算法。
进程调度依靠进程控制块(PCB)实现

其中无论是作业调度还是进程调度,都有三个相同和基础的调度算法,以进程调度为例来说明三个算法,如下。
中级调度只需要把内存中的不需要运行的进程进行换入换出即可,不需要算法支持。

2、评价进程调度算法的优劣

评价进程调度算法的优劣,通常看平均周转时间和带权周转时间

周转时间 = 作业完成时间 - 作业到达时间
平均周转时间 = (作业完成时间 - 作业到达时间)/ 作业数量
带权周转时间 = 作业周转时间 / 作业服务时间

另一种计算公式:

响应比=1+T等待/T运行 	  T周转=T等待+T运行    	T带权周转=T周转/T运行
#平均就是除以作业数量

3、先来先服务调度算法

先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到完成或发生某事件而阻塞后才放弃处理机。

顾名思义,先来先服务算法就是先来的作业先调度运行,后来的后运行。和队列的先进先出
的意思是一样的。不过先来先服务算法很少单独使用,都是和其他算法一起结合使用。

4、短作业优先调度算法

短作业(进程)优先调度算法SJ§F,是指对短作业或短进程优先调度的算法。它们可以分别用于作业调度和进程调度。短作业优先(SJF)的调度算法是从后备队列中选择一个或若干个估计运行时间最短的作业,将它们调入内存运行。而短进程优先(SPF)调度算法则是从就绪队列中选出一个估计运行时间最短的进程,将处理机分配给它,使它立即执行并一直执行到完成,或发生某事件而被阻塞放弃处理机时再重新调度。

这里有四个需要注意的地方:

短作业调度算法的核心在于,运行时间越短的作业就先执行。
	1、首先,第一到达的作业一定先运行,因为经常题目中是给
	出所有的作业,很多初学者以为直接从中选取短作业。
	2、要注意,在后续比较作业长短的时候,要看作业是否到达,就是上图的到达时间,没有到达的作业是不能比较的。
	3、短进程优先(SPF)分为抢占和不抢占。如果抢占,那就是当一个短作业到达时,如果这个短作业比当前作业剩余作业量小,就停止当前作业的处理,处理这个更短的作业。
	4、短作业优先(SJF)无抢占这个概念,不可能这里把作业调入主存,看到短作业来了,就停止调入主存涩。

5、响应比高者优先调度算法

(1)在作业调度中

在批处理系统中,短作业优先算法是一种比较好的算法,其主要的不足之处是长作业的运行得不到保证。如果我们能为每个作业引入前面所述的动态优先权,并使作业的优先级随着等待时间的增加而以速率a 提高,则长作业在等待一定的时间后,必然有机会分配到处理机。该优先权的变化规律可描述为:
由于等待时间与运行时间之和就是系统对该作业的响应时间,故该优先权又相当于响应比RP。据此,又可表示为:

响应比=1+T等待/T运行

由上式可以看出:

(1) 如果作业的等待时间相同,则要求运行的时间愈短,其优先权愈高,因而该算法有利于短作业。

(2) 当要求服务的时间相同时,作业的优先权决定于其等待时间,等待时间愈长,其优先权愈高,因而它实现的是先来先服务。

(3) 对于长作业,作业的优先级可以随等待时间的增加而提高,当其等待时间足够长时,其优先级便可升到很高,从而也可被调进内存运行。简言之,该算法既照顾了短作业,又考虑了作业到达的先后次序,不会使长作业长期调不进内存运行。因此,该算法实现了一种较好的折衷。当然,在利用该算法时,每要进行调度之前,都须先做响应比的计算,这会增加系统开销。

(2)在进程调度中
响应比=1+T等待/T运行

T等待:进程在就绪队列的等待时间
T运行:进程预计的运行时间(服务时间、处理时间)

6、综合实例

在这里插入图片描述在这里插入图片描述
答案:
在这里插入图片描述注意:大家学了这么多,可能会有疑问,这又是作业的,又是进程的,这个题到底是在评价作业调度算法的优劣还是进程调度算法的优劣。

答:评价的是进程,因为第二张表中是SPF不是SJF,那为什么又在说什么作业到达时间,服务时间呢?因为我们调入内存的是一个个作业,作业里面有多个进程,用不同的调度算法对这些进程进行调度,作业的完成时间也就有差别,就可以识别算法的优劣,所以我们需要这些作业相关的时间。

三、交换技术和中级调度的区别

我们刚才知道了,中级调度是实现进程在内存和外存之间的换入换出。
首先明白一下,交换技术、虚存技术、页面置换算法的关系:

交换技术和虚存技术都属于虚拟存储技术这个大类,只不过粒度不同,交换技术是以进程为单位进行换入换出,虚存技术是以页或段为单位换入换出,页面置换算法是虚存技术用来选择哪个页面换入换出的算法。

交换技术和中级调度的作用一样的,它们之间有什么区别呢?
处理器的中级调度就是采用的交换技术!所以它又称为交换调度

原创文章 209 获赞 153 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_44571270/article/details/105763929