聊聊Linux中CPU上下文切换
💡
原文中文,约5700字,阅读约需14分钟。
📝
内容提要
CPU上下文切换是多任务操作系统中的重要概念,包括进程、线程和中断上下文切换。上下文切换消耗CPU时间,但Linux系统的切换时间较少。可以使用vmstat和pidstat命令查看上下文切换情况。
🎯
关键要点
- CPU上下文切换是多任务操作系统中的重要概念,涉及进程、线程和中断。
- 上下文切换消耗CPU时间,但Linux系统的切换时间较少。
- CPU上下文是指在执行任务前,CPU需要加载和恢复任务的状态信息。
- 上下文切换的步骤包括保存前一个任务的上下文、加载新任务的上下文和跳转到新任务的执行位置。
- CPU上下文切换分为进程上下文切换、线程上下文切换和中断上下文切换。
- CPU上下文保存在进程的内核空间中,确保任务可以恢复执行。
- 进程在用户空间运行时称为用户态,进入内核空间时称为内核态。
- 系统调用是用户进程访问内核服务的唯一方法,涉及用户态和内核态的切换。
- 进程上下文切换与系统调用的区别在于,前者涉及不同进程的切换,后者是在同一进程内的切换。
- 进程切换的场景包括时间片耗尽、资源不足、主动挂起和高优先级进程的调度。
- 线程上下文切换时共享虚拟内存和全局变量,私有数据如栈和寄存器需要保存。
- 中断上下文切换由硬件中断触发,不涉及用户态资源,优先级高于进程上下文切换。
- 上下文切换是计算密集型操作,消耗大量CPU时间,Linux的上下文切换时间较少。
- 可以使用vmstat命令查看系统的上下文切换情况,pidstat命令查看进程的上下文切换情况。
➡️