由于计算机的计时码表指示分配给某个进程的时间间隔(时间片)终止而发生的中断,它们被分类为同步中断还是异步中断
时间中断,因为硬件中断被视为所有硬件中断,都是异步的。尽管这会导致混乱,但让我解释一下:
同步中断是指与cpu指令时钟同步发生的中断,这意味着它们发生在指令流的精确时刻。通常,这些同步中断称为(由于这个原因)陷阱。它们是由CPU内部生成的某些事件引起的。它们可以是预见的(例如被0除)或oveflow,也可能是不可预知的,例如堆栈过低(此处没有双关);或页面错误(cpu生成的地址属于不存在的页面)。它们产生相同的处理机制:cpu停止指令序列,并跳转到某个地方的中断处理程序。
时间中断是在精确的时刻发生的,但是CPU时钟与挂钟不同步,因此您无法准确预测中断发生在什么指令上。因此,它们被认为是异步的。考虑一下,如果某个指令可能发生中断,而且上一条指令或下一条指令都可能发生中断,那么它是异步的。
异步属性意味着发出中断时,您不能假设任何有关先前上下文的信息。如果发生溢出或页面错误,您可以获取有关事件的信息,以确定发生了什么(例如,导致页面错误的地址是什么,或者产生陷阱的数字是多少),但是当硬件中断CPU时,您的过程通常与产生中断的事件完全无关。在执行一些计算时,可能会发生磁盘就绪中断,因此您无法从上一个堆栈帧中获得任何有用的信息。
有一种特殊的陷阱(同步中断)很有趣,因为它们确实是由希望它们发生的程序产生的,它们是软件中断(或软件陷阱)。它是一类同步中断,用于获取系统服务(通常称为系统陷阱或系统调用),它们需要完全隔离(出于保护目的)系统调用之前的环境,但是它们允许将任意数量的信息传递给内核。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。