【计算机操作系统-内存管理】进程切换与线程切换的区别是什么?会保存什么信息呢?

首先先来理解一下什么是进程切换?线程切换?

无论是在多核还是单核系统中,一个CPU看上去都像是在并发的执行多个进程,这是通过处理器在进程间切换来实现的。

  • 操作系统实现这种交错执行的机制称为上下文切换;
  • 操作系统保持跟踪 进程运行所需要的状态信息,这种状态,就是上下文。

在任何一个时刻,单处理器系统都只能执行一个进程的代码。

当操作系统决定要把控制权从当前进程转移到某个新进程时,就会进行上下文切换,即保存当前进程的上下文,恢复新进程的上下文,然后将控制权传递到新进程,新进程就会从上次停止的地方开始.

再来理解一下什么是上下文切换?

内核为每一个进程维持一个上下文。**上下文就是内核重新启动一个被抢占的线程所需的状态。**包括以下内容:

  • 通用目的寄存器
  • 浮点寄存器
  • 状态寄存器
  • 程序计数器:存储下一条将要执行的指令
  • 用户栈
  • 内核栈
  • 各种内核数据结构:比如描绘地址空间的页表,包含有关当前进程信息的进程表,以及包含进程已打开文件的信息的文件表。

在进行进程切换时,涉及当前执行进程 CPU 环境的保存新调度进程 CPU 环境的设置,而线程切换时只需保存和设置少量寄存器内容,开销很小。

那么线程切换和进程切换有什么区别呢?

每个进程都有自己的虚拟地址空间,进程内的所有线程共享进程的虚拟地址空间。那么其中最主要的一个区别在于进程切换涉及虚拟地址空间的切换而线程不会。

那么为什么虚拟地址空间切换会比较耗时呢?

因为进程有自己的虚拟地址空间,把虚拟地址转换为物理地址需要查找表,页表查找很慢,所以通过有个cache就是TLB。

那么显然每个进程都有自己的页表,那么当进程切换后页表也要进行切换,页表切换后TLB就失效了。所以线程切换要比进程切换要大。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值