外阴长水泡是什么原因| 饮食男女是什么意思| 12月18日什么星座| 胆囊炎不能吃什么| 为什么叫太平间| 洋葱炒什么菜好吃| 猫不能吃什么东西| b型和ab型生的孩子是什么血型| 晚上喝红酒有什么好处和坏处| 腺苷是什么| 鼻窦炎吃什么抗生素| 三个龙念什么| 李逵属什么生肖| 帮凶是什么意思| 子宫粘连是什么原因造成的| 枸杞加红枣泡水喝有什么功效| 红脸关公代表什么意思| 左侧后背疼是什么原因男性| 6月17号什么星座| 肝病不能吃什么| 梦见洗鞋子是什么意思| 美容行业五行属什么| 怀孕天数从什么时候算起| 同比什么意思| 染发膏用什么能洗掉| 一见钟情是什么感觉| 医学影像技术是什么| 更年期有什么症状| 麒麟到了北极会变成什么| 荷叶又什么又什么| 如是是什么意思| 法身是什么意思| 韩国买什么东西划算| 雷达是什么| 外冷内热是什么症状| 16年是什么年| 血糖高挂什么科| 医院建档是什么意思| 手发麻是什么原因| 山水有相逢是什么意思| 肠胃胀气吃什么药| 剖腹产后吃什么| vera是什么意思| 肾结石检查什么项目| 食少便溏是什么意思| 肠道长息肉是什么原因造成的| 老是觉得口渴是什么原因引起的| 脚酸是什么原因| 啤酒酵母是什么| 四爱是什么意思| 高血压吃什么助勃药好| 儿童喝蜂蜜水有什么好处和坏处| 昊字五行属什么| 组胺过敏是什么意思| 什么是有机磷农药| 1120是什么星座| 什么人不能吃鸡蛋| 头孢是治疗什么病的| 松塔有什么用| 冲喜什么意思| 恶露是什么| 减脂早餐吃什么| 小腿肚子抽筋是什么原因| b端和c端是什么意思| 为什么水不能燃烧| 打完疫苗不能吃什么| 1963年属什么| fc是什么| 卵巢早衰是什么意思| 没有舌苔是什么原因| 经期喝酒会有什么危害| 婴儿老是放屁是什么原因| 香港车牌号是什么样子| 女性体寒 吃什么好| 小针刀是什么| 为什么一同房就有炎症| 同型半胱氨酸是什么意思| 小鱼缸适合养什么鱼| jnby是什么牌子| 非浅表性胃炎是什么意思| 什么叫情人| 什么鱼嘌呤含量低| 尿频尿不尽吃什么药| 格格不入什么意思| 什么是酸| 吃脆骨有什么好处| 猪肝和什么菜搭配吃好| 睡觉出汗多是什么原因| 记过属于什么处分| giada是什么牌子| 月经期间可以喝什么汤比较好| 眼睛发涩是什么原因导致的| 口头禅什么意思| 什么都不放的冬瓜清汤| 钟是什么生肖| 塞翁失马是什么生肖| 呕吐出血是什么原因| b站是什么| 鸡蛋价格为什么这么低| 第一次表白送什么花| 花雕酒是什么酒| 没晨勃说明什么问题| 感冒什么时候传染性最强| 胰腺炎是什么症状| 凤梨跟菠萝有什么区别| 考试前紧张吃什么药最好能缓解| 胃疼吃什么好| 月经一直不干净吃什么药| 什么是夫妻宫| 顾名思义的顾是什么意思| 息斯敏又叫什么药名| 经常放屁是什么病| 竹节棉是什么面料| 右肺小结节是什么意思| 姓陈取什么名字好听| 白泽是什么神兽| 梦见自己尿裤子了是什么意思| 娃娃鱼是什么动物| 吃什么让月经量增多| 6月25日是什么日子| 手指倒刺是什么原因| 药流后需要注意什么| 精索炎吃什么药最好| 老年阴道炎用什么药| 日抛什么意思| 什么是执念| 肩胛骨缝疼吃什么药| 乙基麦芽酚是什么| 白莲子和红莲子有什么区别| 为什么眼睛会有红血丝| 消炎痛又叫什么| 流产期间吃什么好| 母胎单身什么意思| 包皮手术挂什么科| 军长什么级别| 美业是做什么的| 胸闷气短呼吸困难心慌是什么原因| 格林巴利综合症是什么病| 润肠通便吃什么药| 什么是厌食症| 女人长期做俯卧撑有什么效果| 什么里什么间| 后背痛是什么原因| 鸟牌是什么牌子的衣服| 什么是横纹肌溶解症| 吃什么可以缓解痛经| 什么是鳞状细胞| 10月4号什么星座| 梦见蛇是什么预兆| 怀孕十天左右有什么反应| 膀胱是什么| 小孩脚底脱皮是什么原因造成的| 带状疱疹挂什么科| 社日是什么意思| 一九八三年属什么生肖| 肝胆不好有什么症状有哪些表现| 胆汁酸高是什么原因| 蜜獾为什么什么都不怕| 七月五号是什么星座| 手腕疼痛是什么原因| 吃亚麻籽有什么好处| 蓬灰是什么东西| hpv81阳性是什么意思| 1985年什么命| 分销是什么意思| 舌头有裂纹是什么病| 月经推迟量少是什么原因| b型钠尿肽高说明什么| 令人唏嘘是什么意思| 脂肪肝轻度是什么意思| 阴性什么意思| 杏林春暖的杏林指什么| 入职是什么意思| 泡蛇酒用什么药材最好| 桑葚泡水喝有什么功效| 老爷是什么意思| 小狗的耳朵像什么| 白蚁吃什么| gg是什么品牌| 地球属于什么星系| 阳光是什么颜色| 为什么崴脚了休息一晚脚更疼| 眼睛流泪用什么药| 云什么什么什么| 海带和什么相克| 2001年属蛇五行属什么| 吃完香蕉不能吃什么| 泻立停又叫什么名字| 海员是干什么的| 天神是什么意思| 胃出血有什么症状| 肚脐下面是什么部位| 绿得什么| 舌头裂缝是什么原因| 辣椒是什么生肖| 抓兔子的狗叫什么名字| 银饰发黑是什么原因| 强迫症有什么症状| 蜜蜂蛰了用什么药| 腋毛癣用什么药膏最好| 月子吃什么| 经警是做什么的| 墨镜偏光是什么意思| 三月27号是什么星座| 钙化斑是什么意思| 理疗和按摩有什么区别| 出家当和尚有什么要求| 戌怎么读音是什么| 喝酒后胃疼吃什么药| 什么是烂尾楼| 首鼠两端什么意思| 声泪俱下是什么意思| 抹布什么意思| 1961年属什么| 失眠吃什么中药调理效果快| 孀居是什么意思| 女人吃山竹有什么好处| 胃疼可以吃什么水果| 性功能减退吃什么药好| 遐想的意思是什么| 阴道炎用什么药最好| 狗拉稀吃什么药| 卵巢囊肿是什么原因引起的| 灰指甲有什么症状| 继女是什么意思| 类风湿为什么反复发烧| 为什么会胃胀气| 坐骨神经痛用什么药最好| 江西有什么景点| 间质瘤是什么性质的瘤| 为什么射不出来| am是什么| 人到无求品自高什么意思| 营养师属于什么专业| er什么意思| 软糯什么意思| 驴友是什么意思| 耐药是什么意思| 后背发痒是什么原因| 善罢甘休的意思是什么| 日本人为什么长寿| 琨字五行属什么| 89年属蛇是什么命| 女人的秘密是什么| 生男生女取决于什么| 眼睛不好吃什么补眼睛| 豆芽菜是什么意思| yair是什么牌子的空调| ccg是什么意思| 脚趾头麻木是什么原因引起的| 布克兄弟什么档次| 金价下跌意味着什么| 男人吃洋葱有什么好处| 痛风石是什么| 枧水是什么| 小便分叉是什么症状| 腾蛇是什么意思| 榧读什么| px是什么单位| 2月16号是什么星座| 女人吃什么补气血| 六畜大宝在农家是什么生肖| 幼小衔接是什么意思| 4月10号什么星座| 百度

