当前位置: 首页 > news >正文

CPU、进程、线程上下文切换

参考:5.1 进程、线程基础知识 | 小林coding | Java面试学习

程序计数器

存储 CPU 正在执行的指令位置、或者即将执行的下一条指令位置。

CPU寄存器

位于CPU核心内部存储单元,用于暂存指令、数据、地址等信息。

CPU缓存

位于CPU和和主内存之间的存储单元,在CPU内部,有L1、L2、L3三级缓存,L1容量最小,速度最快,通常集成在 CPU 核心内部,L2、L3次之。

CPU上下文切换

任务交给CPU运行,那么CPU需要知道任务从哪里加载、从哪里开始运行,所以操作系统需要事先帮CPU设置好CPU寄存器、程序计数器。

CPU上下文切换就是把前一个任务的上下文保存到寄存器和计数器,然后加载新的任务。这就包含了进程、线程、中断。

进程上下文切换

进程是由内核管理和调度的,所以进程的切换只能发生在内核态

进程上下文切换场景

  • 当某个进程的时间片耗尽,进程就从运行状态变为就绪状态,系统从就绪队列选择另外一个进程运行;
  • 进程在系统资源不足(比如内存不足)时,要等到资源满足后才可以运行,这个时候当前进程会被挂起,并由系统调度其他进程运行;
  • 当进程通过睡眠函数sleep这样的方法将自己主动挂起时,自然也会重新调度;
  • 当有优先级更高的进程运行时,为了保证高优先级进程的运行,当前进程会被挂起,由高优先级进程来运行;
  • 发生硬件中断时,CPU上的进程会被中断挂起,转而执行内核中的中断服务程序;

线程上下文切换

同一个进程内有多个线程,有共享内存和全局变量等资源,每个线程也有自己的寄存器和栈存放私有数据,各个线程可以并发执行。线程是CPU调度的基本单位,进程是资源分配的基本单位。

  • 当两个线程不属于同一个进程,则切换的过程就跟进程上下文切换一样;
  • 当两个线程属于同一个进程,因为虚拟内存是共享的,所以在切换时,虚拟内存这些资源就保持不动,只需要切换线程的私有数据、寄存器等不共享的数据;
http://www.dtcms.com/a/355577.html

相关文章:

  • 使用Rag 命中用户feedback提升triage agent 准确率
  • 特斯拉 Tesla FSD 12.6.4,FSD14, VLA 和 华为 ADS 4.0 比较
  • 广东省省考备考(第八十九天8.28)——判断推理(第九节课)
  • 智能客服多智能体(知识库问答+情绪感知+工单路由)
  • 玄机靶场 | 第九章-blueteam 的小心思3
  • openEuler中LVM调整实现home与root分区空间平衡
  • LeetCode 3446. 按对角线进行矩阵排序
  • Linux部分底层机制
  • 【每天一个知识点】云存储(Cloud Storage)
  • 从混沌到有序:工作流设计的创作迷思与破局之道
  • AI智能农业监测系统深度解读:从大田作物管理到病虫害预警,破解传统农业增产难题
  • 大模型私有化部署
  • RAG概念被误用:AI应用落地需回归上下文工程本质
  • leetcode算法day22
  • kotlin中关于协程的使用
  • 陕西风味马卡龙:家常自制,特色甜趣共享
  • 传输层协议介绍
  • 结构化提示词革命:JSON Prompting如何让AI输出精准如激光
  • 数字化生产管理系统 (MES)
  • 服务器核心组件:CPU 与 GPU 的核心区别、应用场景、协同工作
  • 揭开.NET Core 中 ToList () 与 ToArray () 的面纱:从原理到抉择
  • ansible常用命令的简单练习
  • Linux系统 -- 多线程的控制(互斥与同步)
  • 数学思维好题(冯哈伯公式)-平方根下取整求和
  • 个人博客运行3个月记录
  • 了解ADS中信号和电源完整性的S参数因果关系
  • Typora 教程:从零开始掌握 Markdown 高效写作
  • MySQL事务ACID特性
  • JavaScript中的BOM,DOM和事件
  • 英语单词:ad-hoc