应用程序调用系统调用会发生进程上下文切换吗?

如题,

应用程序调用系统调用会发生进程上下文切换吗?驱动程序设计那书上说,内核代码可以通过当前的current指针来获取当前进程的相关信息,那是不是说,调用系统调用不会发上进程上下文切换?是不是说,应用程序在系统调用时,只是执行了内核的系统调用代码,和子函数调用差不多???? 迷惑中……求解!

作者: shaohui973   发布时间: 2011-01-28

会切换,内核的内存映射和用户态的内存映射不一样,  就是传说的保护模式。

cpu cache 要被替换,cpu寄存器要保存。  切换对性能的确是损耗。 这个一定程度上造成了linux 不如vxwork这样不区分内核、用户空间的系统高效,但是好处也很明显,一个应用程序可以不会轻易搞死系统,即使搞死了,也是你的内核系统调用处理部分的代码写的不行。   如果你所有的功能都在内核实现,和vxwork性能应该差不多吧。

作者: tuibo   发布时间: 2011-01-28