2015-11-11 135 views
5

在操作系统中,系统调用和中断有什么区别?所有的系统调用都是中断吗?是所有的中断系统调用?在操作系统中,系统调用和中断有什么区别?

+0

最小的中断示例以及一些Linux如何将其用于系统调用:http://stackoverflow.com/questions/1817577/what-does-int-0x80-mean-in-assembly-code/31836988#31836988 –

回答

13

简短回答: 他们是不同的东西。

  • 系统调用是由OS上运行的软件调用OS提供的服务 。
  • 中断是通常是外部硬件组件通知CPU /微处理器有关需要在软件(通常是驱动程序)中处理的事件。

我说通常外,因为有些中断可以由软件(软中断)提高

都是系统调用中断?取决于

是否所有中断系统调用?否

长答案: 操作系统管理CPU时间和连接到CPU(内存(RAM),硬盘,键盘等)的其他硬件。它公开允许用户程序访问底层硬件的服务,这些是系统调用。通常这些处理分配内存,读写文件,打印文件等。

当操作系统与其他硬件交互时,它通常通过驱动程序层来完成此操作,该驱动程序层设置硬件执行任务并在作业完成后中断任务,因此打印机可能会在打印文档或打印文档时中断用完页面。因此,系统调用通常会导致产生中断。

是所有系统调用中断 - 取决于它们可能实现为软中断。因此,当用户程序进行系统调用时,会导致软中断,导致操作系统挂起调用进程,并自行处理请求,然后恢复进程。但是,我从维基百科的引用,

“对于许多RISC处理器这个(中断)是所提供的唯一技术,但 CISC架构,比如x86的支持额外的技术。一个 例子是SYSCALL/SYSRET,SYSENTER/SYSEXIT(这两个机制分别是由AMD和Intel独立创建的 ,但实质上 做同样的事情)。这些是“快速”控制传输指令 ,它们被设计为快速将控制权转移到系统的操作系统 调用没有中断的开销“

+0

感谢你的快速反应。所以中断是硬件,但可以由软件中的系统调用引起?那是对的吗? –

+0

“,但可以由软件中的系统调用引起”是的,软件是中断的一个来源,但通常所有外设都会产生事件。时钟滴答是由系统时钟产生的中断,不需要任何用户/软件干预。 – Ali

+0

只是为了进一步混淆,在许多操作系统中,进入内核的所有系统调用都被描述为'中断',即使该机制没有涉及模仿'真正'硬件中断的传统'软件中断'。 '中断'这个词在Java等语言中也被进一步重载。很高兴这是完全清楚的...... :) –

1

您的问题的答案取决于底层硬件(有时操作系统实施)。我回到那一点。

中断处理程序和系统调用(和故障处理程序)的用途大致相同:将处理器切换到内核模式,同时防止无意或恶意访问内核结构。

中断是由异步外部事件触发的。 通过执行代码来同步触发系统调用(或故障或陷阱)。

这就是你的第一个问题的答案。

您的部分问题的答案是系统调用不是中断,因为它们不是由硬件异步触发的。进程继续在系统调用中执行其代码流,但不在中断中执行。这就是说,英特尔的文档经常将中断,系统调用,陷阱和故障混合为“中断”。

一些处理器在很大程度上以相同的方式处理系统调用陷阱,故障和中断。其他(特别是英特尔)为实现系统调用提供了不同的方法。

在以相同的方式处理上述所有问题的处理器中,每种类型的中断,陷阱和故障都有唯一的编号。处理器期望操作系统设置指向处理程序的向量(数组)。此外,还有一个或多个处理程序可用于操作系统来执行系统调用

根据可用处理程序的数量,操作系统可能为每个系统调用都有单独的处理程序,或者使用寄存器值来确定哪些特定系统功能执行。

在这样的系统中,可以以与调用系统调用相同的方式同步执行中断处理程序。

例如,在VAX的

CHMK#4

指令,调用第四内核模式处理程序。在英特尔的土地他们是

INT

指令,可以做大致相同。

英特尔处理器支持SYSCALL机制,它提供了一种实现系统调用的不同方式。

相关问题