因为…
>许多程序不使用浮点或不使用它在任何给定的时间片;和
>保存FPU寄存器和其他FPU状态需要时间;因此
…操作系统内核可以简单地关闭FPU。 Presto,没有状态保存和恢复,因此更快的上下文切换。 (这是什么模式意味着,它只是意味着FPU已启用。)
如果程序尝试FPU操作,程序将陷入内核,内核将打开FPU,恢复可能已经存在的任何已保存的状态,然后返回以重新执行FPU操作。
在上下文切换时,它知道实际上通过状态保存逻辑。 (然后它可能再次关闭FPU。)
顺便说一句,我相信这本书的解释为什么内核(而不只是Linux)避免FPU操作是…不完全准确1
内核可以陷入自身,并为许多事情。 (定时器,页错误,设备中断,其他。)真正的原因是内核不特别需要FPU操作,也需要在没有FPU的架构上运行。因此,它通过不执行总是具有其他软件解决方案的操作来简单地避免管理其自己的FPU上下文所需的复杂性和运行时间。
有趣的是,注意如果内核想使用FP,FPU状态必须保存多久。 。 。每个系统调用,每个中断,每个内核线程之间的切换。即使需要偶尔的内核FP,2它可能会更快在软件中做。
也就是说,死了错了。有几种情况我知道内核软件包含一个浮点算术实现。一些架构在硬件中实现传统FPU操作,但对软件留下一些复杂的IEEE FP操作。 (思考:反正规算法)当一些奇怪的IEEE角落情况发生时,它们陷入软件,软件包含了可以陷阱的操作的一个完全正确的仿真。
文章知识点与官方知识档案匹配,可进一步学习相关知识CS入门技能树Linux入门初识Linux24731 人正在系统学习中 相关资源:漂浮截图工具-教育工具类资源
来源:weixin_39605647
声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!