百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

操作系统-进程调度

haoteby 2025-01-11 13:23 3 浏览

摘要

  1. 进程调度
  2. 调度原则
  3. 调度算法

操作系统-进程调度

线程调度

进程调度是指在进程之间选择一个进程将其送上CPU执行,通常这个是由操作系统中的调度程序执行

调度原则

  • 如果运行的程序发生I/O事件请求,CPU使用率会降低,因为此时进程在等待硬盘数据的返回。所以为了提高CPU运行效率,在由于I/O导致CPU空闲时,调度程序需要从就绪队列中选择一个进程运行。
  • 有的程序执行时间较长,一直占有CPU,系统吞吐量(单位时间内CPU完成的进程数量)降低。所以为了提高系统吞吐量,调度程序需要权衡长任务和短任务的完成数量。
  • 进程的周转时间包含运行时间和阻塞等待时间。进程的周转时间越小越好,调度程序需要保证周转时间尽可能的小
  • 调度程序需要让就绪队列中的等待时间尽可能的短
  • 对于交互式比较强的应用,比如键盘、鼠标,调度程序要考虑程序的响应时间尽可能快。

综上所述,调度程序主要从以下几个系统参数来考虑:

  • CPU利用率:调度程序尽可能的让CPU繁忙,提高调度程序的利用率
  • 系统吞吐量:吞吐量是单位时间内CPU完成的进程数,长作业会降低吞吐量,短作业提高吞吐量
  • 周转时间:周转时间是运行时间和阻塞时间的总和,一个进程的调度时间越小越好
  • 等待时间:进程在就绪队列中等待时间尽可能的短
  • 响应时间:在交互式较强的系统,调度算法需要尽可能的降低响应时间

调度算法

如果硬件提供某个频率的时钟中断,根据如何处理时钟中断调度算法大致分为两类:

  • 非抢占式调度算法:该算法挑选一个进程,让该进程运行直到被阻塞或者进程退出,才会调用另外一个进程,不会理会时钟中断
  • 抢占式调度算法:该算法挑选一个进程,让该进程在某个时间段内运行,如果运行超出该时间段,则会把它挂起,接着调度程序从就绪队列中挑选另一个进程运行。这种抢占式调度需要在时间段结束时发生时钟中断,以便把CPU控制权返回给调度程序进行调度。这就是常说的时间片机制。

先来先服务(FCFS)算法

先来后到,每次从就绪队列中选择一个进程运行,直到进程阻塞或退出。FCFS适用于CPU繁忙性作业的系统,不适用于I/O繁忙性。

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

优先选择运行时间最短的进程来运行,有利于提高系统的吞吐量。

SJF算法不利于长作业,如果就绪队列中短作业过多,会导致长作业具有较高的延迟。

高响应比优先(HRRN)调度算法

主要是权衡了短作业和长作业,每次进行调度时,先计算响应比,然后把响应比最高的进程运行。

响应比=(等待时间+要求服务时间)/ 要求服务时间

  • 如果进程等待时间相同,要求服务时间越短,响应比越高,这样短作业容易被运行
  • 如果进程要求服务时间相同,等待时间越长,响应比越高,这样长度作业在等待时间过长时也会被选中运行

时间片轮转(RR)调度算法

每一个进程被分给一个时间段,称之为时间片,即允许该进程在该时间段中运行。

  • 如果时间片用完,进程还在运行,进程会将CPU释放,调度程序会把CPU分配给另一个进程运行
  • 如果该进程在时间片结束之前阻塞或结束,CPU也会立即切换

在该算法中,时间片的长度是一个比较关键的点:

  • 如果设置的太短会导致过多的进程上下文切换,降低CPU的效率
  • 如果设置的太长有可能会导致短作业的响应时间变长

一般来说,时间片的设置应为略大于一次交互的响应时间,20ms~50ms是一个折中的值。

最高优先级(HPF)调度算法

从就绪队列中选择最高优先级的进程运行。

进程的优先级分为静态优先级动态优先级

  • 静态优先级:创建进程的时候,就已经确定优先级了,然后整个运行时间优先级都不会变化
  • 动态优先级:根据进程的动态变化调整优先级,如果进程运行时间增加,降低优先级,如果进程等待时间增加,则升高优先级

该算法也有两种处理高优先级的方法,非抢占式和抢占式:

  • 非抢占式:当就绪队列中出现优先级高的进程,运行完当前进程,再选择优先级高的进程
  • 抢占式:当就绪队列中出现优先级高的进程,当前进程挂起,调度优先级高的进程运行

优先级低的进程可能一直无法运行

多级反馈队列(MFQ)调度算法

该算法是时间片轮转算法和最高优先级算法的结合。

  • 多级表示有多个队列,每个队列优先级从高到低,同时优先级越高队列中时间片也越短
  • 反馈表示如果有新的进程加入高优先级队列时,立刻停止当前正在运行的进程,转而去运行优先级高的进程

