进程上下文切换的步骤如下:

  1. 每个线程都对应着一个TCB,TCB中有一个TSS字段,存储着线程对应的内核栈的地址,也就是内核栈的栈顶指针。
  2. 内核栈将当前进程的寄存器信息保存起来,同时保存了被暂停执行的程序的下一条指令,完成了由用户栈到内核栈的切换过程。
  3. 将CPU的字段改为内核态(即R0等级),调用进程上下文切换的处理程序。
  4. 检查PCB中的need_resched标志位,若有效则调用schedule()函数完成进程调度,schedule()会执行以下步骤:
    1. 调用pick_next_task()根据相关调度算法得到下一个待运行的进程。
    2. 调用context_switch()执行以下步骤:
      1. 调用switch_mm()将虚拟内存地址映射到待运行进程,恢复内存管理相关信息
      2. 调用switch_to()保存原来进程的cpu现场信息,恢复待运行进程的cpu现场信息
  5. 当内核方法执行完毕后,会将CPU的字段改为用户态(R3等级),然后利用之前写入的信息来恢复用户方法的执行。

进程上下文切换的步骤相关推荐

  1. Linux中断与进程切换,结合中断上下文切换和进程上下文切换分析Linux内核的一般执行过程...

    @ 实验环境 OS Linux cj-virtual-machine 5.3.0-51-generic 虚拟机 QEMU 内核版本 5.3.4 调式方法 GDB PS:调试环境安装请看上一篇博客汇编级 ...

  2. Linux内核:进程上下文切换

    目录 1.进程上下文的概念 2.上下文切换详细过程 2.1 进程地址空间切换 2.2 处理器状态(硬件上下文)切换 3.ASID机制 4. 普通用户进程.普通用户线程.内核线程切换的差别 5. 进程切 ...

  3. Linux kernel 3.10内核源码分析--进程上下文切换

    一.疑问 进程调度时,当被选中的next进程不是current进程时,需要进行上下文切换. 进行上下文切换时,有一些问题不太容易理解,比如: 1.进程上下文切换必然发生在内核态吗? 2.上下文切换后原 ...

  4. 上下文保存 中断_Linux性能优化(CPU篇)(5)——CPU的上下文切换有几种类型?什么是进程上下文切换?...

    上一篇中讲了stress用来模拟常见压力测试的选项: RobotCode俱乐部:<Linux性能优化实战>之CPU性能篇(四)​zhuanlan.zhihu.com 这一篇的主题是:CPU ...

  5. linux进程上下文切换,Linux 性能分析总结之 CPU 上下文切换(二)

    0x00 前言 上一篇笔记中我讲到了,在寻找 CPU 的性能瓶颈的问题的时候,首先会查看整台机器的平均负载是否高,然后再使用 pidstat 等工具判断到底是哪种情况导致的平均负载升高,主要情况有三种 ...

  6. ucore进程上下文切换关键代码分析

    目录 进程切换关键代码 上下文切换函数定义 上下文切换函数调用 进程上下文切换整体流程 proc_run执行流程 jmp switch_to如何改变了指令控制流程 执行jmp switch_to指令时 ...

  7. mysql上下文切换_进程上下文切换开销

    进程是我们开发同学非常熟悉的概念,我们可能也听说过进程上下文切换开销.那么今天让我们来思考一个问题,究竟一次进程上下文切换会吃掉多少CPU时间呢?线程据说比进程轻量,它的上下文切换会比进程切换节约很多 ...

  8. 浅析Linux守护进程、守护进程的创建步骤

    文章目录 何为守护进程 进程组 / 组长进程 / 会话 / 会话首进程 进程组 会话 程序示例 守护进程的创建步骤 创建守护进程程序示例 何为守护进程 守护进程(daemon)是一类在后台运行的特殊进 ...

  9. 操作系统④-①:进程的状态(并发并行的区别,挂起状态)、进程的控制结构(PCB)、进程的控制(四种)、进程上下文切换(过程及场景))

    1 进程的状态 什么是进程 并发和并行的区别 多个程序.交替执⾏的思想,就是 CPU 管理多个进程的初步想法. 单核的 CPU 在某⼀个瞬间,只能运⾏⼀个进程.但在 1 秒钟期间,它可能会运⾏多个进程 ...

最新文章

  1. Azure上A/D系列虚拟机到DS系列迁移(2)
  2. HashMap的遍历
  3. 第6章-一阶多智体系统一致性-->6.5 带有领航者系统一致性
  4. 7 Java NIO Selector-翻译
  5. TensorFlow 2.0不好用?会了是“真香”!
  6. ASCII码八、十、十六进制对照表
  7. 直通输出设备 android kodi,【本地播放】利用Kodi媒体播放器轻松实现源码输出DTS到功放...
  8. 十九、动态加载脚本和样式
  9. excel表转换成txt导入
  10. 三分钟学会.NET微服务之Polly
  11. Java-note-调试小技巧
  12. java爬取html过快,需要输入验证码
  13. 同步异步阻塞非阻塞杂记 1
  14. PHP学习笔记:利用gd库给图片打图片水印
  15. PCL ——最小包围盒
  16. Ember component
  17. WPS中设置一级、二级、三级标题以及正文和目录
  18. 剑指 Offer 46. 把数字翻译成字符串 【 c++/java详细题解 】
  19. LINUX修改DNS方法
  20. 自动驾驶IDM与MOBIL模型

热门文章

  1. 2022年劳务员-岗位技能(劳务员)考试题模拟考试题库及模拟考试
  2. 企业直播服务行业和应用场景
  3. python安装xlrd模块_python里面的xlrd模块
  4. Android pid uid 机制分析Permission Denial的错误
  5. 抽奖送新款iPad~
  6. Python3 Image图片webp格式转换,URL Image Byte字节流操作
  7. C#实用小知识:字符串里的换行
  8. HYSBZ - 2002 :Bounce 弹飞绵羊 (分块算法)
  9. mapgis10-10.25
  10. 数百家数科公司齐聚用友BIP技术大会,共享企业数智化领先实践