Linux:经常说的 CPU 上下文切换是什么意思?

本文详细解析了Linux中的CPU上下文切换,包括进程上下文切换、线程上下文切换和中断上下文切换。指出上下文切换可能导致系统负载升高,并介绍了如何使用vmstat和pidstat工具监测上下文切换情况。
摘要由CSDN通过智能技术生成

进程在竞争 CPU 的时候并没有真正运行,为什么还会导致系统的负载升高呢?CPU 上下文切换就是罪魁祸首

Linux 是一个多任务操作系统,它支持远大于 CPU 数量的任务同时运行。当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短的时间内,将 CPU 轮流分配给它们,造成多任务同时运行的错觉

在每个任务运行前,系统事先帮它设置好 CPU 寄存器和程序计数器(Program Counter,PC)

  • CPU 寄存器,是 CPU 内置的容量小、但速度极快的内存。
  • 程序计数器,则是用来存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置

它们都是 CPU 在运行任何任务前,必须的依赖环境,因此也被叫做 CPU 上下文。​ img
CPU 上下文切换,就是先把前一个任务的 CPU 上下文(也就是 CPU 寄存器和程序计数器)保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务

而这些保存下来的上下文,会存储在系统内核中,并在任务重新调度执行时再次加载进来。这样就能保证任务原来的状态不受影响,让任务看起来还是连续运行。

中断、进程和线程正是最常见的任务。

根据任务的不同,CPU 的上下文切换就可以分为几个不同的场景,也就是进程上下文切换线程上下文切换以及中断上下文切换

进程上下文切换

Linux 按照特权等级,把进程的运行空间分为内核空间用户空间,分别对应着下图中, CPU 特权等级的 Ring 0Ring 3。​ img

  • 内核空间(Ring 0)具有最高权限,可以直接访问所有资源
  • 用户空间&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

WEL测试

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

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

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

打赏作者

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

抵扣说明:

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

余额充值