为什么切换线程比切换进程开销小

本文详细解释了进程和线程的概念及其区别。进程是正在执行的程序实例,包含多个资源状态;而线程则是进程中的独立执行单元,拥有较简单的上下文。文章还对比了进程与线程上下文切换的开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要明白进程是什么:

  关于进程的定义有很多,一个经典的定义是一个执行中程序的实例,进程是程序的动态表现。  一个程序进行起来后,会使用很多资源,比如使用寄存器,内存,文件等。每当切换进程时,必须要考虑保存当前进程的状态。状态包括存放在内存中的程序的代码和数据,它的栈、通用目的寄存器的内容、程序计数器、环境变量以及打开的文件描述符的集合,这个状态叫做上下文(Context)。可见,想要切换进程,保存的状态还不少。

其次就要了解线程是什么:

  线程存在于进程中,一个进程可以有一个或多个线程。线程是运行在进程上下文中的逻辑流,简单说,线程可以理解为一个方法(Java)或函数(C),这个线程可以独立完成一项任务。同样线程有自己的上下文,包括唯一的整数线程ID, 栈、栈指针、程序计数器、通用目的寄存器和条件码。可以理解为线程上下文是进程上下文的子集

 

由于保存线程的上下文明显比进程的上下文小,因此系统切换线程时,必然开销更小。

 

内容来自CSAPP chapter 8 & 12

  

转载于:https://www.cnblogs.com/yvkm/p/10619001.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值