我发现我的教科书或谷歌搜索技能都无法给我这个问题的一个恰当答案,虽然它依赖于操作系统,但是一般来说会发生什么,以及为什么会发生呢?
我的教科书说,系统调用会导致操作系统进入内核模式,前提是不在内核模式下。这是必需的,因为内核模式才能控制I/O设备和其他不属于特定进程地址空间的东西。但如果我理解正确,切换到内核模式并不一定意味着进程上下文切换(保存进程的当前状态到CPU以外的其他位置,以便运行其他进程)。
为什么会这样?我曾经想过可能有一些“管理员”进程被切换进来,负责处理进程的系统调用,并将结果发送到进程的地址空间,但我猜想我错了。我似乎无法理解在切换到和从内核模式中实际上发生了什么,以及这如何影响进程对I/O设备的操作能力。
谢谢 :)
编辑:额外问题:库调用是否一定会结束在系统调用中?如果没有,您有没有任何不以系统调用结束的库调用的示例?如果有,为什么我们要使用库调用?
我的教科书说,系统调用会导致操作系统进入内核模式,前提是不在内核模式下。这是必需的,因为内核模式才能控制I/O设备和其他不属于特定进程地址空间的东西。但如果我理解正确,切换到内核模式并不一定意味着进程上下文切换(保存进程的当前状态到CPU以外的其他位置,以便运行其他进程)。
为什么会这样?我曾经想过可能有一些“管理员”进程被切换进来,负责处理进程的系统调用,并将结果发送到进程的地址空间,但我猜想我错了。我似乎无法理解在切换到和从内核模式中实际上发生了什么,以及这如何影响进程对I/O设备的操作能力。
谢谢 :)
编辑:额外问题:库调用是否一定会结束在系统调用中?如果没有,您有没有任何不以系统调用结束的库调用的示例?如果有,为什么我们要使用库调用?