第6章 进程的调度

来源:互联网 发布:sql server 注释代码 编辑:程序博客网 时间:2024/05/16 19:20

6.1 进程调度的定义--进程调度就是CPU 在各个进程之间的切换

在多进程并发的环境里,从概念上是多个进程并发,实际上在单个cpu下,在任何时刻只有一个进程在运行状态,其他的进程都在就绪状态;这就出现一个问题: 如何确定在任意时刻到底由哪个进程执行,哪个不执行;这个过程就是进程调度!
进程的调度是操作系统进程管理的一个重要组成部分
  • 进程在执行时使用CPU 的模式有哪种: 一种是程序大部分时间在cpu 上执行--CPU 密集型程序,一种是程序在大部分时间在输入、输出---I/O 密集型程序,另外一种是介入两种模式之间
  • 进程调度的目标: CPU调度的目标是达到极小化平均响应时间、极大化系统吞吐率、保持系统各个功能部件处于繁忙状态合提供某种貌似公平的机制。

6.2 进程调度的算法

  • 先来先到的服务调度算法 ----无论进程的紧急程度,都遵守先来先服务;算法简单但是社会毕竟不是决定的公平,需要我们进一步处理优先级高的服务;所以需要每个排队的进程都可以在一定时间内轮流获取cpu,这样能保证短时间内可以完成的task 不用等很长时间才轮到。
  • 时间片轮转算法 --- 对所有排队cpu 的进程进行时间轮转,每个进程可以获取一定的时间(比如1s),那时间到了cpu 就会从一个进程收回,然后分配给另外一个进程。
  • 短任务优先算法 --- 上面说的时间片轮转算法,是足够的公平,但是对短任务是也是不公平的,需要等排很长的队伍,一个1s 完成的task 需要排在100个100s完成的task后面是不可以接受的,这时就引入了短任务优先处理,长task 多运行1-2s 是可以接受的
  • 优先级调度算法 ---  社会的人能力都是有分等级的,有些人能力大占用的资源就多,所以我们需要对所有进程产生一个优先级的概念,优先级高的进程比优先级低的进程获取的CPU 快、多
  • 混合调度算法  --- 时间轮转算法和优先级算法各有各的优势,就采取混合调度算法,结合两种优势;对进程进行分类,不同的类的优先级不同;在同一个类中优先级相同,直接用时间片轮转的算法来分配cpu

6.3 实时调度算法

  • 对有些系统必须满足实时的调度,比如火箭轨道、工业流水线;如果在一定的时间内没有返回结果就会出现问题,这类task 我们需要满足实时调度;实时调度分为动态实时调度算法和静态实时调度算法。
  • 动态实时调度算法:就是根据排队task 需要完成的截止时间来动态调整排队进程获取cpu的算法,能达到一种最优的调度;后面新的进程进来再实时调整算法
  • 静态实时调度算法:根据现在排队的进程和task 完成的截止时间预先计算出一套最优的算法,然后按照这种算法进行执行,后续有新的进程进来也不再改变;


0 0