系统调用vs中断
典型的处理器逐个执行指令。但有时处理器必须临时停止并保留当前指令,执行其他程序或代码段(驻留在其他地方)。完成此操作后,处理器将恢复正常执行并从停止的位置继续。系统调用和中断就是这样的情况。系统调用是对系统内置子例程的调用。中断是由外部硬件事件引起的程序控制中断。
什么是系统调用?
系统调用为运行在计算机上的程序提供与操作系统对话的接口。当一个程序需要从操作系统内核请求一个服务(它本身没有权限)时,它使用系统调用。用户级进程与直接与操作系统交互的进程没有相同的权限。例如,要与外部I/O设备通信或与任何其他进程交互,程序必须使用系统调用。
什么是中断?
在计算机程序的正常执行过程中,可能会发生一些事件,导致CPU暂时停止运行。像这样的事件叫做中断。中断可能由软件或硬件故障引起。硬件中断称为(简单地)中断,而软件中断称为异常或陷阱。一旦中断(软件或硬件)被触发,控制权就被转移到一个称为ISR(中断服务程序)的特殊子程序上,该子程序可以处理由中断引起的条件。
如上所述,术语中断通常是为硬件中断保留的。它们是由外部硬件事件引起的程序控制中断。这里,external是指CPU之外的。硬件中断通常来自许多不同的来源,如定时器芯片、外围设备(键盘、鼠标等)、I/O端口(串行、并行等)、磁盘驱动器、CMOS时钟、扩展卡(声卡、视频卡等)。这意味着硬件中断几乎不会因为与执行程序相关的事件而发生。例如,用户在键盘上按键或内部硬件计时器超时等事件都会引发这种中断,并通知CPU某个设备需要注意。在这样的情况下,CPU将停止它正在做的任何事情(即暂停当前程序),提供设备所需的服务,并返回正常程序。
系统调用和中断之间有什么区别?