sha*_*810 2 freebsd exception cpu-architecture
我正在阅读《FreeBSD 操作系统的设计与实现》一书,我发现了这一点:
这种重新启动指令的能力称为精确异常。CPU可以通过在指令开始时保存足够的状态来实现重启,以便在发现故障时可以恢复状态。或者,指令可以延迟任何修改或副作用,直到发现任何故障之后,以便指令执行在重新启动之前不需要备份。
我不明白是什么意思
修改或副作用
参考文中的内容。谁能详细说明一下吗?
FreeBSD 书中的描述非常以操作系统为中心。我什至不同意它的定义,这种重新启动指令的能力被称为精确异常。电源故障异常后,您不会重新启动指令。因此,我建议不要试图弄清楚 McKusick 的意思,而是去其他地方更好地描述异常。
顺便说一句,我更喜欢史密斯的定义:
如果保存的进程状态与程序执行的顺序模型(其中一条指令在下一条指令开始之前完成)相对应,则中断是精确的。
https://lagunita.stanford.edu/c4x/Engineering/CS316/asset/smith.precise_exceptions.pdf
几乎所有现代处理器都支持精确异常。所以艰苦的工作已经完成了。操作系统必须做的是为硬件发生的异常注册一个陷阱处理程序。例如,将会有一个页面错误处理程序、浮点......要弄清楚这些处理程序需要什么,您必须阅读处理器操作理论。
尽管系统细节看起来很粗糙,但它的水平相当高。它没有说明硬件正在做什么,因此 FreeBSD 的描述非常简短。
要真正理解精确的异常,您需要在计算机体系结构书籍中阅读有关管道、无序、超标量等的内容。我推荐《计算机体系结构定量方法》第六版。第 C-38 页的“处理异常”一节介绍了不同类型异常的分类。FreeBSD 的描述仅描述了一些例外情况。然后介绍管道如何处理每种异常类型。
此外,《Linux 编程接口》中有 3 个很长的章节介绍 POSIX 信号接口。我知道它不是 FreeBSD,但它涵盖了应用程序将看到的内容,例如,发生浮点异常并向进程发送 SIGFPE 信号时。
| 归档时间: |
|
| 查看次数: |
2887 次 |
| 最近记录: |