引言
本文为第六篇,作业管理之进程调度,本文主要介绍进程调度的概述和进程调度的算法
一、进程调度概述
进程调度是指计算机通过决策决定哪个就绪进程可以获得 CPU 使用权 。也就是说,进程调度指的是计算机选择哪一个进程可以使用 CPU,前提是这个进程的状态为 就绪状态
进程调度有两个步骤:
- 保留旧进程的运行信息,请出旧进程
- 选择新进程,准备运行环境并分配 CPU
为了实现进程调度的这两个步骤,就需要了解三种重要的机制:
- 就绪队列的 排队机制
- 选择运行进程的 委派机制
- 新老进程的 上下文切换机制
就绪队列的排队机制
(1)就绪队列的排队机制
就绪队列中摆放着所有的就绪状态的进程
就绪队列的排队机制就是为了提高进程调度的效率,事先将就绪进程按照一定的方式排成队列,以便调度程序可以最快找到就绪进程
(2)选择运行进程的委派机制
这个机制就要求可以从就绪队列中选出一个进程,然后让去 CPU 中进行执行。调度程序以一定的策略选择就绪进程,将 CPU 资源分配给它
(3)新老进程的上下文切换机制
如果要将新的进程调度到 CPU 中,就需要 将老的进程的 CPU 环境备份出来 ,然后将新的进程的 CPU 环境切换进去。它 保存当前进程的上下文信息,装入被委派执行进程的运行上下文
在 CPU 里面有一个 高速缓存,这个机制就是首先将老进程的上下文备份到主存中,接着将新的进程的上下文放入到 CPU 中,准备环境,让新的进程可以运行起来,这个就是新老进程的上线文切换机制。这三个就是进程调度所需要的三个基本的机制
思考一个问题,如果进行调度的时候,老的进程还没有执行完,这个时候怎么办?
按照老的进程有没有执行完,将进程调度的方法分为两大类:
- 非抢占式的调度
- 抢占式调度
非抢占式的调度
- CPU 一旦分配给某个进程,就让该进程 一直使用下去
- 调度程序不以任何原因抢占正在被使用的 CPU
- 直到进程 完成工作或因为 IO 阻塞 才会让出 CPU
抢占式调度
- 允许调度程序以一定的策略暂停当前运行的进程
- 保存好旧进程的上下文信息,分配 CPU 给新进程
两种方式进行一个对比
进程调度的算法
- 先来先服务 调度算法
- 短进程优先 调度算法
- 高优先权优先 调度算法
- 时间片轮转 调度算法
先来先服务调度算法
在就绪队列中,按照先来先服务的原则,优先选择队列前面的进程进行调度
短进程优先调度算法
- 调度程序优先选择就绪队列中 估计运行时间最短 的进程
- 短进程优先调度算法 不利于长作业进程的执行
高优先权优先调度算法
这个算法是以优先级为基础的
- 进程附带优先权,调度程序优先选择权重高的进程
- 高优先权优先调度算法使得紧迫的任务可以优先处理
前边文章中有说到,前台进程的优先级要高于后台进程的优先级,因为前台进程是与用户进行交互的,为了保证用户在使用系统的时候不会卡顿,因此 前台进程权重就要高于后台进程
时间片轮转调度算法
按先来先服务的原则排列就绪进程
每次从队列 头部 取出待执行进程,分配一个 时间片 执行 (把这个时间片用完了,不管这个进程有没有执行完,都会将这个进程重新的插到队列的 尾部 。每个进程分配的时间片都是一样的)。 是相对公平的调度算法,但不能保证及时响应用户
在快速变化的技术中寻找不变,才是一个技术人的核心竞争力。知行合一,理论结合实践
站在了巨人的肩膀上学习,向前辈致敬
参考:https://coding.imooc.com/clas…