开发者社区> 问答> 正文

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

由于计算机的计时码表指示分配给某个进程的时间间隔(时间片)终止而发生的中断,它们被分类为同步中断还是异步中断

展开
收起
祖安文状元 2020-01-06 16:20:02 585 0
1 条回答
写回答
取消 提交回答
  • 时间中断,因为硬件中断被视为所有硬件中断,都是异步的。尽管这会导致混乱,但让我解释一下:

    同步中断是指与cpu指令时钟同步发生的中断,这意味着它们发生在指令流的精确时刻。通常,这些同步中断称为(由于这个原因)陷阱。它们是由CPU内部生成的某些事件引起的。它们可以是预见的(例如被0除)或oveflow,也可能是不可预知的,例如堆栈过低(此处没有双关);或页面错误(cpu生成的地址属于不存在的页面)。它们产生相同的处理机制:cpu停止指令序列,并跳转到某个地方的中断处理程序。

    时间中断是在精确的时刻发生的,但是CPU时钟与挂钟不同步,因此您无法准确预测中断发生在什么指令上。因此,它们被认为是异步的。考虑一下,如果某个指令可能发生中断,而且上一条指令或下一条指令都可能发生中断,那么它是异步的。

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

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

    2020-01-06 16:20:05
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
事务、全局索引、透明分布式 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载