中断&内核熵池 entropy pool

本文介绍了Linux内核如何通过注册中断处理函数并设置SA_SAMPLE_RANDOM标志,收集设备产生的中断作为熵源,以驱动随机数生成器。文章详细解释了熵的概念,以及内核如何通过create_entropy_store和add_*_randomness函数收集和处理噪声数据,确保系统启动时随机数质量。

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

注册一个中断处理函数

驱动程序可以通过 request_irq() 注册一个中断处理函数,并且激活给定的中断线,以处理中断。

int request_irq(unsigned int irq,
                irq_handler_t handler,
                unsigned long flags,
                const char *name,
                void *dev);

第三个参数 flags :

 *	Flags:
 *
 *	SA_SHIRQ		Interrupt is shared
 *
 *	SA_INTERRUPT		Disable local interrupts while processing
 *
 *	SA_SAMPLE_RANDOM	The interrupt can be used for entropy

       

当设置为 IRQF_SAMPLE_RANDOM(SA_SAMPLE_RANDOM) 时,表明这个设备产生的中断对内核熵池有贡献。内核熵池负责提供从各种随机事件导出的真正随机数。

Linux内核采用熵来描述数据的随机性。熵(entropy)是描述系统混乱无序程度的物理量,一个系统的熵越大则说明该系统的有序性越差,即不确定性越大。

计算机本身是可预测的系统,因此,用计算机算法不可能产生真正的随机数。但是机器的环境中充满了各种各样的噪声,如硬件设备发生中断的时间,用户点击鼠标的时间间隔等是完全随机的,事先无法预测。Linux内核实现的随机数产生器正是利用系统中的这些随机噪声来产生高质量随机数序列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值