一、线程的切换
二、用户级线程和内核级线程
- 区别:内核级线程是由操作系统进行调度的,用户级线程是由用户来控制调度的,因此用户级线程内核看不到,感觉用户级线程就是协程
用户级线程阻塞的时候,操作系统会切换进程,内核级线程阻塞的时候,操作系统会切换线程
多进程没法发挥多核的作用,对于多核处理器,由于共享MMU,因此同一时刻只能有一个进程运行,通过开启内核线程,可以让同一个进程的多个线程并行执行
核心级线程有两套栈,用户栈和内核栈,用户栈用来执行用户代码,内核栈用于执行系统调用
三、什么会引起线程切换
- 时间片轮转
- 线程阻塞
- 线程主动放弃时间片
可以简单理解:中断就是从用户态切换到内核态
参考文献: