为什么内核实现浮点数运算那么难


正在看《Linux内核设计与实现》,P18页讲到,“不要轻易在内核中使用浮点数”,他的理由说得不够详细和清楚,为什么内核实现浮点数运算那么难呢?为什么在用户空间就可以很容易实现浮点数运算呢?

Linux 内核

hongcha 13 years, 3 months ago

这个大概原因是用户进程执行浮点指令时会触发DNA异常,有对相关的浮点运算寄存器做保护。如果内核使用浮点指令,则可能会触发DNA异常破环用户的浮点栈,对当前的用户进程造成干扰,因此需要透明地使用浮点运算器。首先要判断用户使用过处理器且现场已恢复,如果是则需要手动保护相关寄存器,然后再使用。

王牌D机狮 answered 13 years, 3 months ago

Your Answer