首页
视频
资源
登录
转
CPU上下文切换
3306
人阅读
2020/7/22 14:30
总访问:
2611896
评论:
0
收藏:
0
手机
分类:
linux
![ubuntu](https://img.tnblog.net/arcimg/hb/d4362a6a18e949a29eea9dcdf50612ed.jpg "ubuntu") >#CPU上下文切换 [TOC] tn>**(0)** CPU寄存器,是内置的容量小、但速度极快的内存。而程序计数器,再则是用来存储CPU正在执行的指令位置、或者即将执行的下一条指令。它们都是CPU在运行任何任务前,必须的依赖环境,因此也被叫做CPU上下文。 **(1)**多任务竞争CPU,cpu变换让我的时候进行CPU上下文切换(context switch)。CPU执行任务有3种方式:进程、线程或者硬件通过触发信号导致中断的调用。 **(2)**当切换任务的时候,需要记录任务当前的状态和获取下一任务的信息和地址(指针),这就是上下文的内容。因此,上下文是指某一时间点CPU寄存器(CPU register)和程序计数器(PC)的内容,广义上还包括内存中进程的虚拟地址映射信息。 **(3)**上下文切换的过程: 1.记录当前任务的上下文(即寄存器与计算器等所有的状态) 2.找到新任务的上下文并加载 3.切换到新任务的程序计算器位置,恢复其任务。 **(4)**根据任务的执行形式,相应的上下文切换,有进程上下文切换、线程上下文切换、以及中断上下文切换三类。 **(5)**进程和线程的区别: 进程是资源分配和执行的基本单位;线程是任务调度和运行的基本单位。线程没有资源,进程给指针提供虚拟内存、栈、变量等共享资源,而线程可以共享进程的资源。 进程的上下文切换:是指从一个进程切换到另一个进程。 ------------ tn>1.进程运行态为内核运行态和进程运行态。内核空间态资源包括内核的堆栈、寄存器等;用户空间态资源包括虚拟内存、栈、变量、正文等共享资源,而线程可以共享进程的资源。 ![](https://img.tnblog.net/arcimg/hb/32aed1dd7f14405fba3593b20b981b38.png) ![](https://img.tnblog.net/arcimg/hb/c61871fcebbc4291b52298b21e6cacb9.png) 2.系统调用(软中断)在内核态完成的,进程的切换只能发生在内核态。所以,进程的上下文不仅包括了用户空间的资源,也包括内核空间资源。 3.进程是由内核来管理和调度的,进程的切换只能发生在内核态。所以,进程的上下文不仅包括了用户空间的资源,也包括了内核空间资源。 >4.进程的上下文切换过程: - a.接收到切换信号,挂起进程,记录当前进程的虚拟内存、栈等资源存储; - b.将这个进程在CPU中的状态存储起来; - c.然后在内存中检索下一个进程的上下文 - d.并将其加载到CPU的寄存器中恢复; - e.还需要刷新用户的虚拟内存与用户栈 - f.最后跳转到程序计数器所指向的位置(即跳转到进程被中断时的代码行) ![](https://img.tnblog.net/arcimg/hb/dec69d68f60f44c58e6ffc9aaf73145e.png) >5.具体如何触发进程上下文切换的场景,可以通过下面几个点进行触发: - 根据调度策略,将CPU时间划片为对应的时间片,当时间片耗尽,当前进程必须挂起。 - 资源不足,在获取到足够资源之前进程挂起。 - 进程sleep挂起进程。 - 高优先级进程导致当前进度挂起 - 硬件中断,导致当前进程挂起 线程上下文切换 ------------ >- 不通过进程之间的线程上下文切换,其过程和进程上下文切换大致相同。 - 进程内部的线程上下文切换。不需要切换进程的用户资源,只需要切换线程私有的数据和寄存器等。这会比进程上下文进程切换消耗的资源少,所以多线程比多进程的更有优势。 中断上下文切换 ------------ >快速响应硬件的事件,中断处理会打断进程正常的调度与执行,同一CPU内硬件中断优先级高于进程,切换过程类似于系统调用的时候,不涉及到用户运行态资源。但大量的中断上下文切换同样可能引发性能问题。 其他 ------------ >(1)系统调用属于同进程内的CPU上下文切换; (2)分别是CPU用来存储指令和下一条要执行指令的寄存器
欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739
👈{{preArticle.title}}
👉{{nextArticle.title}}
评价
{{titleitem}}
{{titleitem}}
{{item.content}}
{{titleitem}}
{{titleitem}}
{{item.content}}
尘叶心繁
这一世以无限游戏为使命!
博主信息
排名
6
文章
6
粉丝
16
评论
8
文章类别
.net后台框架
168篇
linux
17篇
linux中cve
1篇
windows中cve
0篇
资源分享
10篇
Win32
3篇
前端
28篇
传说中的c
4篇
Xamarin
9篇
docker
15篇
容器编排
101篇
grpc
4篇
Go
15篇
yaml模板
1篇
理论
2篇
更多
Sqlserver
4篇
云产品
39篇
git
3篇
Unity
1篇
考证
2篇
RabbitMq
23篇
Harbor
1篇
Ansible
8篇
Jenkins
17篇
Vue
1篇
Ids4
18篇
istio
1篇
架构
2篇
网络
7篇
windbg
4篇
AI
18篇
threejs
2篇
人物
1篇
嵌入式
2篇
python
13篇
HuggingFace
8篇
pytorch
9篇
opencv
6篇
Halcon
1篇
最新文章
最新评价
{{item.articleTitle}}
{{item.blogName}}
:
{{item.content}}
关于我们
ICP备案 :
渝ICP备18016597号-1
网站信息:
2018-2024
TNBLOG.NET
技术交流:
群号656732739
联系我们:
contact@tnblog.net
欢迎加群
欢迎加群交流技术