到底什么是上下文切换?

admin 2024年12月29日22:26:54评论6 views字数 1604阅读5分20秒阅读模式

点击上方蓝字谈思实验室

获取更多汽车网络安全资讯

到底什么是上下文切换?
到底什么是上下文切换?

01

概念

Linux 是一个多任务的操作系统,可以同时多个任务并发执行,任务数超过CPU核心数。当然同一时刻在执行的任务数,最多也就只能是CPU核心数,只不过CPU时间片在多个任务之间来回切换罢了。上下文切换就是为了保存任务切换时刻的基本信息,当CPU重新执行任务的时候可以加载上下文信息,从当时退出的位置、状态重新开始执行任务。这里所说的上下文信息,既包括虚拟内存、栈、全局变量等用户态的资源,也包括内核堆栈、寄存器等内核态的资源。

02

上下文包含什么信息

看下图,一个进程的信息包含很多,我觉得可以理解为几个方面:CPU-状态信息 I/O状态信息 父子进程信息等:

  • 进程状态:如就绪、运行、阻塞等,表示进程当前的执行状态。

  • 程序计数器(PC):记录进程下一条指令的地址。

  • 寄存器内容:包括通用寄存器、特殊寄存器等,保存进程切换时的 CPU 状态。

  • 内存管理信息:如页面表、段表、内存限制等,用于管理进程的内存分配。

  • 调度信息:如进程优先级、调度队列中的位置等,用于进程调度。

  • I/O 状态信息:记录进程当前所使用的 I/O 设备、文件描述符等。

  • 进程标识符(PID):唯一标识进程的 ID。

  • 父进程和子进程信息:包括父进程 PID、子进程链表等。

  • 时间信息:如进程的启动时间、CPU 时间片消耗等。

到底什么是上下文切换?

这些信息在内核中是通过结构体存储的,即PCB(Process Control Block)进程控制块,下图只是示意,不包含所有内容,在进程让出CPU的时候,这些上下文信息会保存到内核中,当下次执行的时候再从内核中加载回来。

到底什么是上下文切换?

在Linux源码中是通过结构体task_struct来存储的:

到底什么是上下文切换?

03

上下文切换的类型

--1 进程上下文切换:最经常听到上下文切换,多个进程并发,很好理解。

--2 线程上下文切换:包含了同一个进程内的和不同进程内的,不同进程内的消耗等同于进程上下文切换。

--3 中断上下文切换:因为外设控制器执行速度通常慢于CPU,比如打印一个数据这个时候需要内核调用显示设备,很慢怎么办呢?这个是时候就会触发中断,让CPU先干别的进程,等打印完成了再回来。

分析工具

vmstat:查看整个系统的上下文切换情况

到底什么是上下文切换?

pidstat:查看具体某个进程的上下文切换情况

到底什么是上下文切换?

cswch 表示每秒自愿上下文切换(voluntary context switches)的次数。

nvcswch 表示每秒非自愿上下文切换(non voluntary context switches)的次数。

来源:一口Linux

 end 

到底什么是上下文切换?

 精品活动推荐 

到底什么是上下文切换?
到底什么是上下文切换?
到底什么是上下文切换?

 专业社群 

到底什么是上下文切换?

部分入群专家来自:

新势力车企:

特斯拉、合众新能源-哪吒、理想、极氪、小米、宾理汽车、极越、零跑汽车、阿维塔汽车、智己汽车、小鹏、岚图汽车、蔚来汽车、吉祥汽车、赛力斯......

外资传统主流车企代表:

大众中国、大众酷翼、奥迪汽车、宝马、福特、戴姆勒-奔驰、通用、保时捷、沃尔沃、现代汽车、日产汽车、捷豹路虎、斯堪尼亚......

内资传统主流车企:

吉利汽车、上汽乘用车、长城汽车、上汽大众、长安汽车、北京汽车、东风汽车、广汽、比亚迪、一汽集团、一汽解放、东风商用、上汽商用......

全球领先一级供应商:

博世、大陆集团、联合汽车电子、安波福、采埃孚、科世达、舍弗勒、霍尼韦尔、大疆、日立、哈曼、华为、百度、联想、联发科、普瑞均胜、德赛西威、蜂巢转向、均联智行、武汉光庭、星纪魅族、中车集团、赢彻科技、潍柴集团、地平线、紫光同芯、字节跳动、......

二级供应商(500+以上):

Upstream、ETAS、Synopsys、NXP、TUV、上海软件中心、Deloitte、奇安信、为辰信安、云驰未来、信大捷安、信长城、泽鹿安全、纽创信安、复旦微电子、天融信、奇虎360、中汽中心、中国汽研、上海汽检、软安科技、浙江大学......

人员占比

到底什么是上下文切换?

公司类型占比

到底什么是上下文切换?

原文始发于微信公众号(谈思实验室):到底什么是上下文切换?

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年12月29日22:26:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   到底什么是上下文切换?https://cn-sec.com/archives/3568023.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息