在操作系统中,系统调用和中断有什么区别?所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?
发布于 2015-11-11 16:12:47
简短的回答:,它们是不同的东西。
我说通常是外部的,因为一些中断可以由软件(软中断)引起。
所有的系统呼叫都被打断了吗?取决于
所有的系统呼叫都中断了吗?不是
长答案:操作系统管理CPU时间和连接到CPU的其他硬件(内存、硬盘、键盘等等)。它公开允许用户程序访问底层硬件的服务,这些是系统调用。通常这些操作涉及分配内存、读取/写入文件、打印文档等。
当操作系统与其他硬件交互时,通常是通过驱动程序层进行交互,驱动层设置了硬件执行的任务,并在完成任务后中断,因此打印机可能会在打印文档或耗尽页面时中断。因此,通常情况下,系统调用会导致产生中断。
是否所有系统调用中断-取决于它们可能被实现为软中断。因此,当用户程序进行系统调用时,它会导致一个软中断,导致操作系统挂起调用进程,并处理请求本身,然后继续该进程。但是,我引用维基百科的话
对于许多RISC处理器来说,这(中断)是唯一提供的技术,但CISC体系结构(如x86 )支持附加技术。例如SYSCALL/SYSRET、SYSENTER/SYSEXIT (这两种机制分别由AMD和Intel独立创建,但本质上是相同的)。这些是“快速”控制传输指令,旨在为系统调用的系统调用快速传输控制,而不需要中断的开销。
发布于 2015-11-13 03:55:25
问题的答案取决于底层硬件(有时还包括操作系统实现)。我一会儿再谈这件事。
在操作系统中,系统调用和中断有什么区别?
中断处理程序和系统调用(和故障处理程序)的目的大致相同:将处理器切换到内核模式,同时提供对内核结构的不小心或恶意访问的保护。
中断由异步外部事件触发。系统调用(或故障或陷阱)是通过执行代码同步触发的。
所有的系统呼叫都被打断了吗?所有的系统呼叫都中断了吗?
系统调用不会中断,因为它们不是由硬件异步触发的。进程继续在系统调用中执行其代码流,但不在中断中执行。
话虽如此,英特尔的文档常常将中断、系统调用、陷阱和错误混为一谈,称为“中断”。
一些处理器对系统调用、陷阱、故障和中断的处理方式大致相同。其他(尤其是Intel)提供了不同的实现系统调用的方法。
在以相同方式处理上述所有内容的处理器中,每种类型的中断、陷阱和故障都有唯一的编号。处理器期望操作系统设置指向处理程序的指针的向量(数组)。此外,操作系统还可以使用一个或多个处理程序来实现系统调用。
根据可用处理程序的数量,操作系统可能对每个系统调用都有一个单独的处理程序,或者使用一个寄存器值来确定要执行的特定系统功能。
在这种系统中,可以以调用系统调用的方式同步执行中断处理程序。
例如,在VAX上,CHMK #4指令调用第四个内核模式处理程序。在英特尔的土地上,有一个INT指令,大致相同。
英特尔处理器支持SYSCALL机制,该机制提供了一种实现系统调用的不同方式。
https://stackoverflow.com/questions/33654579
复制相似问题