Linux kernel浮点计算支持

本文详细介绍了Linux内核如何实现浮点计算,包括不支持的原因、加入浮点计算的方法、所需处理器条件、内核推荐使用的场景以及已知的内核浮点计算应用实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【link】http://yarchive.net/comp/linux/kernel_fp.html

(1)Linux kernel默认不支持浮点计算。因为浮点相关寄存器(浮点计算上下文)在系统调用(进程切换)的过程中不会被保存,出于进程切换效率的考虑。

(2)在X86上,kernel可以通过以下方式加入浮点计算:

	kernel_fpu_begin();
	...
	kernel_fpu_end();
kernel_fpu_xxx()保证系统抢占被关掉,使得begin和end之间的code不会被中断,从而安全进行浮点计算。但要求begin和end之前的代码不能有休眠或调度操作。

(3)使用浮点计算,需要处理器有浮点运算单元(FPU)。

(4)内核不能直接调用libc,所以kernel浮点计算不能使用libc的任何函数。

(5)  内核不推荐使用浮点计算,除非某些特殊情况,例如需要用MMX/XMM的工作。

(6)已知的内核浮点计算用户是RAID校验码的MMX计算。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值