进程描述和控制
-
进程:一个正在执行的程序/一个正在计算机上执行的程序实例/能分配给处理器并由处理器执行的实体/由一组执行指令,一个当前状态和一组相关的系统资源表征的活动单元。
-
进程:一组元素组成的实体,程序代码和与其关联的数据集是两个基本元素。
-
PCB(进程控制块):由OS创建和控制(进程标识/状态/控制信息)。以下是部分比较重要的信息
- 标识符
- 状态
- 优先级:相对于其他进程的优先顺序
- 程序计数器:程序中即将执行的下一条指令的地址
- 内存指针:包括程序代码和进程相关数据的指针,以及与其他进程共享内存块的指针。
- 上下文数据:进程执行时处理器的寄存器中的数据。(条件码)
- I/O状态信息:显式I/O请求/分配给进程的设备和被进程使用的文件列表等
- 记账信息:处理器时间总和/使用时钟数总和/时间限制/记帐号等
PCB是OS中最重要的数据结构,OS中每个模块(调度/资源分配/中断等)都能读取和修改它们。
-
进程的创建:程序不在内存中,还未分配所需数据所需空间,pcb在内存进程表中
为新进程分配一个唯一的进程标识符(此时主进程表中会添加一个新表项,每个进程一个)→为进程分配空间(包括进程映像中的所有元素,故必须提前知道私有用户地址空间(程序和数据)和用户栈需要多少,根据情况进行初始化。最后还必须为pcb分配空间)→
-
进程终止
-
无状态模型:(处理器以轮转的方式-依次给队列中每个进程一定执行时间-的方式操作)
运行→就绪:时间片到了/被高优先级的抢占/自愿释放对处理器的控制(周期性记账和维护的后台进程)
-
被挂起的进程:被转移到磁盘中并释放原本占用的内存空间。通过代理将其挂起,代理可以是进程本身,也可以是父进程或操作系统。除非代理显式地命令系统进行状态转换,否则无法从这一状态转移
-
OS控制结构:
注意其中进程控制块的内容在前面专门讲pcb的地方讲解过,要求掌握。 -
执行模式:分两种,为了保护OS内部重要信息不受程序干扰(安全)
-
用户模式
-
系统模式/控制模式/内核模式
-
-
进程切换(不同于模式切换)某时刻操作系统中断一个正在运行的进程并将另一个置为运行模式,转交控制权
-
系统中断:中断/陷阱
- 中断(与当前正运行进程无关的某种外部事件相关,如完成一次I/O)
- 处理方法:控制权交给中断处理器,完成基本工作后再交给已发生的特定中断相关的操作例程
- 处理方法:控制权交给中断处理器,完成基本工作后再交给已发生的特定中断相关的操作例程
- 陷阱(和当前运行进程的错误有关):根据是否致命决定是切换进程还是通知用户修复
- 中断(与当前正运行进程无关的某种外部事件相关,如完成一次I/O)
-
系统调用:来自正在执行的程序,显示请求某个指令
-
中断处理器:将程序计数器置为中断处理程序的开始地址/
-
-
进程切换的步骤
-
模式切换:用户模式与内核模式之间的切换。(进程切换必须在内核模式下进行)
-
模式切换可在不改变运行态进程状态(有一些中断/异常不会引起进程状态转换,不会引起进程切换,只是在处理完成后把控制权交还给被中断进程)的情况下发生,此时保存上下文并在以后恢复上下文需要的开销很少。但若当前正运行进程将转换为另一种状态(就绪(如时钟中断)、阻塞(如系统调用)等),则操作系统必须让环境产生实质性的变化(处理完成后控制权变更)
-
处理器在取值前是会检查是否有中断信号出现,无则继续取指,否则:
- 将程序计数器置为中断处理程序的开始地址(中断处理器)
- 从用户模式切换到内核模式,以便中断处理代码包含特权指令(下一条指令自动是中断处理程序)
中断处理程序开始保存上下文:处理器状态信息/重置中断出现的标志或指示器/可能发生进程切换
-
-
UNIX SVTR4进程管理
和七模型比多了内核运行和被抢占。用户运行实际上就是原本的运行态。- 一般情况下进程就是在用户模式下运行,当发生进程切换(时钟I/O,时钟中断,系统调用)时发生中断,但是只有内核模式才能处理中断,此时切换到内核运行。驻留在内存中的就绪进程被选择为下一个执行的进程,由内核态调度。
- 当内核完成其任务准备交还控制权给用户程序时就可能出现抢占时机(内核态不可被抢占)。为了分派处理,处于被抢占态的进程和内存中就绪态进程构成了一个队列。
- 进程0:在系统启动时创建。实际上这是预定义的一个数据结构,在启动时刻被加载,是交换进程。
- 进程1:进程0 产生进程1,称做初始进程,进程1 是系统中的所有其他进程的祖先。当新的交互用户登录到系统时,由进程1为该用户创建一个用户进程。随后用户进程可以创建子进程,从而构成一棵分支树,因此,任何应用程序都是由一组相关进程组成的。
-
UNIX进程描述
-
UNIX fork():复制相同的进程映像!