进程切换开销
- 直接开销•
- 切换页表全局目录(PGD)
- 切换内核态堆栈
- 切换硬件上下文(进程恢复前,必须装入寄存器的数据统称为硬件上下文)
- 刷新TLB
- 系统调度器的代码执行
- 间接开销
- CPU 缓存失效导致的进程需要到内存直接访问的IO 操作变多
线程切换开销
- 线程本质上只是一批共享资源的进程,线程切换本质上依然需要内核进行进程切换
- 一组线程因为共享内存资源,因此一个进程的所有线程共享虚拟地址空间
- 线程切换相比进程切换,主要节省了虚拟地址空间的切换
协程切换开销
用户线程无需内核帮助,应用程序在用户空间创建的可执行单元,创建销毁完全在用户态完成
讨论