具体的工作流程如下:

  • 设置多个队列,每个队列设置不同的优先级,队列的优先级从高到低,且优先级越高时间片越短
  • 新的进程会被第一级队列的末尾,按照先来先服务的原则等待被调度,如果在第一优先级的规定的时间片进程没有执行完成,则会将他转入第二队列的末尾,依次类推,直至完成
  • 当较高优先级的队列为空时,才能调度较低优先级队列中的进程。如果进程在运行时,有新进程加入较高优先级的队列,则停止当前运行的进程并将其移入到原队列末尾,接着让较高优先级的进程运行。

这种算法对于短作业来说很可能就在第一级队列就被处理完成,对于长作业来说,虽然有可能因为在第一级队列无法执行完成而被被移入到第二级队列运行(等待时间变长),但是获得时间片也会变长(运行时间变长),所以该算法很好的兼顾了长短作业,同时有较好的响应时间

相关推荐

用户界面干货盘点

为了解决大家找资源难的问题,EVGET特别开辟每周盘点用户界面干货的专栏,一网打尽热门的界面资讯、Demo示例、版本升级及下载、移动Web开发,以及各种UI神器推荐。更多资源及工具也可以在用户界面专题...

不仅仅是创意,26款科技小玩意

新科技不断在卖场出现,总是吸引着消费者的眼球。许多很棒的科技小玩意儿被发明,手机、平板、手提电脑、游戏主机、甚至是3D打印都适用。现在的初创公司已经发正在让21世纪打破各种科技壁垒障碍。本文收集26...

FastReport.Net报表设计器如何连接到SQLCe

MicrosoftSQLServerCompactEdition是一个简单的本地关系数据库,不需要安装,并且已与数据库文件建立连接。您不需要管理员权限即可使用基础功能。您也只能“密码”基础功能...

2015年最值得关注的8款用户界面新品

软件界面开发解决方案这一块一直以来是慧都控件(EVGET)的强项,我们有400多款用户界面产品,250多款图表报表产品,此外还提供专业的软件界面定制开发服务,其中DevExpress定制开发、甘特图定...

小贴士:安装TBarCode office的注意事项和相关资源

TBarCodeoffice是一款适用于MicrosoftWord2007、2010等版本,具有强大功能的条码插件。在这里我们介绍一下安装TBarCodeoffice的注意事项和相关资源。安装...

初学者不容错过的修复Bug小技巧

Bug的发生,我想这是每个开发人员几乎每天都要面对的问题,包括历史上非常有名的编程人员,他们依旧要面对Bug。成为一个熟练的程序员并不意味着永远不会犯错误,而是擅于发现错误并能很好地修正错误。当你刚开...

【推荐】一款基于 .NET 开源的支持多厂区、多项目级的MOM/MES系统

如果您对源码&技术感兴趣,请点赞+收藏+转发+关注,大家的支持是我分享最大的动力!!!项目介绍tmom是一款基于.NET开源、通用的生产制造系统,支持多厂区/多项目级的MOM/MES系统,计划排程...

你不可不知的10个Github功能

Github让全世界的开发人员、设计人员可以在一起工作交流。Github不仅提供大量开源项目、编程语言代码,他也发布过Windows和OSX桌面应用,可以让我们在工作中无缝集成Github。...

Fastreport.Net用户手册(十四):文本编辑

编辑对象的文本,只需双击文本内容,然后会弹出一个文本编辑器。在编辑器右方有一个可以添加至文本中的数据树组件。可以通过鼠标拖拽该组件到需要的地方。在文本中嵌入该组件的另一个方法是双击该组件,然后该组件将...

火狐浏览器开发者专版上手体验

当Mozilla宣布FirefoxDeveloperEdition,我想不少开发者都很高兴,因为第一个大型开发者专用浏览器诞生了。既然是开发者专用版,那么和普通版本肯定是不一样的。早已经迫不及待...

FastReport.Net 2015.3.3 优化了报表解析器

FastReport.Net2015.3.3于近日正式发布。点击FastReport.Net2015.3.3下载试用FastReport.Net最新版本。[Core][Exports]重写保存在...

改变上网体验:10个超赞的Google Chrome扩展

你使用谷歌浏览器浏览网页吗?其实,全世界数以百万的用户都喜欢使用GoogleChrome浏览网页,这也促使其成为全球使用量第二大的Web浏览器。GoogleChrome浏览器具有快速、干净的页面,...

如何在 FastReport Online Designer 中处理报表的 5 个函数

FastReports产品的时代并没有停滞不前。每个月都会添加新的函数和对象,并改进和优化当前的代码。FastReportOnlineDesigner...

Winform应用界面开发技术特点图解

整理一下自己之前的Winform开发要点,以图文的方式展示一些关键性的技术特点,总结一下。...

跨平台的可视化Web报表设计器-FastReport Online Designer

好消息!FastReportOnlineDesigner现在作为一个独立的应用程序发布啦!此前作为FastReport.Net的专业版的一部分的在线设计测试版,现在可以单独或作为FastRepor...