CPU 上下文切换之理论篇(上)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CPU 上下文切换之理论篇(上)相关的知识,希望对你有一定的参考价值。

技术图片

  • 1.什么是上下文?
    答:上下文是由CPU寄存器和程序计数器组成

  • 2.CPU为什么进行上下文切换?
    答:CPU上下文切换,是保证Linux系统正常工作的核心功能之一

  • 3.什么是CPU上下文切换?
    答:CPU上下文切换,就是先把前一个任务的CPU上下文保存起来,然后加载新任务的上下文到这些寄存器和程序计数器中,最后跳转到程序计数器所指的新位置,运行任务

  • 4.什么是cpu寄存器?
    答:cpu寄存器是cpu内置很小、但速度极快的内存

  • 5.什么是程序计数器?
    答:是用来存储CPU正在执行的指令位置、或者即将执行的下一条指令位置

  • 6.cpu保存的上下文会存储在哪里?
    答:存储在系统内核中

  • 7.操作系统管理的任务是什么?
    答:进程和线程

  • 8.cpu上下文切换有哪些场景?
    答:进程上下文切换、线程上下文切换、中断上下文切换

  • 9.ring0和ring3分别是什么?
    答:ring0是内核态、ring3是用户态

  • 10.特权模式切换是通过什么进行完成的?
    答:系统调用

  • 11.特权模式切换的步骤是什么?
    答:CPU寄存器里原来的用户指令需要先保存起来,为了执行内核态代码,CPU寄存器需要更新为内核态指令的新位置,最后跳转到内核运行内核任务

  • 12.一次特权模式切换发生了几次CPU上下文切换?
    答:2次

  • 13.什么是进程上下文切换?
    答:是指从一个进程切换到另一个进程

  • 14.进程上下文切换与特权模式切换有什么区别?
    答:进程上下文切换,是指一个进程切换到另一个进程
    特权模式切换是一直运行同一个进程

  • 15.什么时候会切换进程上下文?
    答:只有在进程调度时,才需要切换上下文

  • 16.进程在什么时候才会被调度到 CPU 上运行?
    答:
    (1)当某个进程时间片耗尽
    (2)进程在系统资源不足时
    (3)当进程通过sleep主动挂起时
    (4)当有优先级更高的进程运行时

  • 17.什么是进程?
    答:进程是调度的基本单位

  • 18.什么是线程?
    答:线程是资源拥有的基本单位

  • 19.线程与进程最大的区别是什么?
    答:
    (1)当进程只有一个线程时,可以认为进程等于线程
    (2)当进程拥有多个线程时,这些线程会共享相同的虚拟内存和全局变量等资源。这些资源上下文切换时是不需要修改的

  • 20.线程上下文切换有哪几种情况?
    答:前后线程不属于同一进程、前后线程属于同一进程

  • 21.什么是中断上下文切换?
    答:为了快速响应硬件事件,中断处理会打断进程的正常调度和执行

注:有哪些减少上下文切换的技术用例?
答:数据库连接池(复用连接)、合理设置应用的最大进程,线程数、直接内存访问DMA、零拷贝技术

以上是关于CPU 上下文切换之理论篇(上)的主要内容,如果未能解决你的问题,请参考以下文章

03讲基础篇:经常说的CPU上下文切换是什么意思(上)

Linux性能优化从入门到实战:03 CPU篇:CPU上下文切换

cpu上下文切换

CPU之上下文切换

RK3399平台开发系列讲解(进程调度篇)14.8CPU 上下文切换

RK3399平台开发系列讲解(进程调度篇)14.8CPU 上下文切换