文章目录

  • 1. 进程控制
    • 1.1 创建进程
    • 1.2 终止进程
    • 1.3 阻塞/唤醒进程
    • 1.4 挂起与激活
    • 1.5 进程切换
  • 2. 进程状态

1. 进程控制

进程控制的主要功能是对系统中的所有进程实施有效的管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。

在操作系统中,一般把进程控制用的程序段称为原语,原语的特点是执行期间不允许中断,它是一个不可分割的基本单位

1.1 创建进程

UNIX中进程为树状层次结构,Windows 下所有进程没有层次结构

允许一个进程创建另一个进程,创建者称为父进程,被创建的进程称为子进程。子进程可以继承父进程所拥有的资源。当子进程被撤销时,应将其从父进程那里获得的资源归还给父进程。在撤销父进程时,也必须同时撤销它的所有子进程。

在操作系统中,终端用户登录系统、作业调度、系统提供服务、用户程序的应用请求等都会引起进程的创建。

创建原语的执行过程如下:

  1. 为新进程分配一个唯一的进程标识号,并申请一个空白的 PCB(PCB是有限的)。若 PCB 申请失败,则进程创建失败;
  2. 为进程分配资源,为新进程的程序和数据、以及用户栈分配必要的内存空间(在 PCB 中体现)。这里如果资源不足(比如内存空间),并不是创建失败,而是处于阻塞状态,等待相关资源;
  3. 初始化 PCB,主要包括初始化标志信息、初始化处理机状态信息和初始化处理机控制信息,以及设置进程的优先级等;
  4. 如果进程就绪队列能够接纳新进程,就将新进程插入到就绪队列,等待被调度运行。

1.2 终止进程

进入终止状态的进程以后不能再执行,但在操作系统中保存状态码和一些计时统计数据供其他进程收集。

引起进程终止的事件主要有:

  • 正常结束:进程的任务已经完成,并准备退出运行;
  • 异常结束:进程在运行时,发生了某种异常事件,使程序无法继续运行,如存储区越界、非法指令、特权指令出错、I/O 故障等;
  • 外界干预:进程响应外界的请求而终止运行,如操作员或操作系统干预、父进程请求和父进程终止。

撤销原语的执行过程如下:

  1. 根据被终止进程的标识符,检索 PCB,从中读出该进程的状态;
  2. 若被终止进程处于执行状态,立即终止该进程的执行,将处理机资源分配给其他进程;
  3. 若该进程还有子进程,则应将其所有子进程终止;
  4. 将该进程所拥有的全部资源,或归还给其父进程或归还给操作系统;
  5. 将该 PCB 从所在队列(链表)中删除。

1.3 阻塞/唤醒进程

正在执行的进程,由于需要的某些事件未发生,如请求系统资源失败、等待某种操作的完成、新数据尚未到达或等待新任务的到达等,则由系统自动执行阻塞原语,使自己由运行状态变为阻塞状态。进程的阻塞是进程自身的一种主动行为,只有处于运行状态的进程,才可能将其转为阻塞状态。

阻塞原语(Block)的执行过程如下:

  1. 找到将要被阻塞进程的标识号对应的 PCB;
  2. 若该进程为运行状态,则保护其现场,将其状态转为阻塞状态,停止运行;
  3. 将该 PCB 插入到相应事件的等待队列中去。

当被阻塞进程所需要的事件发生时,如 I/O 操作已完成或其所需要的数据已到达,则由相关进程(例如,提供数据的进程)执行唤醒原语,将等待该事件的进程唤醒。进程的唤醒是一种被动行为,需要其他进程触发。

唤醒原语(Wakeup)的执行过程如下:

  1. 在该事件的等待队列中找到相应进程的 PCB;
  2. 将其从等待队列中移出,并置为就绪状态;
  3. 把该 PCB 插入就绪队列中,等待调度程序调度。

阻塞/唤醒是一对作用刚好相反的原语,必须成对使用。阻塞原语是由被阻塞进程自我调用实现的,而唤醒原语则是由一个与被唤醒进程相合作或被其他相关的进程调用实现的。

1.4 挂起与激活

出于用户观察需要,进程可以执行挂起激活两种操作。挂起是将活跃状态转为挂起状态,使进程不再被系统调用;激活是将挂起状态转为活跃状态。

进程挂起的几种情况:

  • 终端用户的需要:当终端用户在运行程序期间发现有可疑问题,希望暂停程序的运行以便研究其执行情况或做一定的修改;
  • 父进程请求
  • 符合调节的需要
  • 操作系统的需要:有时希望挂起某些进程以便检查运行中的资源使用情况或进行记账。

