姓名:刘浩然。 2020年大目标Python

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

一、关于上下文切换的几个为什么

1、上下文切换是什么?

上下文切换是对任务当前运行状态的暂存和恢复

2、为什么CPU要进行上下文切换

当多个进程竞争CPU的时候,为了保证每个进程可以公平被CPU调用,采用处理任务按时间分片的机制,当某个时间片上的任务达到最后的时间点,那么这个任务就好被挂起,处理下一个任务,由于CPU处理的速度非常快,在人类感知上认为是并行处理的,实际是伪并行,同一时间只有一个任务在运行处理。

3、上下文切换主要消耗什么资源,为什么说上下文切换次数过多不可取?

浪费太多时间在切换上,会增大处理任务的时间,导致延迟,卡顿现象

4、上下文切换分几种

进程上下文切换、线程上下文切换、中断上下文切换

5、什么情况下会触发上下文切换?

CPU梳理任务的时间片耗尽,进程状态转换(像运行,阻塞)等

6、线程上下文切换和进程上下文切换的最大区别是什么?

线程是调度的基本单位,进程是资源拥有的基本单位。
进程的切换属于资源的切换。
同属一个进程的线程,发生上下文切换,只切换线程的私有数据,但是共享的内存池数据没有变,所以速度很快。

7、线程上下文切换的过程

1.不同进程之间的线程上下文切换,其过程和进程上下文切换大致相同
2.线程内部的线程进行上下文切换,不需要切换进程的用户资源,只切换线程的私有数据就行,所以比进程上下文切换消耗的资源少,所以多线程相比多进程快。私有数据是什么数据,不需要知道。

posted @ 2019-10-29 23:07  pluto2charon  阅读(236)  评论(0编辑  收藏  举报