时间片是同步的还是异步的,为什么?

Is time-slicing synchronous or asynchronous and why?

由于计算机计时器指示分配给进程的时间间隔(时间片)终止而发生的中断,它们是同步中断还是异步中断?

时间中断,因为硬件中断被认为是所有硬件中断都是异步的。尽管这可能会导致混淆,但让我解释一下:

同步中断是与 cpu 指令时钟同步发生的中断,这意味着它们发生在指令流中的精确时刻。通常,这些同步中断被称为(出于这个原因)陷阱。它们由 cpu 内部生成的某些事件引起。它们可以是可预见的,比如除以 0,或者溢出,或者可能有点不可预测,比如堆栈溢出(这里没有双关语;))或页面错误(cpu 生成的地址属于非当前页)。它们导致相同的处理机制:cpu 停止指令序列并跳转到某处的中断处理程序。

时间中断在精确的时间点出现,但 cpu 时钟与挂钟不同步,因此您无法准确预测中断将在哪条指令发生。因此,它们被认为是异步的。想一想,如果中断可以发生在某个指令上,但也发生在前一个或下一个指令中,那么它是异步的。

异步 属性 意味着您不能假设发出中断时有关先前上下文的任何信息。对于溢出或页面错误,您可以获得有关事件的信息以确定发生了什么(例如引发页面错误的地址是什么或产生陷阱的添加数字是什么)但是当硬件中断 cpu,您的进程通常与产生中断的事件完全无关。当您进行一些计算时,可能会发生磁盘就绪中断,因此您无法从先前的堆栈帧中获得任何有用信息。

有一个特殊的 class 陷阱(同步中断)很有趣,因为它们确实是由希望它们发生的程序产生的,它们是软件中断(或软件陷阱)这是一个class 用于获取系统服务的同步中断(它们通常称为系统陷阱或系统调用)它们需要完全隔离(出于保护目的)系统调用之前的环境,但它们允许任意传递内核的信息量