Если два идентичных по битам компьютера выполняют одни и те же действия, но в разном порядке, останутся ли они идентичными по битам?

Рассмотрим два компьютера, один побитовый клон другого. Если затем я выполню любые два произвольных действия на машине A, например, изменим громкость, затем открою браузер Chrome, а затем сделаю то же самое на компьютере B, но в обратном порядке, будет ли состояние компьютеров по-прежнему идентичным ( баран, диск и т. д.)? Действия, конечно, также могут быть более значительными, например, обновление приложения или драйвера.

Погружаясь немного глубже, я пытаюсь выяснить, не …

  • буду всегда быть в разных состояниях
  • буду почти всегда находиться в разных состояниях, но есть особые случаи, которые идентичны
  • правдоподобно может быть и то, и другое, но его невозможно сказать, не зная двух точных действий

Если это плохой вопрос – отрицательные голоса без обратной связи не помогают мне понять, что не так с моим вопросом. Мы будем благодарны за обратную связь.

3 ответа
3

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

Я говорю это, потому что в разных точках используются различные алгоритмы шифрования, которые все полагаются на криптографически безопасную генерацию случайных чисел. Это означает, что алгоритмы должны быть абсолютно случайными и что две машины, генерирующие случайные числа, никогда не должны попадать в одну и ту же последовательность чисел. Даже при наличии двух совершенно идентичных машин, если они оба подключаются к веб-сайту SSL и используют один и тот же открытый ключ для начала обмена сеансовыми ключами с веб-сайтом, этот сеансовый ключ абсолютно не будет одинаковым.

Это всего лишь один «второстепенный» момент, в котором существует большая разница между «идентичными» машинами.

Вдобавок к этому в современных системах используются Рандомизация разметки адресного пространства, что означает, что даже при выполнении одного и того же кода две машины будут иметь разную структуру памяти и, следовательно, никогда не будут «битовыми идентичными».

    Один из способов, которым они могут отличаться, – это файлы журналов. Если два действия вызывают записи в файле журнала, они будут в другом порядке в журналах.

      Эти действия не произвольны, поэтому мой ответ недействителен.

      Поскольку не все математические операции коммутативны, легко показать, что ответ – НЕТ. Если предположить: a = 1; b = 2, c = 3 У одного делать

      c = a + b then c = c / b (с = 1,5)

      а другой делает

      c = c / b then c = a + b (с = 3)

      Вы можете ясно это видеть

      • Поддельный пример. В вопросе оговаривается «два произвольных действия», подразумевающие несвязанные действия. Любой с математической и / или программной грамотностью знает, что порядок вычислений (с использованием общего набора переменных) не может выполняться в произвольном порядке. Программы написаны для последовательного выполнения операторов.

        – опилки

        13 часов назад

      • Пример был выбран, чтобы показать, насколько важен порядок операций, а не для того, чтобы показать, что я разбирался в математике больше, чем другие. Я пропустил произвольное слово.

        – uSlackr

        9 часов назад

      Добавить комментарий

      Ваш адрес email не будет опубликован. Обязательные поля помечены *