Bra*_*ney 9 operating-system interrupt system-calls
在操作系统中,系统调用和中断之间有什么区别?所有系统调用都是中断吗?所有中断都是系统调用吗?
Ali*_*Ali 21
简答: 他们是不同的东西.
我说通常是外部的,因为一些中断可以通过软件引发(软中断)
所有系统调用都是中断吗?要看
所有中断都是系统调用吗?没有
答案很长: 操作系统管理CPU时间和连接到CPU的其他硬件(内存(RAM),硬盘,键盘等).它公开了允许用户程序访问底层硬件的服务,这些是系统调用.通常这些处理分配内存,读/写文件,打印文档等.
当操作系统与其他硬件交互时,它通常通过驱动程序层完成,该驱动程序层设置完成作业后硬件执行和中断的任务,因此打印机可能会在打印文档或页面用完后中断.因此,系统调用通常会导致产生中断.
所有系统调用都是中断 - 取决于它们是否可以实现为软中断.因此,当用户程序进行系统调用时,它会导致软中断,导致操作系统暂停调用进程,并自行处理请求,然后恢复进程.但是,我引用维基百科,
"对于许多RISC处理器而言,这(中断)是唯一提供的技术,但是像x86这样的CISC架构支持其他技术.例如SYSCALL/SYSRET,SYSENTER/SYSEXIT(这两种机制分别由AMD和Intel独立创建,但是本质上是做同样的事情.)这些是"快速"控制传输指令,旨在快速将控制权转移到OS进行系统调用,而不会产生中断的开销"
您的问题的答案取决于底层硬件(有时还取决于操作系统的实现)。我稍后会回到这一点。
在操作系统中,系统调用和中断有什么区别?
中断处理程序和系统调用(以及故障处理程序)的目的大致相同:将处理器切换到内核模式,同时提供保护,防止无意或恶意访问内核结构。
中断由异步外部事件触发。系统调用(或故障或陷阱)是通过执行代码同步触发的。
所有的系统调用都会中断吗?所有的中断都是系统调用吗?
系统调用不是中断,因为它们不是由硬件异步触发的。进程在系统调用中继续执行其代码流,但不在中断中。
话虽这么说,英特尔的文档经常将中断、系统调用、陷阱和故障混为一谈,统称为“中断”。
一些处理器以大致相同的方式处理系统调用、陷阱、故障和中断。其他公司(特别是英特尔)提供了不同的方法来实现系统调用。
在以相同方式处理上述所有内容的处理器中,每种类型的中断、陷阱和故障都有唯一的编号。处理器期望操作系统建立指向处理程序的指针向量(数组)。此外,还有一个或多个处理程序可供操作系统执行系统调用
根据可用处理程序的数量,操作系统可能为每个系统调用都有一个单独的处理程序,或者使用寄存器值来确定要执行的特定系统函数。
在这样的系统中,可以像调用系统调用一样同步执行中断处理程序。
例如,在 VAX 指令上CHMK #4,调用第四个内核模式处理程序。在英特尔领域,有一条INT指令的作用大致相同。
Intel 处理器支持的SYSCALL机制提供了不同的方式来实现系统调用。