03 | 基础篇:经常说的 CPU 上下文切换是什么意思?(上)
一、关于上下文切换的几个为什么
1、上下文切换是什么?
上下文切换是对任务当前运行状态的暂存和恢复
2、为什么CPU要进行上下文切换
当多个进程竞争CPU的时候,为了保证每个进程可以公平被CPU调用,采用处理任务按时间分片的机制,当某个时间片上的任务达到最后的时间点,那么这个任务就好被挂起,处理下一个任务,由于CPU处理的速度非常快,在人类感知上认为是并行处理的,实际是伪并行,同一时间只有一个任务在运行处理。
3、上下文切换主要消耗什么资源,为什么说上下文切换次数过多不可取?
浪费太多时间在切换上,会增大处理任务的时间,导致延迟,卡顿现象
4、上下文切换分几种
进程上下文切换、线程上下文切换、中断上下文切换
5、什么情况下会触发上下文切换?
CPU梳理任务的时间片耗尽,进程状态转换(像运行,阻塞)等
6、线程上下文切换和进程上下文切换的最大区别是什么?
线程是调度的基本单位,进程是资源拥有的基本单位。
进程的切换属于资源的切换。
同属一个进程的线程,发生上下文切换,只切换线程的私有数据,但是共享的内存池数据没有变,所以速度很快。
7、线程上下文切换的过程
1.不同进程之间的线程上下文切换,其过程和进程上下文切换大致相同
2.线程内部的线程进行上下文切换,不需要切换进程的用户资源,只切换线程的私有数据就行,所以比进程上下文切换消耗的资源少,所以多线程相比多进程快。私有数据是什么数据,不需要知道。