假设有两台计算机,其中一台是另一台的逐位克隆。如果我在计算机 A 上执行任意两个操作(例如更改音量,然后打开 Chrome 浏览器,然后在计算机 B 上执行相同操作,但顺序相反),计算机的状态是否仍然逐位相同(内存、磁盘等)?这些操作当然也可以是更重要的操作,例如更新应用程序或驱动程序。
深入研究一下,我试图弄清楚这两台机器......
- 将要总是处于不同的状态
- 将要几乎总是处于不同的状态,但也有特殊情况是相同的
- 可能是其中之一,但如果不知道这两个确切的动作,就不可能分辨
如果这是一个糟糕的问题 - 没有反馈的反对票无法帮助我弄清楚我的问题出了什么问题。非常感谢反馈。
答案1
两台计算机在做完全相同的事情时,绝对不能保证它们完全相同,更不用说以不同的顺序做相同的事情了。事实上,几乎没有办法为了两个系统完全相同。
我之所以这么说,是因为在各个方面使用的加密算法都依赖于加密安全的随机数生成。这意味着算法应该是绝对随机的,并且生成随机数的两台机器永远不会产生相同的数字序列。即使有两台完全相同的机器,如果它们都连接到 SSL 网站并使用相同的公钥开始与网站进行会话密钥交换,该会话密钥也绝对不会相同。
这只是一个“小”点,其他方面“相同”的机器之间存在很大差异。
除此之外,现代系统还采用地址空间布局随机化,这意味着即使运行完全相同的代码,两台机器也会有不同的内存布局,因此永远不会“位相同”。
答案2
它们可能不同的一种方式是在日志文件中。如果两个操作导致日志文件条目,则它们在日志中的顺序将不同。
答案3
这些行为不是任意的,所以我的回答无效。
由于并非所有数学运算都是可交换的,因此很容易证明答案是否定的。如果我假设:a = 1;b = 2,c = 3,则有一个
c = a + b then c = c / b
(c=1.5)
另一个
c = c / b then c = a + b
(c=3)
你可以清楚地看到