CPU上下文切换

LINUX任务运行前,CPU都要知道从任务从哪里加载、又从哪里开始运行,也就是说,需要系统事先帮它设置好CPU寄存器和程序计数器
CPU上下文:CPU寄存器和程序计数器
CPU寄存器:
CPU内置容量小、速度极快的内存
程序计数器:
存储CPU正在执行的指令位置、或者即将执行的下一条指令位置

CPU上下文切换-负载升高

把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器,最后在跳转到程序计数器所指的位置
类别:进程上下文切换、线程上下文切换、中断上下文切换
**进程上下文切换:**LINUX按照特权等级,把进程的运行空间分为内核空间和用户空间,分包对应下图,从一个进程切换到另一个进程

LINUX为每个CPU都维护了一个继续队列,将活跃进程(正在运行的进程和正在等待的进程)按照优先级和等待CPU的时间排序,然后选择最需要CPU的进程,也就是优先级最高和等待时间最长的进程来运行

CPU时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其他正在等待CPU的进程运行

进程和线程
线程是调度的基本单位,而进程则是资源拥有的基本单位
所谓内核中的任务调度,实际上的调度是对象是线程;而进程只是给线程提供了虚拟内存、全局变量等资源
(1)当进程只有一个线程,可以认为进程就是线程
(2)当进程有多个线程,这些线程会共享相同的虚拟内存和全局变量等资源,这些资源在上下文切换是不需要修改的
(3)线程也有自己的私有数据,比如栈和寄存器,在上下文切换也需要保存

上下文切换工具vmstat 5

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值