栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

操作系统-进程调度

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

操作系统-进程调度

调度的三个层次

高级调度(作业调度):磁盘-->内存(只会调度一次,创建进程的过程)

磁盘上的某个软件程序以作业形式提交后,操作系统不会立即就将其创建为新进程,作业的提交需要先进入磁盘中的作业等待队列中,CPU对这个等待队列中的作业以某种算法进行调度。

这样通过将作业提交至磁盘上的等待队列中,等待CPU调度并创建进程,然后将磁盘上的软件存储在内存的虚拟地址空间上,并由CPU去执行的过程既是高级调度。

高级调度是辅存(外存)与内存之间的调度。每个作业只调入一次,调出一次。作业调入时会建立相应的PCB,作业调出时才撤销PCB。高级调度主要是指调入的问题,因为只有调入的时机需要操作系统来确定,但调出的时机必然是作业运行结束才调出。

中级调度(内存调度):磁盘-->内存(会被调度多次,处于挂起态的进程重新调入内存的过程)

为了使内存中的内存不至于太多,有时需要把某些进程从内存中调至外存。在内存使用情况紧张时,将一些暂时不能运行的进程从内存中对换到外存中等待。当内存有足够的空闲空间时,再将合适的进程重新换入内存。这样做目的是为了提高内存利用率和系统吞吐量。

中级调度就是要决定将哪个处于挂起状态的进程重新调入内存。一个进程可能会被多次调出、调入内存,因此中级调度发生的频率要比高级调度更高。

低级调度(进程调度):从就绪队列中取出进程,将其转换成运行态(调度频率最高)

低级调度(进程调度),其主要任务是按照某种方法和策略从就绪队列中选取一个进程,将处理机分配给它。

进程调度是操作系统中最基本的一种调度,在一般的操作系统中都必须配置进程调度。

进程调度的频率很高,一般几十毫秒一次。

进程的调度方式

当某个进程正在处理机上执行时,当有更为重要急迫的进程需要处理时,有优先权更高的进程进入就绪队列,此时需要考虑以哪个方式分配处理机。通常进程的调度方式有两种:

1)抢占式(剥夺式):调度程序一旦得到处理机,只有在程序运行完或者被阻塞的时候,才会将处理机分配给其他的进程。这种方式对提高系统吞吐率和响应效率有着明显的好处。但抢占也要遵循一定的原则:

 遵循的原则:

 1>优先权原则:允许优先权高的先到进程抢占当前进程的处理机。

 2>短作业(进程)优先原则:允许执行时间短的先到进程抢占当前进程的处理机。

 3>时间片原则:时间片用完后停止执行,重新进行调度,适用于分时系统。

2)非抢占式(非剥夺式):当一个进程正在处理机上执行时,即使有某个更为重要或紧迫的进程进入就绪队列,仍然让正在执行的进程继续执行,直到该进程完成或发生某种事件而进入阻塞状态时,操作系统会将当前运行的进程强行暂停 , 把处理机分配给其他的就绪进程。

在采用非抢占式调度方式时,可能引起进程调度的因素可归结为:

   1>正在执行的进程运行完毕,或因发生某事件而使其无法再继续运行;

   2>正在执行中的进程因提出I/O请求而暂停执行;

   3>在进程通信或同步过程中,执行了某种原语操作,如Block原语;

其调度方式优点是实现简单,系统开销小,适用于大多数的批处理系统。但它不能用于分时系统和大多数实时系统。

调度策略的设计

CPU任务可以分为交互式任务和批处理任务,调度最终的目标是合理的使用CPU,使得交互式任务的响应时间尽可能短,用户不至于感到延迟,同时使得批处理任务的周转时间尽可能短,减少用户等待的时间。

响应时间:从用户输入到产生反应的时间

周转时间:从任务开始到任务结束的时间

调度算法 轮转调度算法

在分时系统中,较常用的是基于时间片的轮转(RR)调度算法。时间片是指一个较小的时间间隔,通常为10-100毫秒。时间片的轮转调度算法采用了非常公平的处理机制分配方式,即让就绪队列上的每个进程每次仅运行一个时间片。

在RR法中,系统根据FCFS(先来先服务)策略,将所有的就绪进程排成一个就绪队列,并可设置每隔一定时间间隔产生一次中断,激活系统中的进程调度程序完成一次调度,将CPU分配给队首进程令其执行。当该进程的时间片耗尽或运行完毕时,系统再次将CPU分配给新的队首进程。以此可保证就绪队列中的所有进程在一个确定的时间段内都能获得一次CPU执行。

优先级调度算法

优先级调度算法是把处理机分配给就绪队列中优先级最高的进程。优先级调度算法可分为以下两种:

1)非抢占式优先级调度算法:当把处理机分配给就绪队列中优先级最高的进程后,该进程可一直执行下去直至完成。也可应该进程发生某事件而放弃处理机时,系统可以将处理机重新分配给另一优先级最高的进程。

2)抢占式优先级调度算法:将处理机分配给优先级最高的进程。在其执行期间,只要出现另一个优先级更高的进程,调度程序就将处理机分配给新到的优先级最高的进程。

多队列调度算法

多级队列调度算法能够在一定程度上弥补在多处理机系统中关于单一调度策略实现机制的缺点(低级调度算法是固定的,单一的,无法满足系统中不同用户对进程调度策略的不同要求)。

多队列调度算法是将系统中的进程就绪队列从一个拆分为若干个,将不同类型或性质的进程固定分配在不同的就绪队列,不同的就绪队列采用不同的调度算法,一个就绪队列中的进程可以设置不同的优先级,不同的就绪队列本身也可以设置不同的优先级。

多级反馈队列调度算法

前文所列举的调度算法都有其一定的局限性,如若一个进程未指明其进程长度,则短进程优先以及基于进程长度的抢占式调度算法都无法使用。多级反馈队列调度算法是一种较好的调度算法,因其不用事先知道各种进程执行所需时间,并能够很好的满足各种进程的所需。

调度机制:

 1)设置多个就绪队列:多级反馈队列调度算法在系统中设置多个就绪队列,并为每个队列赋予不同的优先级。队列的优先级从第一个队列依次,逐个降低。其为不同队列中的进程所赋予的执行时间片的大小也各不相同,在优先级越高的队列中,其时间片越小。

 2)每个队列都采用FCFS算法:当新进程进入内存后,首先将其放入第一个队列的末尾,让其按照FCFS原则等待调度。当到该进程执行时,若在该时间片内完成便可以离开系统,若第一个时间片内未完成,则调度程序将其转入第二个队列的末尾等待调度,依次类推,当进程最后被降至第n个队列后,在第n个队列中采用RR(时间片轮转)方式运行。

 3)队列优先级调度:调度程序首先调度最高优先级队列中的各进程运行,仅当第一队列空闲时才调度第二队列中的进程运行。

转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1036473.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号