据我的教授说,
“从用户模式切换到内核模式时,用户进程的状态必须完全保存。但是当从内核模式切换到用户模式时,什么都不必保存,因为内核进程没有什么可以保存的。”
他说得对吗?内核进程没有什么可以保存的吗?
如果我们剖析您的故事并尝试使用更好的术语,则可以更好地理解这一点:
从用户模式切换到内核模式时
这也称为模式切换。
这什么时候发生?这发生在调用内核例程时;例如,当从用户模式通过提升或通过硬件中断调用它时,就会发生这种情况。
这是什么套路?这是一段处理调用/中断的代码。
用户进程的状态必须完全保存。
确切地说,由于内核将运行一个内核例程,我们需要暂时保存正在运行的用户进程的状态。
但是当从内核模式切换到用户模式时,什么都不必保存
因为我们调用了一个已经完成执行的例程,所以没有什么可以保存的,内核进程中不再有状态,因为例程不再运行。
相反,发生的情况是需要再次加载用户进程的状态以继续执行用户进程。
所以,我们在这里有两件不同的事情:
一个用户进程,需要在模式切换时继续执行,所以它的状态被存储。
一个内核例程,在模式切换时完成,因此它的状态被处理。
至于回答你的问题“内核进程没有什么可以保存的吗? ”;并没有真正运行的内核进程,它只是一个存放内核内存、例程和其他一些魔法的垫片。
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |