进程的状态

三种状态

  • 运行态:该时刻实际占用 CPU 的进程。
  • 就绪态:可运行但还没有被分配时间片。一般在就绪队列中。
  • 阻塞态:除非某种外部事件发生,否则进程无法运行。一般在阻塞队列中。

四种转换关系

  • 运行 -> 阻塞:一般操作系统发现进程因缺少某种条件无法运行下去的时候,发生这种转换。在一些系统中,进程可以执行诸如 pause 的系统调用进入阻塞状态。在 Unix 等系统中,当进程从管道或者设备文件读取数据时,如果没有有效输入,也会自动阻塞。
  • 运行 -> 就绪:一般由于正常进程调度发生这种转换。可能是当前 CPU 上的进程时间片用完了,也可能 CPU 因某种外部事件发生了中断。可以通过 yield 系统调用主动让出 CPU。
  • 就绪 -> 运行:这种转换也一般是正常进程调度导致的。根据进程调度策略决定哪个就绪进程被调度。
  • 阻塞 -> 就绪:当进程等待的外部事件发生时,产生这种转换。一般是通过中断通知阻塞进程转换为就绪状态。

进程的层次结构

Windows

没有层次结构的概念,所有进程的地位都相同。唯一类似进程层次的暗示是创建进程时,父进程会得到一个特别的令牌(句柄),该句柄可以用来控制子进程。但是,父进程有权把句柄送给其它进程。在 Unix 中,这种剥夺继承权的行为是不被允许的。

Unix

进程组

进程和它所有子进程以及后裔共同组成一个进程组。当用户从键盘发出一个信号时,该信号被送到当前与键盘相关的进程组中的所有成员(通常是当前窗口创建的所有活动进程)。每个进程可以分别捕获该信号,忽略该信号或采取某个动作。

Unix 启动时如何初始化

init 进程启动 -> 读入中断数量说明文件 -> init 为每个终端创建一个进程,这个进程等待用户登录 -> 登录成功后启动 shell 进程,等待用户输入命令 -> shell 接收命令启动更多进程。因此,在 Unix 中,所有进程都是属于以 init 为根的一颗进程树。

进程和线程:进程的状态和层次结构相关推荐

  1. python线程进程_python 线程进程

    四 线程死锁和递归锁 在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁,因为系统判断这部分资源都正在使用,所有这两个线程在无外力作用下将一直等待下去.下面 ...

  2. python 多线程和协程结合_一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

  3. 打开线程 | 进程 | 协程的大门

    不知从几何起,可能是大三那年的操作系统考试,也可能是刚经历完的秋招,这些概念总是迷迷糊糊,可能自己回答的和其他人的答复也差不多,并没有什么亮点,通常都会以:「我们换个题」的方式结束,有时候也挺尴尬的. ...

  4. 什么是 “进程、线程、协程”?

    作者 | 头文件 责编 | 王晓曼 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什 ...

  5. 一文讲透 “进程、线程、协程”

    本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同的应用场景该如何选择技术方案? ... 什么是进程 ...

  6. Java多线程之一:进程与线程

    进程与线程 进程 进程是系统中正在运行的一个程序,程序一旦运行就是进程,也可以说进程是受操作系统管理的基本运行单元进. 平时我们打开的任务管理器中看到进程就是启动的程序,如浏览器的打开等等 线程 进程 ...

  7. 操作系统:第二章 进程管理1 - 进程、线程

    本文已收录至 Github(MD-Notes),若博客中图片打不开,可以来我的 Github 仓库,包含了完整图文:https://github.com/HanquanHq/MD-Notes,涵盖了互 ...

  8. js打印线程id_一文讲透“进程,线程和协程”

    一文讲透"进程,线程和协程" 本文从操作系统原理出发结合代码实践讲解了以下内容: 什么是进程,线程和协程? 它们之间的关系是什么? 为什么说Python中的多线程是伪多线程? 不同 ...

  9. 单处理器系统的进程调度_第三章:进程与线程

    第一节:多道程序设计 就是允许多个程序同时进入内存并运行,多道程序设计是操作系统所采用最基本.最重要的技术,其根本目的是提高整个系统的效率.衡量系统效率的尺度是系统吞吐量,所谓系统吞吐量是指单位时间内 ...

  10. 计算机底层:进程与线程。

    进程与线程 进程:    进程是操作系统中的一个基本概念,是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的一个独立单位.(比如:执行了qq.exe,qq.exe就是一进程) ...

最新文章

  1. python中random模块中包含了随机数相关的功能函数_Python中random模块生成随机数详解...
  2. 面向对象编程概念_如何向6岁的孩子解释面向对象的编程概念
  3. JSON 基础解释.
  4. php if require,关于php:required_if Laravel 5验证
  5. 从开源视角分析,搞定边缘计算云原生方案选型
  6. 相同布局在不同手机上显示不同_不懂响应式,不同尺寸屏幕下的页面很难达到最佳效果...
  7. 独立站的优势是什么?独立站注意事项有哪些?
  8. VB中什么是类,类模块有什么作用
  9. PMP 第六版 p25 矩阵图 方便记忆 口诀
  10. 修改HBuilder的livereload添加自定义响应模块
  11. 二、图的遍历——深度优先遍历
  12. SecureCRT免费版下载
  13. Android读取RAM,ROM,SD卡容量
  14. 2017年十本必读的大数据人工智能领域书籍,你都读过吗?
  15. SAP系统用户账号类型介绍
  16. 由浅入深MFC学习摘记--第三部分
  17. 打不开计算机或文件夹,求助:我的电脑文件夹打不开了
  18. request:fail -202:net::ERR_CERT_AUTHORI
  19. 18.sql server横向切分、纵向拆分表、相对平均分配数据、复杂sql语句、数据库存储原理(by-朝夕)
  20. 记录一次租房经历一(1)

热门文章

  1. linux php pear 安装,linux php安装pear
  2. 白糖能放多久 许多人都超关心的问题
  3. jQuery $.ajaxSetup方法
  4. 天津科技大学计算机老师,李孝忠(天津科技大学教师)_百度百科
  5. 据说Jumony Parser是目前对HTML规范支持最好的HTML Parser
  6. 利用粒子群算法求解电力系统无功优化的MATLAB代码,以网损和电压偏差为目标函数
  7. 关于RPC协议的通俗理解
  8. 奇异值分解与特征值分解详解
  9. ssm+java计算机毕业设计猫爪”宠物主网上交流管理系统e5l01(程序+lw+源码+远程部署)
  10. 确认支付9.2亿美元现金:特斯拉偿还可转换债券债务