首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在操作系统中,系统调用和中断有什么区别?

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

Stack Overflow用户
提问于 2015-11-11 16:00:09
回答 2查看 28.5K关注 0票数 29

在操作系统中,系统调用和中断有什么区别?所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?

EN

回答 2

Stack Overflow用户

发布于 2015-11-11 16:12:47

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

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

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

所有的系统呼叫都被打断了吗?取决于

所有的系统呼叫都中断了吗?不是

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

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

是否所有系统调用中断-取决于它们可能被实现为软中断。因此,当用户程序进行系统调用时,它会导致一个软中断,导致操作系统挂起调用进程,并处理请求本身,然后继续该进程。但是,我引用维基百科的话

对于许多RISC处理器来说,这(中断)是唯一提供的技术,但CISC体系结构(如x86 )支持附加技术。例如SYSCALL/SYSRET、SYSENTER/SYSEXIT (这两种机制分别由AMD和Intel独立创建,但本质上是相同的)。这些是“快速”控制传输指令,旨在为系统调用的系统调用快速传输控制,而不需要中断的开销。

票数 37
EN

Stack Overflow用户

发布于 2015-11-13 03:55:25

问题的答案取决于底层硬件(有时还包括操作系统实现)。我一会儿再谈这件事。

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

中断处理程序和系统调用(和故障处理程序)的目的大致相同:将处理器切换到内核模式,同时提供对内核结构的不小心或恶意访问的保护。

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

所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?

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

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

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

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

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

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

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

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33654579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档