操作系统–进程管理
进程概念
进程:申请资源和调度资源的基本单位,一个进程就是一个程序的一个运行过程。是一个动态的概念,在不同的操作系统中,会有不同的进程出现。
程序:静态概念,是指令和数据的集合,可长期存储。
进程与程序对应关系:
- 一个程序可以对应一个进程或者多个进程
- 一个进程可以对应一个程序,或者一段程序
进程结构
进程由程序,数据集合,进程控制块PCB(Process Control Block)
PCB,进程在创建的时候,同时创建。进程结束的时候,PCB删除。
进程状态转化
进程的状态:
- 新状态:进程已经创建,但未被os接纳为可执行进程
- 就绪状态:准备执行
- 执行状态:占用处理机(单个处理机环境中,某一个时刻仅一个进程占用处理机)
- 阻塞状态:等待某时间发生才能执行,如等待I/O完成等
- 终止状态:因停止或取消,被os从执行状态释放
挂起概念
挂起:操作系统中将进程换出内存,我们将这称为进程的挂起。
五状态转换:
五状态队列模型调度:
进程控制
进程的两种执行模式:
系统模式(系统态):具有最高特权,运行系统特定的指令。
用户模式(用户态):较低的特权,用户一般运行在用户模式
进程切换和模式切换
进程切换:作用于进程之间的一种操作。当分派程序收回当前进程的CPU并准备把它分派给某个就绪进程时,该进程将被引用。
模式切换:是进程内部所引用的一种操作。当用户程序转入系统调用,或者相反时,该操作将被调用。
进程调度
进程调度:在一个队列中,按照某种方法(算法),选择一个合适的个体的过程。
调度目标
调度目标:公平性,处理机利用率,提高系统吞吐量,尽量减少进程的响应时间。
进程调度–面向系统原则
优先权
优先权:队列可以根据进程的优先权不同,组织不同的就绪队列。进程调度时,首先选择高优先权队列中的进程,当优先权高的队列没有进程的时候,在选择较低优先权的队列中的进程。
如图:
进程调度方式
剥夺方式
剥夺方式:时间片到了,进程被剥夺;有新的优先权高的进程插入。
非剥夺方式
非剥夺方式:执行进程只有在执行完毕,或者申请I/O阻塞自己时,才中断其执行,释放处理机,调入新进程。
进程调度类型
长程调度
长程调度 :又称为作业调度,它为被调度作业或用户程序创建进程,分配必要的系统资源,并将创建的进程插入就绪队列,等待短程调度。或者将新建的进程插入到就绪/挂起队列,等待中程队列。
中程调度
中程调度:内外存之间的对换功能的一部分。当内存空间紧张的时候,将内存中的进程换到外存挂起;当内存空闲的时候,将外存中挂起的进程换到内存。
短程调度
短程调度:也称为进程调度,即就绪队列中的哪个进程将获取处理机。
进程调度算法
先来先服务算法:(适合长程,中程,短程调度)
该方法按照进程到达的先后顺序排序,每次调度对首的进程。
短进程优先算法:(适用长程和短程调度)
当需要调度进程的时候,通过计算判定就绪队列中哪个进程的预期执行时间最短;哪个最短,就调度哪个。
时间片轮转调度法:(适用于短进程调度)
就是在相同时间片内,在各个进程之间的轮转调度的方式。
基于优先级的调度算法
为每个进程定义一个优先级,优先级越高的进程,将优先获取处理机的调度。(这个算法可以和上面的时间片轮转方法结合使用,相互完善)
静态优先级:一旦确定,则进程运行期间优先级一直不改变。
动态优先级:系统首先赋予进程一个初始优先级,该优先级将随着进程的运行而改变。(剩余时间最短者优先,响应比高者优先)
剩余时间最短者优先:进程的剩余时间越短,优先级越高
响应比高者优先:进程(预期执行时间)越长,优先级越低;而随着进程的等待时间越长,优先级越高
反馈调度算法
反馈调度算法是一种根据进程执行历史调整调度方式调度方法,它结合了时间片轮转调度思想。
调度顺序:首先将进程放到第一个就绪队列中。如果在这个队列中无法完成进程,将进程移动到下一个就绪队列中,等待执行。
问题:为什么要在不同的队列中设置不同的时间片?
因为,没有在上一级队里中完成的进程,说明它的需要运行的时间比较多。我们将它放到下一级队列中,并提供较大的时间片,这样可以减少处理机内存的换进换出,提高系统效率。
问题:当一个进程运行完毕后,需要从哪里调用新的进程?
从第一个就绪队列中,调用新的进程。调用新的进程的时候,我们选择优先级高的进程先调用。