Loading... # 进程描述和控制 ## 什么是进程 可以把进程视为由一组元素组成的实体,进程的两个基本元素是**程序代码**(program code)和与代码相关联的**数据集**(dataset) 用元素来表征进程: * 标识符(identifier):与进程相关的唯一标识符,用来区分其他进程 * 状态:若进程正在执行,则进程处于运行态 * 优先级:相对于其他进程的优先顺序 * 程序计数器:程序中即将执行的下一条指令 * 内存指针:包括程序代码和进程相关数据的指针,以及与其他进程共享内存块的指针 * 上下文数据(context data):进程执行时处理器的寄存器中的数据 * I/O状态信息:包括显式I/O请求、分配给进程的I/O设备和被进程使用的文件列表 * 记账信息:包括处理器时间总和、使用的时钟数总和、时间限制、记帐号等 上述信息存放在**进程控制块**(process control block) ## 进程状态 ### 两状态进程模型 在任何时刻,进程要么正在执行,要么未执行 ![image-20220315104745563.png](http://xherlock.top/usr/uploads/2022/03/369713312.png) 使用排队图来描述分派器的行为(被中断的进程转移到等待进程队列中,或在进程结束或取消时销毁掉它) ![image-20220315104922540.png](http://xherlock.top/usr/uploads/2022/03/1867187250.png) ### 进程的创建和终止 **进程的创建** 将一个新进程添加到正被管理的进程集时,操作系统需要建立用于管理该进程的数据结构,并在内存中给它分配地址空间 **触发进程创建的事件** * 新的批处理作业 * 交互登录 * 为提供服务而由操作系统创建 * 由现有进程派生(spawn) 一个进程派生另一个进程,前一个为父进程,后一个为子进程 **触发进程终止的事件** * 正常完成 * 超过时限 * 无可用内存 * 超出范围 * 保护错误 * 算术错误 * 时间超出 * I/O失败 * 无效指令 * 特权指令 * 数据误用 * 操作员或操作系统干涉 * 父进程终止 * 父进程请求 ### 五状态模型 1. 运行态running:进程正在执行 2. 就绪态ready:进程做好准备,有机会即开始执行 3. 阻塞态blocked:进程在某些事件发生前不能执行 4. 新建态new:该新建的进程,还未被加入可执行进程组(未加载到内存) 5. 退出态exit:进程自身终止或被取消 ![image-20220315112411750.png](http://xherlock.top/usr/uploads/2022/03/3552908217.png) 两个队列 ![image-20220315114427875.png](http://xherlock.top/usr/uploads/2022/03/2598129676.png) 多个队列 ![image-20220315114526742.png](http://xherlock.top/usr/uploads/2022/03/2776638487.png) ### 被挂起的进程 原因:处理器比I/O活动速度块,会出现内存中所有进程都在等待I/O的现象 解决:**交换**,把内存中某个进程的一部分或全部移到磁盘中$\rightarrow$当内存中不存在就绪态的进程时,操作系统就把被阻塞的进程(阻塞态)换出到磁盘中的挂起队列(suspend queue),就新增了**挂起态** 单挂起态模型 ![image-20220315212328026.png](http://xherlock.top/usr/uploads/2022/03/1209539473.png) 包含两个挂起态的模型 ![image-20220315212354709.png](http://xherlock.top/usr/uploads/2022/03/1765666267.png) **进程挂起原因** * 交换:操作系统需要腾出更多的内存空间以加载更多的就绪进程 * 其他OS原因:OS对可疑进程执行挂起,检测 * 交互式用户请求:用户希望对某个进程进行检查,如程序调试 * 定时:周期执行的程序在下一次执行周期到来前挂起等待执行 * 父进程请求 ## 进程描述 ### 操作系统的控制结构 操作系统为了管理进程和资源,必须掌握每一个的当前状态信息,因此维护四种不同的信息表 * 内存表:跟踪内存和外存 * I/O表:管理I/O设备和通道 * 文件表:提供当前存在文件中的信息 * 进程表:管理进程 ![image-20220315235024882.png](http://xherlock.top/usr/uploads/2022/03/606447297.png) ### 进程控制结构 **程序、数据、栈和属性**的集合称为进程映像(process image) 与每个进程相关的属性集称为`进程控制块`(process control block,PCB),它属于一种**数据结构**,存放了进程的程序段和数据段的位置 <img src="http://xherlock.top/usr/uploads/2022/03/1346432610.png" alt="image-20220326155300843" style="zoom:50%;" style=""> ![1C0944F91647CD2D29A30A7F115CACC2.png](http://xherlock.top/usr/uploads/2022/03/632575816.png) **进程控制块中的信息** * 进程标识符:每个进程都分配了一个唯一的数字标识符 * 处理器状态信息:由处理器寄存器的内容组成。运行一个程序时。进程的信息一定会出现在寄存器中。中断进程时,必须保存该寄存器的所有信息,以便进程恢复执行时可以恢复所有这些信息 * 进程控制信息:是操作系统控制和协调各种活动进程的所需的额外信息 ## 进程控制 ### 执行模式 大多数处理器至少支持两种执行模式:**非特权模式和特权模式** 非特权模式也称用户模式;特权模式也称系统模式、控制模式、内核模式 使用两种模式原因:保护操作系统和重要的操作系统表不受用户程序的干扰(内核模式下,软件会完全控制处理器及其所有指令、寄存器和内存) ### 进程状态 创建一个新进程步骤: 1. 为新进程分配一个唯一的进程标识符 2. 为进程分配空间 3. 初始化进程控制块 4. 设置正确的链接 5. 创建或扩充其他数据结构 ### 进程切换 何时?:可在操作系统从当前正运行进程中获得控制权的任何时刻发生 * 中断(interrupt):时钟中断、I/O中断、内存失效 * 陷阱(trap):错误或异常条件 * 系统调用 最后修改:2022 年 03 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