引言
- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
前文写了cpu的上下文切换之进程切换,接下来把线程上下文切换和中断上下文切换的问题说一下。
线程上下文切换
线程是调度的基本单位,进程是资源拥有的基本单位,换句话说只有线程才是真正干活的,进程就是领导,只管分配任务和资源,内核中真正调度的对象还是线程。
那由于进程是分配资源和领导的,那就看当前线程和下一个线程是不是属于同一个进程调度,如果是,那线程和线程之间共享资源,如果不是,那就涉及到线程的上下文切换,由于线程的粒度比进程更小,因此呢和进程相比,切换线程消耗的资源更少。
中断上下文切换
为了快速响应硬件的事件,我们有时候也需要打断当前正在执行的进程,转而处理中断程序,那此时也需要保存当前正在运行的进程状态,以便能在下次调用时能恢复执行。
中断处理比进程拥有更高的优先级,这也意味着中断和进程切换不会同时进行,而且中断上下文切换也需要消耗 CPU,切换次数过多也会耗费大量的 CPU,甚至严重降低系统的整体性能,所以当中断次数过多时,你就需要注意是不是会影响性能,以避免会给你的系统带来严重的性能问题。