关于上下文切换的思考

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jeanter/article/details/51200361
vmstat 的结果中有 cs这一项,这里面的上下文切换 是指的进程切换 还是 只有进程的上下文切换, 进程的上下文切换,不一定会有进程的切换,如,进程通过系统调用进入内核态,当前进程进入了内核态,栈发生了变化,会使用内核态栈,内核态栈会保持当前cpu的大多数寄存器的内容,,cpu会从用户态切换到内核态,,这些上下文其实已经发生了变化,但是进程还是当前这个进程,系统调用后,立马回到用户态,用保存在内核栈的值加载到寄存器,cpu有恢复到了用户态,进程重新使用用户态栈,但是如果系统没有进程schedule(),,或者调用了schedule(),但是当前选择的运行进程还是这个进程,就是进程没有切换。这到底算不算上下文切换,会不会被纳入到 vmstat的cs的统计中去?
   看了很久的相关的文章, 答案是算,只要当前程序的运行环境发生了变化,都算上下文切换。例如进程进入内核态时栈发生了变化,而栈又是进程运行的环境

猜你喜欢

转载自blog.csdn.net/jeanter/article/details/51200361