进程管理之进程调度「建议收藏」

进程管理之进程调度「建议收藏」文章目录一、进程调度基础1、进程调度定义2、进程调度目标二、基本调度算法1、先来先服务算法2、时间片轮转算法3、短任务优先算法4、优先级调度算法5、混合调度算法  在多进程并发的环境里,虽然从概念上看,有多个进程在同时执行,但在单个CPU下,在任何时刻只能有一个进程处于执行状态,而其他进程则处于非执行状态。那么问题来了,我们是如何确定在任意时刻到底由哪个进程执行,哪些不执行呢?这就涉及到进程管理…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

  在多进程并发的环境里,虽然从概念上看,有多个进程在同时执行,但在单个CPU下,在任何时刻只能有一个进程处于执行状态,而其他进程则处于非执行状态。那么问题来了,我们是如何确定在任意时刻到底由哪个进程执行,哪些不执行呢?这就涉及到进程管理的一个重要组成部分:进程调度。

一、进程调度基础

1、进程调度定义

在这里插入图片描述
  进程调度是操作系统进程管理的一个重要组成部分,其任务是选择下一个要运行的进程。

2、进程调度目标

  首先,一般的程序任务分为三种:CPU计算密集型、IO密集型与平衡(计算与IO各半)型,对于不同类型的程序,调度需要达到的目的也有所不同。对于IO密集型,响应时间最重要;对于CPU密集型,则周转时间最重要而对于平衡型,进行某种响应和周转之间的平衡就显得比较重要。

  因此,进程调度的目标就是要达到极小化平均响应时间、极大化系统吞吐率、保持系统各个功能部件均处于繁忙状态(因为CPU非常昂贵,让其闲置是一种浪费,因此保持CPU繁忙十分重要)和提供某种貌似公平的机制。

二、基本调度算法

1、先来先服务算法

在这里插入图片描述

  先来先服务(FCFS)算法是一种最常见的算法,它是人的本性中的一种公平观念。其优点就是简单且实现容易,缺点则是短的工作有可能变得很慢,因为其前面有很长的工作在执行,这样就会造成用户的交互式体验也比较差。

  例如排队办理业务时,你要办理的业务只需要几分钟就可以办好,但是你前面的一个人办理的事情很复杂需要1个小时,这时你需要在他后面等很久,于是你就想到:要是每个人轮流办理10分钟事务的话,那该多好!于是就出现了时间片轮转算法。

2、时间片轮转算法

在这里插入图片描述
  时间片轮转是对FCFS算法的一种改进,其主要目的是改善短程序的响应时间,实现方式就是周期性地进行进程切换。时间片轮转的重点在于时间片的选择,需要考虑多方因素:如果运行的进程多时,时间片就需要短一些;进程数量少时,时间片就可以适当长一些。因此,时间片的选择是一个综合的考虑,权衡各方利益,进行适当折中。

  但是,时间片轮转的系统响应时间也不一定总是比FCFS的响应时间短。时间片轮转是一种大锅饭的做法,但是现实生活中却是走的“一部分人先富,先富带动后富”的路线。例如,如果有30个任务,其中一个任务只需要1秒时间执行,而其他29个任务需要30秒钟执行,如果因为某种原因,这个只要1秒钟的任务排在另外29个任务的后面轮转,则它需要等待29秒钟才能执行(假定时间片为1秒)。于是,这个任务的响应时间和交互体验就变得非常差。因此,短任务优先算法被提出。

3、短任务优先算法

  短任务优先算法的核心是所有的任务并不都一样,而是有优先级的区分。具体来说,就是短任务的优先级比长任务的高,而我们总是安排优先级高的任务先运行。

  短任务优先算法又分为两种类型:一种是非抢占式,一种是抢占式。非抢占式当已经在CPU上运行的任务结束或阻塞时,从候选任务中选择执行时间最短的进程来执行。而抢占式则是每增加一个新的进程就需要对所有进程(包括正在CPU上运行的进程)进行检查,谁的时间短就运行谁。

  由于短任务优先总是运行需要执行时间最短的程序,因此其系统平均响应时间在以上几种算法中是最优的,这也是短任务优先算法的优点。但短任务优先算法也有缺点:一是可能造成长任务无法得到CPU时间从而导致“肌饿”。二是如何知道每个进程还需要运转多久?于是为了解决第一个缺点,优先级调度算法被提出。而第二个缺点则可以采取一些启发式的方法来进行估算,目前很多的人工智能算法都可以做这个事。

