第三讲 进程 & 线程

进程的非正式定义非常简单:进程就是运行中的程序。

程序本身是没有生命周期的,它只是存在磁盘上面的一些指令(也可能是一些静态数据)。是操作系统让这些字节运行起来,让程序发挥作用。

即使可以利用的CPU只有一个,操作系统也支持(伪)并发操作的能力。操作系统将一个单独的CPU变换成多个虚拟的CPU。

进程

操作系统为正在运行的程序提供的抽象,就是所谓的进程(process)。正如我们上面所说的,一个进程只是一个正在运行的程序。在任何时刻,我们都可以清点它在执行过程中访问或影响的系统的不同部分,从而概括一个进程。

所有现代的计算机经常会在同一时间做许多事情。举个例子。先考虑一个网络服务器(阿里巴巴)。从四面八方进入大量网页请求。当一个请求进入时,服务器检查其需要的网页是否在缓存中。如果是,则把网页发送出去。如果不是,则启动一个磁盘请求以获取网页。然而,从CPU角度来看,磁盘请求需要漫长的时间。当等待磁盘请求完成时,其他更多的请求将会进入。如果有多个磁盘存在,会在满足第一个请求之前就接二连三地对其他的磁盘发出一些或所有的请求。很明显,需要一些方法去模拟并控制这种并发。进程(特别是线程)在这里就可以产生作用。

事实表明,人们常常希望同时运行多个程序。比如:在使用计算机或者笔记本的时候,我们会同时运行浏览器、邮件、游戏、音乐播放器,等等。实际上,一个正常的系统可能会有上百个进程同时在运行。如果能实现这样的系统,人们就不需要考虑这个时候哪一个CPU 是可用的,使用起来非常简单。所有的这些活动需要管理,于是一个支持多进程的多道程序系统就很有用了。

在任何多道程序设计系统中,CPU由一个进程快速至另一个进程,使每个进程各运行几十或几百个毫秒。严格地说,在某一个瞬间,CPU只能运行一个进程。但在1秒钟期间,它可能运行多个进程,这样就产生并行的错觉。

makefile 复制代码
并发: 一段时间内,有多个进程在执行。如果时间短, 给人感觉是同时执行。

并行: 一个时刻,有多个进程在执行。

单个CPU、多个CPU都可以实现并发。

单个CPU,没法实现并行。因为在某一个时刻,只能执行一个进程。

为了执行其他程序,CPU必须要做切换。这样在一段短的时间内,可以多个进程在执行,这叫并发。

只有在多个CPU的时候,多核处理器, 就会达到在同一个时刻,有多个进程在执行。这叫并行。

进程的组成

  • 程序的代码;
  • 程序处理的数据;
  • 程序计数器中的值,指示下一条将运行的指令;
  • 一组通用的寄存器的当前值,堆,栈;
  • 一组系统资源(如打开的文件)

进程的特点

  • 动态性:可动态地创建,结果进程;
  • 并发性:进程可以被独立调度并占用处理机运行;(并发:一段,并行:一时刻)
  • 独立性:不同进程的工作不相互影响;(页表是保障措施之一)
  • 制约性:因访问共享数据 / 资源或进程间同步而产生制约。

参考资料

进程线程

进程和线程

Chapter7 进程和线程

进程管理与单处理器调度

相关推荐
李剑一7 小时前
早在八十年代我们就有国产操作系统,但为什么最后还是Windows一统天下,答案藏在时间里
操作系统
Java成神之路-8 小时前
虚拟内存核心精讲:页表、VMA、缺页异常与mmap(单级页表 + 多级页表对照)
操作系统
OpenAnolis小助手3 天前
RISC-V 基础软件的工程化与性能优化实践
性能优化·操作系统·龙蜥社区·risc-v
青梅味猪大肠3 天前
【操作系统-60】临近适应算法
java·linux·开发语言·嵌入式硬件·算法·操作系统
PMAOS7 天前
4G 功能机操作系统选型指南:KaiOS、Mocor、MAUI、PMAOS 的能力边界与验证方法
嵌入式硬件·ai·操作系统
罗四强7 天前
第10篇:打包上架:签名、打包 HAP、发布到华为应用市场
分布式·操作系统·harmonyos·arkts·鸿蒙系统
Liaiyang668 天前
空圈容错视角-HarmonyOS 7 架构体检:从被动容错到主动免疫的真伪验证与生态反推
操作系统·harmonyos·架构设计·ai-agent·端云协同·鸿蒙7·空圈容错
OpenAnolis小助手8 天前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
阿里云基础软件8 天前
Agent 任务提速 10.71%,内存占用降低 21.60%|Alibaba Cloud Linux 4 重大发布
java·linux·人工智能·操作系统·agent
OpenAnolis小助手10 天前
多租户公有云共享 CXL 内存池场景下的内存卸载研究
人工智能·操作系统·龙蜥社区·risc-v·agentic os