如何解决RiscV 中的异常与中断?
我读到异常是由指令引发的,而中断是由外部事件引发的。
但有几件事我无法理解:
-
在哪种类型中我们会立即停止以及在哪种类型中让当前代码行完成?
-
在这两种情况下,在执行 1 之后,我们运行下一个程序,对吗?
解决方法
不同的作者使用不同的术语。
硬件异常机制由软件引起的异常和外部中断使用。
在哪种类型中我们立即停止,在哪种类型中让当前代码行完成?
处理器可以在一定程度上满足其设计者的要求。
如果有外部中断,处理器可能会选择在接受中断之前完成一些正在进行的工作。
如果有软件引起的中断,处理器根本无法执行该指令(或之后的任何指令),必须中止其执行,并在不完成违规指令的情况下处理异常。
在这两种情况下,在做 1 之后,我们运行下一个程序,对吗?
在外部中断的情况下,最有效的是恢复被中断的程序,因为该进程的缓存和页表很热。然而,一个外部中断可能会改变另一个更高优先级进程的可运行状态,或者可能会结束被中断进程的时间片,表明另一个进程现在应该获得 CPU 时间,而不是被中断的进程。
在软件引起异常的情况下,可能是不可恢复的情况(空指针取消引用),在这种情况下,是另一个进程获得CPU。它可能是可恢复的情况,例如 I/O 请求或页面错误。如果服务这种情况需要与外围设备接口,这可能会阻塞被中断的进程,因此另一个进程将获得一些 CPU 时间。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。