处理机调度的层次和调度算法的目标
目录
笔记
- 层次
- 低级:进程调度
- 中级:调度到外存
- 高级:作业调度
- 目标
- 基础目标:资源利用率,公平性,平衡性,策略强制执行
- 批处理系统:平均周转时间短,系统吞吐量高,处理机利用率高
- 分时系统:响应速度快,均衡性
- 实时系统:截止时间的保证,可预测性
参考资料:
在多道程序系统中,调度的实质是一种资源分配,处理机调度是对处理机资源进行分配。处理机调度算法是指根据处理机分配策略所规定的处理机分配算法。// 资源分配
处理机调度的层次
高级调度 | 作业调度
高级调度又称长程调度或作业调度,它的调度对象是作业。其主要功能是根据某种算法,决定将外存上处于后备队列中的哪几个作业调入内存,为它们创建进程、分配必要的资源,并将它们放入就绪队列。高级调度主要用于多道批处理系统中,而在分时和实时系统中不设置高级调度。// 将作业调入内存
低级调度 | 进程调度
低级调度又称为进程调度或短程调度,其所调度的对象是进程(或内核级线程)。其主要功能是,根据某种算法,决定就绪队列中的哪个进程应获得处理机,并由分派程序将处理机分配给被选中的进程。进程调度是最基本的一种调度,在多道批处理、分时和实时三种类型的 OS 中,都必须配置这级调度。// 决定哪个进程获得 CPU
中级调度 | 调度到外存
中级调度又称为内存调度。引入中级调度的主要目的是,提高内存利用率和系统吞吐量。为此,应把那些暂时不能运行的进程,调至外存等待,此时进程的状态称为就绪驻外存状态(或挂起状态)。当它们已具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些已具备运行条件的就绪进程再重新调入内存,并修改其状态为就绪状态挂在就绪队列上等待。// 中级调度实际上就是存储器管理中的对换功能
上述三种调度中,进程调度的运行频率最高,在分时系统中通常仅 10~100ms 便进行一次进程调度,因此把它称为短程调度。为避免调度本身占用太多的 CPU 时间,不宜使进程调度算法太复杂。 作业调度往往是发生在一批作业已运行完毕并退出系统,又需要重新调入一批作业进入内存时,作业调度的周期较长,大约几分钟一次,因此把它称为长程调度。由于其运行频率较低,故允许作业调度算法花费较多的时间。 中级调度的运行频率基本上介于上述两种调度之间,因此把它称为中程调度。// 根据调度频率划为短、中、长调度。
处理机调度算法的目标
基础目标
- 资源利用率:
为提高系统的资源利用率,应使系统中的处理机和其它所有资源都尽可能地保持忙碌状态,其中最重要的处理机利用率可用以下方法计算:
- 公平性:
公平性是指应使诸进程都获得合理的 CPU 时间,不会发生进程饥饿现象。公平性是相对的,对相同类型的进程应获得相同的服务;但对于不同类型的进程,由于其紧急程度或重要性的不同,则应提供不同的服务。
- 平衡性。
由于在系统中可能具有多种类型的进程,有的属于计算型作业,有的属于 I/O 型。为使系统中的 CPU 和各种外部设备都能经常处于忙碌状态,调度算法应尽可能保持系统资源使用的平衡性。// 平衡 CPU 和 外部设备的使用
- 策略强制执行
对所制订的策略其中包括安全策略,只要需要,就必须予以准确地执行,即使会造成某些工作的延迟也要执行。
批处理系统的目标
- 平均周转时间短
所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔(作业周转时间)。它包括四部分时间:作业在外存后备队列上等待作业调度的时间,进程在就绪队列上等待进程调度的时间,进程在 CPU 上执行的时间以及进程等待 I/O 操作完成的时间。其中的后三项在一个作业的整个处理过程中,可能发生多次。
- 系统吞吐量高
由于吞吐量是指在单位时间内系统所完成的作业数,因而它与批处理作业的平均长度有关。事实上,如果单纯是为了获得高的系统吞吐量,就应尽量多地选择短作业运行。
- 处理机利用率高
对于大、中型计算机,CPU 价格十分昂贵,致使处理机的利用率成为衡量系统性能的十分重要的指标;而调度方式和算法又对处理机的利用率起着十分重要的作用。如果单纯是为使处理机利用率高,应尽量多地选择计算量大的作业运行。
由上所述可以看出,这些要求之间是存在着一定矛盾的。
分时系统的目标
- 响应速度快:分时系统的响应时间是指从用户发出请求到系统开始响应的时间间隔。
- 均衡性:分时系统中的用户数目可能很多,而且用户的工作特点也不尽相同,因此,调度算法应尽可能地使系统中的各用户的响应时间相同,即使系统中的用户数目不同,也应尽可能地使各用户的响应时间相同。
实时系统的目标
- 截止时间的保证:实时系统中的进程都有截止时间,即进程必须在某一时刻之前完成,否则就会发生严重的后果。因此,实时系统的调度算法应尽可能地保证进程的截止时间。
- 可预测性:实时系统中的进程都有截止时间,因此,进程的截止时间应是可预测的,即在进程开始运行之前,就应能够预测出进程的截止时间。