进程,就是一个正在执行的程序,对于进程而言,它分为五个实体部分,分别是:
1、(操作系统OS运行管理程序)数据结构P
2、(运行程序的)内存代码C
3、(运行程序的)内存数据D
4、(运行程序的)通用寄存器R
5、(OS控制程序执行的)程序状态字信息psw
从概念上来说,进程可以基本分为7个状态:
运行态:进程占有处理器运行
就绪态:进程具备运行条件等待处理器运行
阻塞/等待态:进程由于等待资源、输入输出、信号而不具备运行条件
新建态:刚刚创建的进程,操作系统还没有把它加入到可执行进程组中,通常是进程控制块已经创建但还没有加载到内存中的新进程
退出态:操作系统从可执行进程中释放的进程,或者是因为它自身停止了,或是因为某种原因被取消。
阻塞/挂起态:进程在外存中并等待一个事件
就绪/挂起态:进程在外存中,但是只要被载入内存就可以执行
进程状态转换:
导致进程挂起的原因:交换、其他OS原因、交互式用户请求、定时、父进程请求
描述一个进程,首先我们就要提到进程控制块PCB
。
PCB是OS用于记录和刻画进程状态及环境信息的数据结构。也就是进程的第一、第五个实体部分。
借助PCB,OS可以全面的管理进程的物理实体,刻画进程的执行现状,控制进程的执行。
而进程控制块又是由三大典型信息所构成:
进程标识信息
标识信息,用于存放唯一标识该程的信息此进程的标识符(Process ID,简称进程ID)创建这个进程的进程(父进程)标识符用户标识符(User ID,简称用户ID)
进程状态信息
也称现场信息,用于存放该进程运行时的处理器现场信息,包括:用户可见寄存器内容:数据寄存器、地址寄存器控制与状态寄存器内容:PC、IR,PSW栈指针内容:核心栈与用户栈指针
进程控制信息
用于存放于管理、调度进程有关的信息,包括:进程状态(七态)优先级调度相关信息事件:进程在继续执行前等待的事件标识
然而,仅仅是进程控制块还不够,从我们最开始提到的进程的五大实体部分可以看出,进程还有代码以及相关的数据。
这里,我们用进程映像
来表示某一时刻进程的内容及其执行状态集合。
进程映像包含以下内容:
进程控制块:保持进程的标识信息、状态信息和控制信息
进程程序块:进程执行的程序空间
进程数据块:进程处理的数据空间,包括数据、处理函数的用户栈和可修改的内存
程序核心栈:进程在内核模式下运行时使用的堆栈,中断或者系统过程使用
除了进程映像之外,我们还需了解进程的上下文
。
所谓的进程上下文,就是一个进程在执行的时候,CPU的所有寄存器的值、进程的状态以及堆栈上的内容,当内核需要切换到另一个进程时,它需要保存当前进程的所有状态,即保存进程的上下文,以便再次执行该进程时,能恢复切换时的状态,以便继续执行。
它包括以下:
用户级上下文:用户程序块/用户数据区/用户栈/用户共享内存
寄存器上下文:psw/栈指针/通用寄存器
系统级上下文:pcb/内存区表/核心栈
进程创建、进程撤销、进程阻塞、进程唤醒、进程挂起、进程激活
进程创建:进程表加一项,申请PCB并初始化,生成标识,建立映像,分配资源,移入就绪队列
进程撤销:从队列中移除,归还资源,撤销标识,回收PCB,移除进程表项
进程阻塞:保持现场信息,修改PCB,撤销标识,移入等待队列,调度其他进程执行
进程唤醒:等待队列中移出,修改PCB,移入就绪队列(该进程优先级高于运行进程触发抢占)
进程挂起:修改状态并出入相关队列,收回内存等资源送至对换区
进程激活:分配内存,修改状态并出入相关队列
进程切换和模式切换
进程切换
是指从正在运行的进程中回收处理器。让待运行进程来占用处理器运行。
进程切换
的实质就是被中断运行进程与待运行进程的上下文切换
切换过程是:保存被中断进程的上下文转向进程调度恢复待运行进程的上下文
进程切换必须在操作系统内核模式下完成,这就需要模式切换
模式切换
又称为处理器状态切换,包括:
用户模式切换到内核模式 中断/异常/系统调用:中断用户进程执行而触发
内核模式到用户模式 OS执行中断返回指令:将控制权交还用户进程而触发
模式切换的基本工作任务由中断装置完成
正向模式切换:
处理器模式转换为内核模式,保存当前进程的PC/PSW值到核心栈,转向中断/异常/系统调用处理,程序中断返回,指令完成
逆向模式切换:从待运行进程核心栈中弹出PSW/PC值,处理器模式转为用户模式
进程切换的工作流程
(中断/异常等触发)正向模式并压入PSW/PC
保存被中断进程的现场信息
处理具体的中断/异常
把被中断进程的系统堆栈指针SP值保存到PCB
调整被中断进程的PCB信息,如进程状态
把被中断的PCB加入相关队列
选择下一个占用CPU运行的进程
修改被选中进程的PCB信息,如进程状态
设置被选中进程的地址空间,恢复存储管理信息
恢复被选中进程的SP值到处理器寄存器SP
恢复被选中进程的现场信息进入处理器
(中断返回指令触发)逆向模式转换并弹出PSW/PC