挂起原语(Suspend)的执行过程如下:

  1. 检查被挂起的进程的状态;
  2. 若是活动就绪状态,便将其改成挂起就绪;若是活动阻塞状态,便将其改成挂起阻塞;
  3. 为方便用户或父进程考察该进程的运行情况,把该进程的 PCB 复制到某指定的内存区域;
  4. 若被挂起的进程正在执行,则转向调度程序重新调度。

激活原语(Active)的执行过程如下:

  1. 将进程从外存调入内存,检查该进程的现行状态;
  2. 若是挂起就绪,便将其改为活动就绪;若是挂起阻塞,便将其改为活跃阻塞;
  3. 假如采用的是抢占调度策略,则每当有挂起就绪进程被激活而加入就绪队列时,便检查是否需要重新调度,即由调度程序将被激活的进程和当前进程两者优先级进行比较;
  4. 若被激活进程优先级低,则不必重新调度;若当前进程优先级低,则把处理机分配给被激活的进程。

1.5 进程切换

对于通常的进程,其创建、撤销以及要求由系统设备完成的I/O操作都是利用系统调用而进入内核,再由内核中相应处理程序予以完成的。进程切换同样是在内核的支持下实现的,因此可以说,任何进程都是在操作系统内核的支持下运行的,是与内核紧密相关的。

进程切换是指处理机从一个进程的运行转到另一个进程上运行,这个过程中,进程的运行环境产生了实质性的变化。

进程切换的过程如下:

  1. 保存处理机上下文,包括程序计数器和其他寄存器;
  2. 更新PCB信息;
  3. 把进程的 PCB 移入相应的队列,如就绪、在某事件阻塞等队列;
  4. 选择另一个进程执行,并更新其 PCB;
  5. 更新内存管理的数据结构;
  6. 恢复处理机上下文。

进程切换处理机模式切换是不同的,模式切换时,处理机逻辑上可能还在同一进程中运行。如果进程因中断或异常进入到核心态运行,执行完后又回到用户态刚被中断的程序运行,则操作系统只需恢复进程进入内核时所保存的CPU现场,无需改变当前进程的环境信息。但若要切换进程,当前运行进程改变了,则当前进程的环境信息也需要改变。

2. 进程状态

  • 运行状态:进程正在处理机上运行。在单处理机环境下,每一时刻最多只有一个进程处于运行状态;
  • 就绪状态:进程已处于准备运行的状态,获得了除处理机之外的一切所需资源,一旦得到处理机即可运行。
  • 阻塞状态,又称等待状态:进程正在等待某一事件而暂停运行,如等待某资源为可用(不包括处理机)或等待输入/输出完成。即使处理机空闲,该进程也不能运行。
  • 创建状态:进程正在被创建,尚未转到就绪状态。创建步骤包括:申请空白的 PCB,向 PCB 中填写一些控制和管理信息,系统向进程分配运行时所需的资源。
  • 结束状态:进程正常结束、发生错误或者系统中断退出运行。系统必须首先将进程置为结束状态,再进一步处理资源释放及回收工作。

注意区别就绪状态和等待状态:就绪状态是指进程仅缺少处理机,只要获得处理机资源就立即执行;而等待状态是指进程需要其他资源(除了处理机)或等待某一事件。之所以把处理机和其他资源划分开,是因为在分时系统的时间片轮转机制中,每个进程分到的时间片是若干毫秒。也就是说,进程得到处理机的时间很短且非常频繁,进程在运行过程中实际上是频繁地转换到就绪状态的;而其他资源(如外设)的使用和分配或者某一事件的发生(如I/O操作的完成)对应的时间相对来说很长,进程转换到等待状态的次数也相对较少。这样来看,就绪状态和等待状态是进程生命周期中两个完全不同的状态,需要加以区分。

就绪状态 -> 运行状态:处于就绪状态的进程被调度后,获得处理机资源(分派处理机时间片),进程由就绪状态转换为运行状态。

运行状态 -> 就绪状态:处于运行状态的进程在时间片用完后,不得不让出处理机,进程由运行状态转换为就绪状态。此外,在可剥夺的操作系统中,当有更高优先级的进程就绪时,调度程度将正执行的进程转换为就绪状态,让更高优先级的进程执行。

运行状态 -> 阻塞状态:当进程请求某一资源(如外设)的使用和分配或等待某一事件的发生(如I/O操作的完成)时,它就从运行状态转换为阻塞状态。进程以系统调用的形式请求操作系统提供服务,这是一种特殊的、由运行用户态程序调用操作系统内核过程的形式。

阻塞状态 -> 就绪状态:当进程等待的事件到来时,如I/O操作结束或中断结束时,中断处理程序必须把相应进程的状态由阻塞状态转换为就绪状态。

