Вот быстрая сводка того, что она делает:
сторожевая программа пишет в /dev/watchdog
каждые десять секунд. Если устройство будет открыто, но не записано в в течение минуты, то машина перезагрузит. Эта функция доступна, когда ядро создается с вЂsoftware watchdog’ поддержка (стандарт в ядрах Debian).
, В то время как это может казаться полезным, это не действительно настолько крайне важно для надежности Вашей системы, кроме того, это имеет тенденцию вызывать ненужные пробуждения, которые в свою очередь могут привести к более короткой производительности батареи/, можно легко отключить его путем добавления nmi_watchdog=0
к параметрам начальной загрузки ядра в /etc/default/grub
.
Вся первая глава основополагающей книги Дональда Кнута Работа Получисленные алгоритмы посвящена теме генерации случайных чисел. Я действительно не думаю, что SO-ответ приблизится к описанию затронутых проблем. Прочтите книгу.
Оказывается, на удивление легко получить неполноценные псевдослучайные числа. В течение десятилетий золотым стандартом был удивительно простой алгоритм: сохранить состояние x , умножить на константу A (32x32 => 64 бита), затем добавить константу B , затем вернуть младшие 32 бита, которые также станут новыми x . Если тщательно выбрать A и B , это действительно работает довольно хорошо.
Псевдослучайные числа также должны быть повторяемыми, чтобы воспроизводить поведение во время отладки. Таким образом, заполнение генератора (инициализация x , скажем, временем дня) обычно избегается во время отладки.
В последние годы, и с большим количеством вычислительных циклов, доступных для записи, более сложные алгоритмы доступны, некоторые из них были изобретены после публикации весьма авторитетных получисленных алгоритмов . Операционные системы также начинают предоставлять аппаратные и сетевые биты энтропии для специализированных криптографических целей.
Страница Википедии - хороший справочник.
Фактический используемый алгоритм будет зависеть от языка и реализации языка.
Чтобы точно ответить на ваш ответ, случайная функция предоставляется операционной системой ( обычно).
Но то, как операционная система создает эти случайные числа, является специализированной областью компьютерных наук. См., Например, страницу вики, опубликованную в ответах выше.
random () - это так называемый генератор псевдослучайных чисел (PRNG). random () в основном реализован как линейный конгруэнтный генератор. Это функция вида X (n + 1) (aXn + c) по модулю m. Xn - это последовательность сгенерированных псевдослучайных чисел. Генаратированную последовательность чисел легко угадать. Этот алгоритм нельзя использовать в качестве криптографически безопасного ГПСЧ.
Википедия: Линейный конгруэнтный генератор
И взгляните на несгибаемые тесты для ГПСЧ Генаратированную последовательность чисел легко угадать. Этот алгоритм нельзя использовать в качестве криптографически безопасного ГПСЧ.
Википедия: Линейный конгруэнтный генератор
И взгляните на несгибаемые тесты для ГПСЧ Генаратированную последовательность чисел легко угадать. Этот алгоритм нельзя использовать в качестве криптографически безопасного ГПСЧ.
Википедия: Линейный конгруэнтный генератор
И взгляните на несгибаемые тесты для ГПСЧ PRNG Diehard Tests
Одна вещь, которую вы, возможно, захотите изучить, - это семейство случайных устройств, доступных в некоторых Unix-подобных ОС, таких как Linux и Mac OSX. Например, в Linux ядро собирает энтропию из различных источников в пул, который затем использует для заполнения своего генератора псевдослучайных чисел. Энтропия может поступать из множества источников, наиболее заметным из которых является дрожание драйвера устройства из-за нажатия клавиш, сетевых событий, активности жесткого диска и (чаще всего) движений мыши. Помимо этого, существуют и другие методы сбора энтропии, некоторые из них даже полностью реализованы аппаратно. Есть два символьных устройства, с которых вы можете получать случайные байты из Linux и в Linux, они ведут себя следующим образом:
Обратите внимание, что хотя Mac OSX использует другой метод для своего PRNG и, следовательно, не блокирует, мои личные тесты (выполнено в колледже) показали, что оно чуть менее случайное, чем ядро Linux. Хотя, конечно, достаточно хорошо.
Итак, в моих проектах, когда мне нужна случайность, я обычно использую чтение с одного из случайных устройств, по крайней мере, для начального числа для алгоритма в моей программе.
Обратите внимание, что в то время как Mac OSX использует это другой метод для ГПСЧ и, следовательно, не блокирует, мои личные тесты (сделанные в колледже) показали, что он почти менее случайный, чем ядро Linux. Хотя, конечно, достаточно хорошо.
Итак, в моих проектах, когда мне нужна случайность, я обычно использую чтение с одного из случайных устройств, по крайней мере, для начального числа для алгоритма в моей программе.
Обратите внимание, что в то время как Mac OSX использует это другой метод для ГПСЧ и, следовательно, не блокирует, мои личные тесты (сделанные в колледже) показали, что он почти менее случайный, чем ядро Linux. Хотя, конечно, достаточно хорошо.
Итак, в моих проектах, когда мне нужна случайность, я обычно использую чтение с одного из случайных устройств, по крайней мере, для начального числа для алгоритма в моей программе.
s PRNG и, следовательно, не блокируется, мои личные тесты (проведенные в колледже) показали, что он чуть менее случайный, чем ядро Linux. Хотя, конечно, достаточно хорошо.Итак, в моих проектах, когда мне нужна случайность, я обычно использую чтение с одного из случайных устройств, по крайней мере, для начального числа для алгоритма в моей программе.
s PRNG и, следовательно, не блокируется, мои личные тесты (проведенные в колледже) показали, что он чуть менее случайный, чем ядро Linux. Хотя, конечно, достаточно хорошо.Итак, в моих проектах, когда мне нужна случайность, я обычно использую чтение с одного из случайных устройств, по крайней мере, для начального числа для алгоритма в моей программе.