【发布时间】:2014-11-28 18:30:42
【问题描述】:
这可能是一个非常愚蠢的问题。 但是我想澄清我的疑问,因为我对这件事很陌生。
据我了解,CPU 通过递增程序计数器逐步执行进程指令。
现在假设我们有一个系统调用作为指令之一,那么为什么在遇到这条指令时我们需要给一个软件中断呢?不能像执行其他指令一样执行此系统调用(指令序列),因为据我所知,中断是为了发出某些异步事件的信号。但是这里系统调用是流程指令的一部分,不是异步的。
【问题讨论】:
-
因为系统调用期望的实际代码被称为中断,这需要寄存器/堆栈指针/等...具有一定的结构。执行 `call address_of_syscall 将不会提供相同的结构,现在当系统调用返回并尝试撤消预期的系统调用准备时,您将破坏您的系统
标签: operating-system kernel system-calls