如何在根级别的 FreeBSD 内核中生成随机数?

How to generate random number within kernel of FreeBSD at root level?

对于我的操作系统课程,我实现了彩票调度算法,而不是已经为 FreeBSD 提供的算法。

为了实现彩票调度,我必须能够使用随机数。但是,我不能在 FreeBSD 内核中使用 C 标准库(使用 rand 函数)。 `

我正在从 /sys/kern 中的根目录(sched_ule.ckern_switch.c)修改两个 .c 文件,并尝试在 sched_ule.c 文件中创建随机变量使用 random.h/sys/sys

截至目前,我希望在 运行 make buildkernel 并重新启动后,再向前迈出一小步并获得要打印的随机数。

  1. 实现你自己的伪随机数生成器。 C Rand 不会生成安全随机性,因此您也可以这样做。
  2. 如果你在 post-ivybridge intel-x86 上,你可以只执行 rdrand(这是一个 hack,但可以正常工作)。我怀疑其他拱门也有类似的指令或机制。
  3. 使用 FreeBSD 的随机函数。它几乎肯定有一个随机提取器实现。