【程序员必备小知识-性能基础12】线程和中断上下文切换

241 阅读1分钟

引言

前文写了cpu的上下文切换之进程切换,接下来把线程上下文切换中断上下文切换的问题说一下。

线程上下文切换

线程是调度的基本单位,进程是资源拥有的基本单位,换句话说只有线程才是真正干活的,进程就是领导,只管分配任务和资源,内核中真正调度的对象还是线程

那由于进程是分配资源和领导的,那就看当前线程和下一个线程是不是属于同一个进程调度,如果是,那线程和线程之间共享资源,如果不是,那就涉及到线程的上下文切换,由于线程的粒度比进程更小,因此呢和进程相比,切换线程消耗的资源更少。

中断上下文切换

为了快速响应硬件的事件,我们有时候也需要打断当前正在执行的进程,转而处理中断程序,那此时也需要保存当前正在运行的进程状态,以便能在下次调用时能恢复执行。

中断处理比进程拥有更高的优先级,这也意味着中断和进程切换不会同时进行,而且中断上下文切换也需要消耗 CPU,切换次数过多也会耗费大量的 CPU,甚至严重降低系统的整体性能,所以当中断次数过多时,你就需要注意是不是会影响性能,以避免会给你的系统带来严重的性能问题。