回顾
上一篇文章的重点只有一个————进程
对进程的了解包含以下几个方面:1、程序如何变为进程 2、进程在内存中的存储形式 3、进程控制块在内核中的存储形式 4、进程状态
总的来说:
1、进程是程序在计算机中运行的实例
2、进程本身也是一个程序,特殊的程序
3、进程的管理依赖于进程控制块(PCB)
4、进程本身存储在内存中,有特定的存储形式
进程有五个状态,设计进程有状态的原因就在于方便计算机并行运行多个进程,并行运行多个进程就涉及到进程的调度,这个调度是由内核实现
进程调度(process schedule)
进程调度有两个思考角度:一、从一个进程角度看进程调度;二、从计算机整体角度看进程调度
进程角度
从进程自身角度看进程是如何被调度的
上图关键点:
1、进程P0与进程P1是两个并行的进程。所谓并行实际上是指对程序员(计算机使用者)并行,其实际的运行方式并不是同时进行的(多处理器情况除外)
2、进程从执行到空闲需要经过中断或系统调用。 中断:I/O设备等硬件。系统调用:可以认为就是陷入内核。分为进程程序主动要求陷入内核,或程序错误陷入内核
3、图中的省略号是值:内核在PCB(进程控制块)保存要进入空闲状态的进程的现场信息,此时是kernal mode。进程执行时是user mode
4、保存完现场后才可以切换下一个要执行的进程的状态信息,同时内核这个”大眼睛“将内存映射给新进程
5、每次进程的调度都是由操作系统来执行的,操作系统就是计算机的心脏
计算机整体——调度队列
从计算机整体看计算机是如何整理调度内部所有的进程的
上图关键点:
1、所有的进程都会放在队列中,这个队列称为作业队列
2、驻留在内存中、就绪的、等到运行的进程保存在就绪队列中,内核为CPU选择下一个进程就是从就绪队列中获取
3、等待特定I/O设备的进程列表称为设备队列,每个设备都有自己的设备队列,因为一个设备能同时给多个进程提供服务
4、一个进程只可能出现在一个队列里面(就绪队列、设备队列等各个队列都体现一种状态),但是所有的进程都在任务队列内
队列图
队列图是表示进程调度一个常用的方法,在理解这个图之前需要补充一个知识
I/O请求和中断请求的关系:
1、I/O请求是由I/O设备需要输入输出导致的请求,中断请求是外围设备完成操作或紧急事件需要处理而向CPU发送的请求
2、I/O请求是由程序发起的,中断是由硬件设备发起的
3、I/O设备准备号数据或者需要服务时会向CPU发送中断信号,这个中断信号也会让CPU暂停工作
4、虽然I/O操作可能导致中断产生,但是它们本身不是中断请求
(进程状态变化关系表)
1、每个矩形块表示一个队列,右边四个矩形块都是处于等待状态
2、圆圈表示服务队列的资源(I/O、CPU),或导致进程发生队列变化原因(子进程执行、中断发生)
3、图中共有5个队列:I/O等待队列、时间片过期队列、分叉子进程队列、中断等待队列、就绪队列
调度程序
当计算机提交的进程多于可以立即执行的进程时,进程会被保存到大容量的存储设备(缓冲池),后续需要执行进程就要把进程从缓冲池中拿出来,而有一些进程本身就在就绪队列中,可以直接拿出来使用。为了调度这些进程,我们就需要在操作系统中存储一些调度程序
调度程序分为:
1、长期调度程序:从缓冲池中选择进程加到内存
2、短期调度程序:从准备执行(粗略可以认为是已经加载到内存中的进程)的进程中选择进程分配给CPU
为了让性能达到最佳,系统需要合理组合I/O密集型和CPU密集型
总结
本文到这里就结束啦~~这堂课的内容较为杂乱、复杂,但是学一学拓展一下知识是非常好的呀~~
如果觉得对你有帮助,辛苦友友点个赞哦~
知识来源:操作系统概念(黑宝书)、山东大学高晓程老师PPT及课上讲解。不要私下外传