在操作系统中,系统调用和中断有什么区别?所有的系统调用都是中断吗?是所有的中断系统调用?在操作系统中,系统调用和中断有什么区别?
回答
简短回答: 他们是不同的东西。
- 系统调用是由OS上运行的软件调用OS提供的服务 。
- 中断是通常是外部硬件组件通知CPU /微处理器有关需要在软件(通常是驱动程序)中处理的事件。
我说通常外,因为有些中断可以由软件(软中断)提高
都是系统调用中断?取决于
是否所有中断系统调用?否
长答案: 操作系统管理CPU时间和连接到CPU(内存(RAM),硬盘,键盘等)的其他硬件。它公开允许用户程序访问底层硬件的服务,这些是系统调用。通常这些处理分配内存,读写文件,打印文件等。
当操作系统与其他硬件交互时,它通常通过驱动程序层来完成此操作,该驱动程序层设置硬件执行任务并在作业完成后中断任务,因此打印机可能会在打印文档或打印文档时中断用完页面。因此,系统调用通常会导致产生中断。
是所有系统调用中断 - 取决于它们可能实现为软中断。因此,当用户程序进行系统调用时,会导致软中断,导致操作系统挂起调用进程,并自行处理请求,然后恢复进程。但是,我从维基百科的引用,
“对于许多RISC处理器这个(中断)是所提供的唯一技术,但 CISC架构,比如x86的支持额外的技术。一个 例子是SYSCALL/SYSRET,SYSENTER/SYSEXIT(这两个机制分别是由AMD和Intel独立创建的 ,但实质上 做同样的事情)。这些是“快速”控制传输指令 ,它们被设计为快速将控制权转移到系统的操作系统 调用没有中断的开销“
感谢你的快速反应。所以中断是硬件,但可以由软件中的系统调用引起?那是对的吗? –
“,但可以由软件中的系统调用引起”是的,软件是中断的一个来源,但通常所有外设都会产生事件。时钟滴答是由系统时钟产生的中断,不需要任何用户/软件干预。 – Ali
只是为了进一步混淆,在许多操作系统中,进入内核的所有系统调用都被描述为'中断',即使该机制没有涉及模仿'真正'硬件中断的传统'软件中断'。 '中断'这个词在Java等语言中也被进一步重载。很高兴这是完全清楚的...... :) –
您的问题的答案取决于底层硬件(有时操作系统实施)。我回到那一点。
中断处理程序和系统调用(和故障处理程序)的用途大致相同:将处理器切换到内核模式,同时防止无意或恶意访问内核结构。
中断是由异步外部事件触发的。 通过执行代码来同步触发系统调用(或故障或陷阱)。
这就是你的第一个问题的答案。
您的部分问题的答案是系统调用不是中断,因为它们不是由硬件异步触发的。进程继续在系统调用中执行其代码流,但不在中断中执行。这就是说,英特尔的文档经常将中断,系统调用,陷阱和故障混合为“中断”。
一些处理器在很大程度上以相同的方式处理系统调用陷阱,故障和中断。其他(特别是英特尔)为实现系统调用提供了不同的方法。
在以相同的方式处理上述所有问题的处理器中,每种类型的中断,陷阱和故障都有唯一的编号。处理器期望操作系统设置指向处理程序的向量(数组)。此外,还有一个或多个处理程序可用于操作系统来执行系统调用
根据可用处理程序的数量,操作系统可能为每个系统调用都有单独的处理程序,或者使用寄存器值来确定哪些特定系统功能执行。
在这样的系统中,可以以与调用系统调用相同的方式同步执行中断处理程序。
例如,在VAX的
CHMK#4
指令,调用第四内核模式处理程序。在英特尔的土地他们是
INT
指令,可以做大致相同。
英特尔处理器支持SYSCALL机制,它提供了一种实现系统调用的不同方式。
- 1. 操作系统中页面和块之间有什么区别?
- 2. unix系统编程中send和sendto系统调用有什么区别?
- 3. 操作系统调用中断吗?
- 4. 系统verilog断言中的 - >和=>有什么区别?
- 5. c中的open和creat系统调用有什么区别?
- 6. 操作系统和内核有什么区别?
- 7. 操作系统和框架有什么区别?
- 8. chdir(...)和系统(“cd ...”)有什么区别?
- 9. 操作系统中断
- 10. 在32位操作系统和64位操作系统之间,类java.net.InetAddress有什么区别
- 11. 前景背景系统和实时操作系统的区别
- 12. 什么是操作系统和元操作系统之间的差别
- 13. 通用操作系统和软实时操作系统之间的区别?
- 14. windows mobile(过去的操作系统)和windows phone 7操作系统的功能有什么区别?
- 15. 操作系统中的用户模式和内核模式有什么区别?
- 16. Linux操作系统和移动操作系统之间的根本区别(android)
- 17. 嵌入式操作系统和桌面操作系统的区别
- 18. 操作系统注入和操作系统命令注入的区别
- 19. “C系统调用”和“C库例程”有什么区别?
- 20. 系统调用和指令集有什么区别
- 21. 操作系统中的字符集和字体有什么区别?
- 22. 操作系统API使用中断吗?
- 23. 中断系统调用
- 24. posix_memalign中断系统调用
- 25. PHP hash_hmac()操作系统区别
- 26. 操作系统中
- 27. 在Prolog中识别操作系统
- 28. SQL Server系统视图中的type和xtype有什么区别?
- 29. 在Windows操作系统中的pathos软件包操作系统
- 30. 识别操作系统
最小的中断示例以及一些Linux如何将其用于系统调用:http://stackoverflow.com/questions/1817577/what-does-int-0x80-mean-in-assembly-code/31836988#31836988 –