操作系统——进程的状态与转换相关推荐

  1. 操作系统 ——进程的状态与转换

    1.知识总览 2.进程的状态--三种基本状态 进程是程序的一次执行,在这个执行过程中,有时进程正在被CPU执行,有时又需要等待CPU服务.可见,进程的状态是会有各种变化.为了方便对各个进程的管理,操作 ...

  2. 操作系统——进程的状态及转换

    1.    为什么要分开就绪和阻塞状态 答:因为就绪态只需要等待处理机,而阻塞态可能在等待输入输出,即使分配给处理机也是徒劳,所以两状态图不妥.对于调度进程,只需要等待就绪队列里的进程,因为阻塞状态可 ...

  3. (八)操作系统-进程的状态与转换

    文章目录 一.知识总览 二.进程的状态 1.三种基本状态 1.1 运行态(Running) 1.2 就绪态(Ready) 1.3 阻塞态(Waiting/Blocked) 1.4 小结 2. 另外两种 ...

  4. 操作系统学习笔记-2.1. 2进程的状态与转换

    操作系统学习笔记-2019 王道考研 操作系统-2.1. 2进程的状态与转换 文章目录 2进程的状态与转换 2.1知识概览 2.2进程的状态-三种基本状态 2.3进程的状态-另外两种状态 2.4进程状 ...

  5. 【操作系统复习】进程的状态与转换

    进程的状态与转换 一.进程的状态 二.进程的转换 一.进程的状态 进程是程序的一次执行过程.在这个执行过从中,有时进程正在被CPU处理,有时又需要等待CPU服务,可见 ,进程的状态是会有各种变化.为了 ...

  6. 【操作系统】—进程的状态与转换

    [操作系统]-进程的状态与转换 一.进程的三种基本状态 进程的另外两种状态 三.进程状态的转换

  7. 操作系统之进程的状态和转换详解

    进程的状态和转换 三态模型 一个进程从创建而产生至撤销而消亡的整个生命周期,可以用一组状态加以刻划,根据三态模型,进程的生命周期可分为如下三种进程状态: 1. 运行态(running):占有处理器正在 ...

  8. 【王道操作系统笔记】进程的状态与转换

    进程是程序的一次执行,在执行的过程中,有时进程正在被CPU处理,有时需要等待CPU服务,可见,进程的状态是会有变化的. 进程的状态: 运行态:占有CPU,已经在CPU上运行 在单核处理机环境下,每一时 ...

  9. 系统操作原理:进程的状态和转换(五态模型)

    一.进程的状态和装换 1.1进程的三态模型 按进程在执行过程中的不同情况至少要定义三种状态: 运行(running)态:进程占有处理器正在运行的状态.进程已获得CPU,其程序正在执行.在单处理机系统中 ...

  10. 进程的状态和转换 三态模型和五态模型

    进程的引入 由于早期未配置os的系统和单道批处理系统中程序是顺序执行的,然而这种方式浪费资源.系统资源利用率较低,从而出现了多道批处理系统.内存中可以同时装入多个程序,使其共享资源.并发执行.为了能使 ...

最新文章

  1. Android Studio中RecycerView依赖库加载问题
  2. osg 改变模型贴图
  3. Springmvc案例1----基于spring2.5的採用xml配置
  4. 基础练习 字符串对比
  5. spring第一个小例子(Spring_xjs1)
  6. 將軍苑 - 收藏集 - 掘金
  7. 利用Python随机或暴力生成密码
  8. 【计算几何】FZU Problem 2270 Two Triangles
  9. 两行Python代码实现电影打分与推荐
  10. keeko机器人_机器人零距离,创意搭建编程妙趣多!——瑞云社区开展全国科普日活动...
  11. 一步设置Intellij IDEA 热部署处理方法
  12. 在WCF数据访问中使用缓存提高Winform字段中文显示速度
  13. 【vue】vue中element表格导出为excel表格
  14. 上市只是开端,库客音乐用版权打出组合拳
  15. 山东计算机技校排名,山东技校排名前十 山东有什么好的技校
  16. Mysql 第二章 数据库 DML和DQL
  17. 【spark】RDD-API
  18. jQuery思维导图
  19. Python3端口扫描器
  20. 客户端加JS代码判断复选框是否全选的代码

热门文章

  1. 国内公有云对比(1.5)- 功能篇之青云
  2. 数据在网络中如何传输的
  3. python ffmpeg模块_python 模块之-ffmpeg 中文参数对照表
  4. python新手快速入门教程-10 分钟快速入门 Python3的教程
  5. LCD1602液晶显示屏
  6. 如何在电脑上安装一个Android虚拟机
  7. 单体架构与微服务架构区别
  8. Unity2019安卓平台新手安装设置建议
  9. 一个农村博士的独白:全家为什么只有我读到了博士?
  10. 黑苹果EFI引导启动文件,技嘉Z77P-D3+E3-1230 V2+蓝宝石RX560D+Macos10.15.x(5)