4、优先级调度算法

  优先级调度算法给每个进程赋予一个优先级,每次需要进程切换时,找一个优先级最高的进程进行调度。这样如果赋予长进程一个高优先级,则该进程就不会再“饥饿”。事实上,短任务优先算法本身就是一种优先级调度,只不过它给予短进程更高的优先级而已。

  该算法的优点在于可以赋予重要的进程以高优先级以确保重要任务能够得到CPU时间,其缺点则有二:一是低优先级的进程可能会“饥饿”,二是响应时间无法保证。第一个缺点可以通过动态地调节任务的优先级解决,例如一个进程如果等待时间过长,其优先级将因持续提升而超越其他进程的优先级,从而得到CPU时间。第二个缺点可以通过将一个进程优先级设置为最高来解决,但即使将优先级设置为最高,但如果每个人都将自己的进程优先级设置为最高,其响应时间还是无法保证。

5、混合调度算法

  混合调度算法将所有进程分为不同的大类,每个大类为一个优先级。如果两个进程处于不同的大类,则处于高优先级大类的进程优先执行;如果处于同一个大类,则采用时间片轮转算法来执行。混合调度算法的示意图如下图所示:
在这里插入图片描述

转自:https://www.cnblogs.com/edisonchou/p/5020681.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187851.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 如何给自己心仪的人每天发送天气提醒消息

    如何给自己心仪的人每天发送天气提醒消息

    2021年9月18日
    63
  • 贴片电阻的认识_什么是贴片电阻

    贴片电阻的认识_什么是贴片电阻 贴片电阻特性:体积小,重量轻;适应再流焊与波峰焊;电性能稳定,可靠性高;装配成本低,并与自动装贴设备匹配;机械强度高、高频特性优越。RC产品代号片状电阻器05型号020402030603050805061206

    2022年8月21日
    6
  • 高分卫星系列介绍_高分6号卫星参数

    高分卫星系列介绍_高分6号卫星参数celestrak高分卫星系列TLEGAOFEN1,139150U13018A22047.13058851.0000039900000+064218-409992,23915097.8040117.23550018056314.685945.288614.76596516474837GAOFEN2,140118U14049A22047.06986400.0000059700000+084233-409994,240118

    2025年8月2日
    2
  • centos 改动字符集为GB2312的方法[通俗易懂]

    centos 改动字符集为GB2312的方法

    2022年2月4日
    43
  • Maximal Information Coefficient (MIC)最大互信息系数详解与实现「建议收藏」

    Maximal Information Coefficient (MIC)最大互信息系数详解与实现「建议收藏」MICMIC即:MaximalInformationCoefficient最大互信息系数。使用MIC来衡量两个基因之间的关联程度,线性或非线性关系,相较于MutualInformation(MI)互信息而言有更高的准确度。MIC是一种优秀的数据关联性的计算方式。本篇文章将会详细介绍MIC的算法原理,优缺点以及Python的具体实现方式,并给出一个可视化方案。互信息?互信息(Mut…

    2022年9月18日
    3
  • 海量数据处理技巧

    海量数据处理技巧数据时代来临,数据量的爆炸式增长是最为显著的特征。当高性能硬件的普及还跟不上这样的数据大潮时,如何在有限的时空资源内处理海量数据成为了计算机科学以及数理统计等领域最大的挑战。所谓“数据处理”,在本文中特指通过计算机技术,对海量数据进行存储、统计、查询等操作。我将在下面介绍一些基本的海量数据处理的方法,供大家参考。需要明确的一点是,现实情况复杂多变,所以对于海量数据处理这样大的主题,是不可能用一…

    2022年6月23日
    31

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号