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 上下文切换之理论篇(上)的主要内容,如果未能解决你的问题,请参考以下文章
Linux性能优化从入门到实战:03 CPU篇:CPU上下文切换