操作系统作为计算机基础的四大件,系统学习无疑是十分重要的。在这个系列的文章中,荔枝会结合操作系统的知识进行归纳梳理,总结输出博文!下面这篇文章主要介绍的是进程状态和调度,重点是几种调度算法的理解和掌握,希望对正在学习的小伙伴有帮助~~~
前言
一、进程基础
1.1 基本概念
1.2 进程与线程之间的关系
二、进程控制
2.1 原语
2.2 进程状态
2.2.1 进程的五种状态
2.2.2 七种进程状态
2.2.3 阻塞和挂起区别
三、进程调度
3.1 进程的调度层次
3.2 进程的调度时机
3.3 进程的调度过程
3.4 调度算法指标
3.5 六种进程调度算法
3.5.1 先来先服务FCFS(First Come First Served)
3.5.2 短作业优先SJF(Shortest Job First)
3.5.3 高响应比优先调度HRRN(Highest Response Ratio Next)
3.5.4 优先级调度PSA(Priority-Scheduling AIgorithm)
3.5.5 时间片轮转调度RR(Round-Robin)
3.5.6 多级反馈队列调度MFQ(Multileveled Feedback Queue)
总结
进程,是一个具有一定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度的基本单位。
要点
进程的结构
进程的特征
线程的概念
Thread,进程的轻型实体,也叫“轻量级的进程”,是一系列活动按实现设定好的顺序依次执行的过程,是一系列指令的集合。线程是依赖于进程而存活的,不能单独存在,同时线程也是操作系统运算调度的最小单位。
区别
线程相对于进程,大大降低了创建、撤销和切换可执行实体的成本和难度。同时引入了线程明显提高了操作系统处理并发事务的能力。
进程控制指的是操作系统对进程实现有效的管理,包括创建新进程、撤销已有进程、挂起、阻塞、唤醒、进程切换等多种操作。操作系统主要是通过原语操作来实现进程控制。
原语是一种特殊的原子操作指令集,由若干个指令组成,共同完成某个特定的功能。
原语特点
进程状态转换相应操作的原语:
进程在其声明周期中默认有五种状态:创建、就绪(等待)、执行、阻塞、结束。
我们知道计算机系统的存储分为内存和外存,而有些进程在整个系统向外提供服务的过程中,我们总是有这么一种需求将长时间不用调度的进程解除系统所有资源的占用,把这一部分的内存资源移到外存中存储,那么在OS中我们就可以执行挂起的操作。
阻塞和挂起的状态主要区别在于对于系统资源的占用上、发生时机和恢复时机。
进程调度也被称为处理机调度,主要是操作系统OS根据一定的算法和原则将处理及资源进行重新分配的过程。操作系统需要进行进程调度的前提是我们需要的任务数(进程数) > 处理机数。在调度的时候我们必须考虑两点:满足特定系统用户的需求(快速响应);考虑系统整体效率即系统的平均周转时间和调度算法本身的开销。
目的:提高资源利用率,减少处理及空闲时间。
进程的调度层次主要分为三层:高级调度(作业调度)、中级调度(内存调度)、低级调度(进程调度)。其中进程调度是最基本的调度,主要功能是从就绪队列中选取进程分配给处理机。
处理机进行进程调度的时机一般是下面几种情况:
进程调度过程会依次执行下面的过程:
衡量进程调度算法的指标主要有:
进程的调度算法主要是用在两种场景下:A在后备作业/就绪队列中对进程进行排序调度、B在内存中对进程进行调度。下面的六种算法前四种是属于A,后两种属于B。当然了前四中也可以用于A,只不过可能用的比较少而已。
FCFS算法思想比较简单,就是一个队列,先入先出,先到先得。也就是说先进入调度队列的进程先被执行。
调度方式:非抢占式调度
使用场景:作业 | 进程调度
优缺点
短作业优先,顾名思义就是将所需服务最短的作业/进程优先执行,当然了这种时间估计并不是准确的,所以这种算法追求理想状态下最少的平均(带权)周转时间。
调度方式:SJF/SPF非抢占式调度、SRTN抢占式
使用场景:作业 | 进程调度
优缺点
SRTN:最短剩余时间优先算法。
结合FCFS和SJF,综合考虑等待时间和服务时间计算响应比,响应比高的优先调度,这种算法综合考虑了进程的等待时间和服务时间试图提出一种更好的调度算法。响应比的计算比较简单:响应比=(等待时间+服务时间) / 服务时间。
调度方式:非抢占式调度
使用场景:作业 | 进程调度
重点
优先级调度是按照进程的优先级,也就是任务的紧迫程度来进行调度。优先级调度有两种:剥夺式和非剥夺式,区别在于对于当前正在执行的作业,突然加入一个更高优先级的作业,是否会等到改作业执行完成后再抢占CPU。
调度方式:抢占式 | 非抢占式调度
使用场景:作业 | 进程调度
优先级设置原则
时间片轮转的机制有点像计算机网络中的分时复用的模式,就绪队列会按照进程到达的顺序,轮流去分配一个时间片去执行,时间用完后就会剥夺该进程的使用权。这种按照时间片来均匀分配的机制确实可以使得进程再一定时间内都可以得到响应,从而不会导致某一些进程一直饥饿。
调度方式:抢占式调度,开启抢占的时间主要是由时钟中断来确定
使用场景:进程调度
优缺点
多级反馈队列调度算法设计了多个按照优先级排序的就绪队列,对于多个队列按照优先级从高到低,时间片从小到大排序和级别划分。每个队列中的进程依旧是按照先到先得的原则被分配时间片,而对于新进程的加入默认会加在第一级别队列尾部,按照时间片轮转的机制来执行,若在当前时间片中没有执行完的会掉到下一级队列的尾部继续按照相同模式来执行。遵循的规则就是:前面的队列不为空,不执行后续的队列进程。
调度方式:抢占式调度
使用场景:进程调度
优缺点
简单了解进程的概念以及进程控制和调度这些基础的知识,荔枝无疑对操作系统有了初步的认知。需要注意的是,作业队列和进程调度的具体指代、几种进程状态的切换和区别这些均是面试重点关照的地方,希望在这篇文章荔枝有说清楚~~~
今朝已然成为过去,明日依然向往未来!我是荔枝,在技术成长之路上与您相伴~~~
如果博文对您有帮助的话,可以给荔枝一键三连嘿,您的支持和鼓励是荔枝最大的动力!
如果博文内容有误,也欢迎各位大佬在下方评论区批评指正!!!