linux系统中,进程进行系统调用进入内核态时,是该进程本身进入内核态还是操作系统新开了一个内核线程?

2025-04-30 12:54:37
推荐回答(3个)
回答1:

可以说是进程本身进入内核态。
系统调用调用了内核代码,但是,还是属于这个进程的进程上下文。
进程的切换要依靠时钟中断。
还要明白内核线程的功能,与进程切换没关系。

回答2:

系统调用实际上是应用程序在用户空间激起了一次软中断,在软中断之前要按照规范,将各个需要传递的参数填入到相应的寄存器中。软中断会激起内核的异常处理,此时就会强制陷入内核态(此时cpu运行权限提升),软中断的异常处理函数会根据应用软件的请求来决定api调用是否合法,如果合法选择需要执行的函数,执行完毕后软中断会填入返回值,安全地降低cpu权限,将控制权交还给用户空间。所以内核提供的api调用,你完全可以认为就是一个软件包,只不过这些软件包你不能控制,只能请求内核帮你执行。
因为内核态和用户态属于同一个进程,所以不存在同一进程内内核态阻塞用户态这种说法,只能是进程是否在内核态执行了阻塞操作而被阻塞。

回答3:

只能说不可能是后者。