这是为什么 RAM 必须是易失性的?。当问题回答为什么计算机主存储器不能是非易失性的时,我突然想到为什么我们不能用电池备份 DRAM,以便在启动时保存其内容。
但 ,因为这项技术不存在,我很好奇同样的原因是什么。
所以,有哪些实际原因导致无法设计像 CMOS 和游戏卡带中使用的那样的由电池供电的主存储器?
笔记: 我希望得到的答案能够说明设计这种系统所涉及的实际问题,而不是将其与现有的技术(如挂起/休眠)进行比较。
答案1
为 RAM 引入电源称为打开计算机,您所说的基本上就是让计算机保持打开状态并按下睡眠按钮。
扩展答案:
它已经在当前硬件允许的范围内实现,睡眠模式会关闭所有不必要的硬件以将计算机的状态保持在 RAM 中,因此除了关闭机器的概念之外,这些想法完全相同。要真正将机器重新启动到之前的状态,需要 RAM 中留有一些可用空间,并且主要的内核修改,所以除非你对 NT 内核进行逆向工程或委托微软创建该功能,否则软件本身会使这变得不可能。
答案2
补充一下 Slowki 所说,睡眠之所以有效,是因为你不会重启。
只有当您知道数据是什么以及位于何处时,RAM 中的数据才有意义。事实上,没有明确的规则规定,在启动时,任何程序都应将其信息存储在 RAM 的任何地方(当然也有例外)。
如果你的建议(在重启之间保留 RAM 信息)付诸实践,那么操作系统必须成为中间人在每个正在运行的程序和 RAM 中的信息之间建立联系。为了做到这一点,你需要将每条信息的地址存储在 RAM 中,然后告诉程序访问它们。
这不仅需要完全重写内存分配规则,而且还存在危险的情况,即操作系统(而不是程序)对程序的状态负责。由于这其中涉及的困难以及当前的编程实践,这些就是我指出你的建议不可行的原因。
睡眠可使计算机处于低功耗状态,以便存储计算机的状态。计算机处于睡眠状态时,不应发生任何 RAM 或磁盘活动。
还有休眠功能,您不用使用易失性 RAM,而是使用非易失性存储器(HDD 或 SDD)来存储 RAM 的内容。在这种情况下,您无需使用任何电源。
答案3
这个想法可能有害。如果你关闭电脑,而内存中仍保留着其内容,那么对电脑的任何更改都可能带来破坏。
答案4
为什么不为 RAM 引入电池电源以便在启动时保存其内容?
实际上,您的计算机已经在使用电池供电的内存。当您无法启动计算机时,您是否曾不得不重置 BIOS 设置?有两种方法可以做到这一点:使用跳线或移除 CMOS 电池。该电池用于为用于保存 BIOS 设置的少量内存供电。它不是 RAM,但它接近您要求的 - 如您所见,我们已经在使用供电内存。
到目前为止,我们没有使用有源 RAM,因为我们有 SSD。消费级 SSD 可让您在几秒钟内启动操作系统,而且它们比 RAM 便宜得多。从磁盘读取文件就是这样。
但 SSD 彻底改变了游戏规则。那么为什么在SSD时代? 因为 20 GB(我的 Windows 文件夹大小)的 HDD 空间售价为 2.2 美元,而 20 GB 的 DDR3 售价为 220 美元(Newegg 的最佳报价)。如果你能负担得起,那么有一些可用的选项。
我仅谈论将文件保存在 RAM 中,因为在当前的硬件和软件设计下,在重启后保持状态是不可能的。Keltari 有已发布例如更换显卡可能会对硬件或软件造成破坏。执行磁盘修改也是如此。
例如,如果您取出驱动器(或 RAM)并弄乱一些文件,RAM 和硬盘上的同一文件可能会在某个时候失去同步。检查 RAM 文件是否与磁盘文件匹配的速度与简单地从磁盘读取一样慢,因此这会违背目的。您必须记住重置 RAM(如 CMOS 电池)或创建可以执行此操作的硬件系统,但它们也需要电源。构建这样的系统很难,甚至不可能。
最后,状态意味着易变——与文件,应该保留。这就是计算机的设计方式。要改变这一点,你必须重新思考自从易失性 RAM 首次用于计算机以来我们所做的一切。