在操作系统中,系统调用和中断有什么区别?所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?
发布于 2015-11-13 03:55:25
问题的答案取决于底层硬件(有时还包括操作系统实现)。我一会儿再谈这件事。
在操作系统中,系统调用和中断有什么区别?
中断处理程序和系统调用(和故障处理程序)的目的大致相同:将处理器切换到内核模式,同时提供对内核结构的不小心或恶意访问的保护。
中断由异步外部事件触发。系统调用(或故障或陷阱)是通过执行代码同步触发的。
所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?
系统调用不会中断,因为它们不是由硬件异步触发的。进程继续在系统调用中执行其代码流,但不在中断中执行。
话虽如此,英特尔的文档常常将中断、系统调用、陷阱和错误混为一谈,称为“中断”。
一些处理器对系统调用、陷阱、故障和中断的处理方式大致相同。其他(尤其是Intel)提供了不同的实现系统调用的方法。
在以相同方式处理上述所有内容的处理器中,每种类型的中断、陷阱和故障都有唯一的编号。处理器期望操作系统设置指向处理程序的指针的向量(数组)。此外,操作系统还可以使用一个或多个处理程序来实现系统调用。
根据可用处理程序的数量,操作系统可能对每个系统调用都有一个单独的处理程序,或者使用一个寄存器值来确定要执行的特定系统功能。
在这种系统中,可以以调用系统调用的方式同步执行中断处理程序。
例如,在VAX上,CHMK #4指令调用第四个内核模式处理程序。在英特尔的土地上,有一个INT指令,大致相同。
英特尔处理器支持SYSCALL机制,该机制提供了一种实现系统调用的不同方式。
https://stackoverflow.com/questions/33654579
复制相似问题