Как сгенерировать случайное число внутри ядра FreeBSD на корневом уровне? - PullRequest
0 голосов
/ 04 февраля 2019

Для моего курса по операционной системе я реализовал алгоритм планирования лотереи вместо того, что уже было дано для FreeBSD.

Чтобы реализовать планирование лотереи, я должен иметь возможность использовать случайное число.Однако я не могу использовать стандартную библиотеку C (которая использует функцию rand) в ядре FreeBSD.`

Я изменяю два файла .c из корня (sched_ule.c и kern_switch.c), которые находятся в /sys/kern, и пытаюсь создать случайную переменную в файле sched_ule.c, используя random.h, который находится в /sys/sys

На данный момент я надеюсь сделать небольшой шаг и получить случайное число, которое будет напечатано после запуска make buildkernel и перезагрузки.

1 Ответ

0 голосов
/ 05 февраля 2019
  1. Реализуйте свой собственный псевдо-ГСЧ.C Rand не генерирует безопасную случайность, поэтому вы можете сделать то же самое.
  2. Если вы используете post-ivybridge intel-x86, вы можете просто выполнить rdrand (это взлом, но он будет работать нормально).Я подозреваю, что другие арки имеют похожую инструкцию или механизм.
  3. Используйте функции произвольности FreeBSD.Он почти наверняка имеет реализацию экстрактора случайности.
...