博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[软考]之进程调度 ...
阅读量:5769 次
发布时间:2019-06-18

本文共 1431 字,大约阅读时间需要 4 分钟。

  进程调度方式是指当有更高优先级的进程到来时如何分配cpu,调度方式分为可剥夺和不可剥夺两种。可剥夺式是指当有更高优先级的进程到来时,强行将正在运行进程的cpu分配给高优先级的进程;不可剥夺式是指当有更高优先级的进程到来时,必须等待正在运行进程自动释放占用cpu,然后将cpu分配给高优先级的进程。

  什么时候会用到进程调度:

            

 进程调度算法:

  先来先服务(FCFS):

  FCFS总是将就绪队列队首的进程投入运行,也就是说,如果作业A,B,C到达时间不同,不论优先级如何,总是按照到达时间来运行。它的特点是比较有利于长作业,而不利于短作业,有利于cpu繁忙的作业,而不利于I/O繁忙的作业。先来先服务是一种不可剥夺的算法。

  时间片轮转。

  时间片轮转算法可以分为固定时间片和可变时间片两种,固定时间片顾名思义,即为分配给每个进程相等的时间片,使所有的进程都公平执行。而可变时间片则需要根据进程不同的要求对时间片的大小实时修改,可以更好的提高效率。

  优先级调度。

  优先级调度算法是让每一个进程都拥有一个优先数,数值大的表示优先级高,系统在调度时总是选择优先数大的占用cpu,优先级调度分为静态优先级和动态优先级两种。

  静态优先级

  即进程的优先级在创建时确定,一直到进程终止都不会变。

  动态优先级

  即在创建进程时赋予一个优先级,在进程运行中优先级有可能改变,以便获得更好的调度性能,进程动态的优先级可以用系统或者用户自己定义。

  多级反馈调节:

                

  1、设有N个队列(Q1,Q2....QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业(进程)的优先级也是不一样的。一般来说,优先级Priority(Q1) > Priority(Q2) > ... > Priority(QN)。怎么讲,位于Q1中的任何一个作业(进程)都要比Q2中的任何一个作业(进程)相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列。 

  2、对于某个特定的队列来说,里面是遵循时间片轮转法。也就是说,位于队列Q2中有N个作业,它们的运行时间是通过Q2这个队列所设定的时间片来确定的(为了便于理解,我们也可以认为特定队列中的作业的优先级是按照FCFS来调度的)。 
  3、各个队列的时间片是一样的吗?不一样,这就是该算法设计的精妙之处。各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短。同时,为了便于那些超大作业的完成,最后一个队列QN(优先级最低的队列)的时间片一般很大(不需要考虑这个问题)。 

  进程优先级的分类:

每个进程都有相应的优先级,优先级决定它何时运行和接收多少 CPU 时间。最终的优先级共 32 级,是从 0 到 31 的数值,称为基本优先级别(Base Priority Level)。系统按照不同的优先级调度进程的运行,0-15 级是普通优先级,进程的优先级可以动态变化,高优先级进程优先运行,只有高优先级进程不运行时,才调度低优先级进程运行,优先级相同的进程按照时间片轮流运行。16-31 级是实时优先级,实时优先级与普通优先级的最大区别在于相同优先级进程的运行不按照时间片轮转,而是先运行的进程就先控制 CPU,如果它不主动放弃控制,同级或低优先级的进程就无法运行。

转载于:https://www.cnblogs.com/zhemeban/p/7183137.html

你可能感兴趣的文章
request.getServletPath()和request.getPathInfo()用法
查看>>
nginx在响应request header时候带下划线的需要开启的选项
查看>>
Linux下DHCP服务器配置
查看>>
AndroidStudio中导入SlidingMenu报错解决方案
查看>>
我的IDEA配置
查看>>
myeclipse显示行号
查看>>
编写高性能的java程序
查看>>
Spring 的配置详解
查看>>
linux已经不存在惊群现象
查看>>
上位机和底层逻辑的解耦
查看>>
关于微信二次分享 配置标题 描述 图片??
查看>>
springcloud使用zookeeper作为config的配置中心
查看>>
校园火灾Focue-2---》洗手间的一套-》电梯
查看>>
css控制文字换行
查看>>
bzoj1913
查看>>
bzoj2301(莫比乌斯反演)
查看>>
【转】对于HttpClient和HtmlUnit的理解
查看>>
L104
查看>>
分镜头脚本
查看>>
链表基本操作的实现(转)
查看>>