台式机&硬件|什么是“进程、线程、协程”?
本文插图
作者 | 头文件
责编 | 王晓曼
来源 | 程序员小灰(ID:chengxuyuanxiaohui)
本文从操作系统原理出发结合代码实践讲解了以下内容:
- 什么是进程 , 线程和协程?
- 它们之间的关系是什么?
- 为什么说Python中的多线程是伪多线程?
- 不同的应用场景该如何选择技术方案?
- ...
当程序需要运行时 , 操作系统将代码和所有静态数据记载到内存和进程的地址空间(每个进程都拥有唯一的地址空间 , 见下图所示)中 , 通过创建和初始化栈(局部变量 , 函数参数和返回地址)、分配堆内存以及与IO相关的任务 , 当前期准备工作完成 , 启动程序 , OS将CPU的控制权转移到新创建的进程 , 进程开始运行 。
本文插图
操作系统对进程的控制和管理通过PCB(Processing Control Block) , PCB通常是系统内存占用区中的一个连续存区 , 它存放着操作系统用于描述进程情况及控制进程运行所需的全部信息(进程标识号,进程状态,进程优先级,文件系统指针以及各个寄存器的内容等) , 进程的PCB是系统感知进程的唯一实体 。
一个进程至少具有5种基本状态:初始态、执行状态、等待(阻塞)状态、就绪状态、终止状态 。
- 初始状态:进程刚被创建 , 由于其他进程正占有CPU所以得不到执行 , 只能处于初始状态 。
- 执行状态:任意时刻处于执行状态的进程只能有一个 。
- 就绪状态:只有处于就绪状态的经过调度才能到执行状态
- 等待状态:进程等待某件事件完成
- 停止状态:进程结束
操作系统对把CPU控制权在不同进程之间交换执行的机制成为上下文切换(context switch) , 即保存当前进程的上下文 , 恢复新进程的上下文 , 然后将CPU控制权转移到新进程 , 新进程就会从上次停止的地方开始 。 因此 , 进程是轮流使用CPU的 , CPU被若干进程共享 , 使用某种调度算法来决定何时停止一个进程 , 并转而为另一个进程提供服务 。
单核CPU双进程的情况
本文插图
进程直接特定的机制和遇到I/O中断的情况下 , 进行上下文切换 , 轮流使用CPU资源
双核CPU双进程的情况
本文插图
每一个进程独占一个CPU核心资源 , 在处理I/O请求的时候 , CPU处于阻塞状态
进程间数据共享 系统中的进程与其他进程共享CPU和主存资源 , 为了更好的管理主存 , 现在系统提供了一种对主存的抽象概念 , 即为虚拟存储器(VM) 。 它是一个抽象的概念 , 它为每一个进程提供了一个假象 , 即每个进程都在独占地使用主存 。
虚拟存储器主要提供了三个能力:
- 将主存看成是一个存储在磁盘上的高速缓存 , 在主存中只保存活动区域 , 并根据需要在磁盘和主存之间来回传送数据 , 通过这种方式 , 更高效地使用主存
推荐阅读
- 智能穿戴|漫步者DreamPods体验:外观精致佩戴舒适降噪是最大惊喜
- 苹果手机,5G手机|苹果也堆硬件?iPhone12配置惊人,安卓将迎来最大挑战
- 苹果手机|苹果也堆硬件?iPhone12配置惊人,安卓将迎来最大挑战
- 中年|希柔专注女性消费市场,助力品牌"C位出道"
- 行业互联网|融创文旅与QG电子竞技俱乐部战略合作,开启"文旅+电竞"新航道
- APP|合规进行时丨关于 “APP & SDK 合规”你应该知道的那些事(第一弹)
- 数字化|腾讯云启&德勤中国强强联合,助力中小企业数字化转型
- 行业互联网|同盾&华为联合亮相中国高速公路信息化大会
- |极速鲨课堂37:主板的灯效会影响散热么?
- 行业互联网,阿里巴巴|新批发助推经济内循环 1688"千星计划"促产业带中小企业在线交易倍增