测试驿栈-由浅入深学性能 CPU 上下文切换详解

飞天小子的性能课堂 · 2025-08-05 · 最后由 尼古拉斯范四 回复于 2025-08-05 · 7414 次阅读

什么是上下文

百度 党的十九大报告强调保持土地承包关系稳定并长久不变,明确第二轮土地承包到期后再延长30年。

CPU 在运行每个任务之前,都必须知道任务从哪里加载以及哪里开始运行。这些都依赖于系统事先帮它设置好的寄存器和计数器
寄存器
CPU 内置的容量很小,但速度极快的内存空间
计数器
用来存储 CPU 正在运行的任务位置以及即将运行的下一个任务的位置。

寄存器与计数器都是 CPU 在运行任务前必须依赖的环境,也被叫做 CPU 上下文

什么是上下文切换

所谓的上下文切换,就是把上一个任务的寄存器和计数器保存起来,然后加载新任务的寄存器和计数器,最后跳转到新任务的位置开始执行新任务。
CPU 上下文全部存储在系统内核空间里

有哪些上下文切换

1.系统调用上下文切换

linux 进程既可以在用户空间运行,又可以在内核空间中运行。
当它在用户空间运行时,被称为进程的用户态;当它进入进入内核空间的时候,被称为进程的内核态
从用户态到内核态的转变过程,需要通过系统调用来完成
CPU 寄存器里原来的指令位置是在用户态。但是为了执行内核态代码,需要先把用户态的位置保存起来,然后寄存器更新为内核态指令的新位置。最后跳转到内核态运行内核任务。

