【问题标题】:In an operating system, what is the difference between a system call and an interrupt?在操作系统中,系统调用和中断有什么区别?
【发布时间】:2016-02-12 18:46:01
【问题描述】:

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

【问题讨论】:

标签: operating-system interrupt system-calls


【解决方案1】:

简答: 它们是不同的东西。

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

我说通常是外部的,因为有些中断可以由软件引发(软中断)

所有系统调用都是中断吗?视情况而定

所有中断都是系统调用吗?没有

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

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

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

“对于许多 RISC 处理器,这种(中断)是唯一提供的技术,但是 x86 等 CISC 体系结构支持其他技术。一 例如 SYSCALL/SYSRET、SYSENTER/SYSEXIT(这两种机制是 分别由 AMD 和 Intel 独立创建,但本质上 做同样的事情)。这些是“快速”控制传输指令 旨在快速将控制权转移到操作系统的系统 在没有中断开销的情况下调用"

【讨论】:

  • 感谢您的快速回复。所以中断是硬件,但可以由软件中的系统调用引起吗?对吗?
  • “但可能由软件中的系统调用引起” 是的,软件是一种中断源,但通常所有外设都会产生事件。时钟滴答是系统时钟产生的中断,不需要任何用户/软件干预。
  • 为了进一步混淆,在许多操作系统类等中,所有进入内核的系统调用都被描述为“中断”,即使该机制不涉及模仿“真实”的经典“软件中断”硬件中断。在 Java 等某些语言中,“中断”一词也被进一步重载。很高兴这很清楚...... :)
【解决方案2】:

您的问题的答案取决于底层硬件(有时是操作系统实现)。我稍后会回到那个。

在操作系统中,系统调用和中断有什么区别?

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

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

所有系统调用都是中断吗?所有中断都是系统调用吗?

系统调用不是中断,因为它们不是由硬件异步触发的。进程在系统调用中继续执行其代码流,但不在中断中。

话虽如此,英特尔的文档经常将中断、系统调用、陷阱和故障混为一谈,称为“中断”。

某些处理器以大致相同的方式处理系统调用、陷阱、故障和中断。其他公司(尤其是 Intel)提供了不同的方法来实现系统调用。

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

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

在这样的系统中,可以像调用系统调用一样同步执行中断处理程序。

例如,在 VAX 上,CHMK #4 指令调用第四个内核模式处理程序。在英特尔领域,有一条 INT 指令的作用大致相同。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-20
    • 2020-04-08
    • 1970-01-01
    • 2016-01-17
    • 2014-04-03
    • 2015-07-01
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多