当系统调用结束后,CPU 寄存器需要恢复原来保存的用户态位置,然后再切换到用户空间,继续运行进程。一次系统调用发生了两次 CPU 上下文切换!

系统调用过程中对用户态的资源没有任何影响,也不会切换进程,所以也称为特权模式切换

2.进程上下文切换

进程是由内核来管理和调度的,所以进程的切换只发生在内核态。进程的上下文不仅包括了虚拟内存、栈、全局变量等用户空间的资源,还包括了内核堆栈、寄存器等内核空间的状态。

进程的上下文切换在保存当前进程的内核状态和 CPU 寄存器之前,需要先把该进程的虚拟内存、栈等保存下来;而加载了下一进程的内核态后再刷新进程的虚拟内存映射关系和用户栈,刷新虚拟内存映射就涉及到 TLB 快表 (虚拟地址缓存),因此会影响内存的访问速度。

单次进程上下文切换的 CPU 时间在几十纳秒到数微秒之间。特别是在进程上下文切换次数较多的情况下,很容易导致 CPU 将大量时间耗费在寄存器、内核栈以及虚拟内存等资源的保存和恢复上,进而影响 cpu 的实际使用率。

进程上下文切换的原因
其一,为了保证所有进程可以得到公平调度,CPU 时间被划分为一段段的时间片,这些时间片再被轮流分配给各个进程。这样,当某个进程的时间片耗尽了,就会被系统挂起,切换到其它正在等待 CPU 的进程运行。(被动切换)
其二,进程在系统资源不足,这个时候进程也会被挂起,并由系统调度其他进程运行。(主动切换)
其三,当进程通过睡眠函数 sleep 这样的方法将自己主动挂起时,自然也会重新调度。
其四,当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行。
第五,发生硬件中断时,CPU 上的进程会被中断挂起,转而执行内核中的中断服务程序。

3.线程上下文切换

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

线程的上下文切换分为两种
1.前后两个线程属于不同进程。此时,因为资源不共享,所以切换过程就跟进程上下文切换是一样。
2.前后两个线程属于同一个进程。此时,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据

中断上下文切换
为了快速响应硬件的事件,中断处理会打断进程的正常调度和执行,转而调用中断处理程序,响应设备事件。而在打断其他进程时,就需要将进程当前的状态保存下来,这样在中断结束后,进程仍然可以从原来的状态恢复运行。

跟进程上下文不同,中断上下文切换并不涉及到进程的用户态。中断上下文只包括内核态中断服务程序执行所必需的状态,包括 CPU 寄存器、内核堆栈、硬件中断参数等

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 2 条回复 时间 点赞

就现在的硬件性能来说,还有必要纠结这个东西么?或者说这个东西对性能影响很大?

看业务场景是怎么样的,我们这边涉及很多 CPU 密集型的任务,特别是在云原生环境下的 CPU 密集型任务, 了解 CPU 切换和 CPU 调度,能大大提高性能

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
胃酸反流是什么原因造成 什么情况下会感染hpv病毒 梦见钓鱼是什么意思周公解梦 接吻有什么好处 ao是什么
脚心发麻是什么原因引起的 凌晨4点是什么时辰 睾丸痒是什么原因 什么叫布施 慢性宫颈炎吃什么药
盍是什么意思 下嘴唇有痣代表什么 片是什么 维生素c高是什么原因 吃什么东西能变白
小腿肿胀是什么原因引起的 维生素C起什么作用 痛风能喝什么酒 什么叫免疫力 什么是荨麻疹
疯狂动物城树懒叫什么hcv9jop4ns2r.cn cb是什么0735v.com 同房肚子痛是什么原因hcv7jop5ns3r.cn 马牛羊鸡犬豕中的豕指的是什么hcv8jop2ns5r.cn 投诉与举报有什么区别hcv9jop5ns8r.cn
士官是什么级别hcv8jop9ns8r.cn 干细胞是什么东西hcv7jop5ns1r.cn 女人喝甘草水有什么好处youbangsi.com 泰山石敢当什么意思tiangongnft.com 梦见自己儿子死了是什么意思xinjiangjialails.com
手抖是什么病的预兆hcv9jop1ns1r.cn 眉头长痘痘是因为什么原因引起的hcv8jop6ns8r.cn 七什么什么什么成语shenchushe.com 指甲上有竖条纹是什么原因hcv9jop1ns6r.cn 民间故事有什么creativexi.com
最毒妇人心是什么意思hcv8jop4ns4r.cn 3月27日什么星座hcv9jop2ns0r.cn 树懒是什么动物hcv8jop9ns4r.cn 暴发火眼吃什么药hcv9jop3ns9r.cn 牛油果核有什么用hcv8jop6ns1r.cn
百度