据我了解,内存用于很多事情。它充当磁盘缓存,并包含程序的指令及其堆栈和堆。这是一个思想实验。如果人们不关心计算机处理数据的速度或时间,那么假设计算机的磁盘容量很大,那么它可以拥有的最小内存量是多少?可以只拥有一个磁盘就可以消除内存吗?
显然不需要磁盘缓存。如果我们在磁盘上设置交换空间,则程序堆栈和堆也不需要内存。是否有需要记忆的东西?
据我了解,内存用于很多事情。它充当磁盘缓存,并包含程序的指令及其堆栈和堆。这是一个思想实验。如果人们不关心计算机处理数据的速度或时间,那么假设计算机的磁盘容量很大,那么它可以拥有的最小内存量是多少?可以只拥有一个磁盘就可以消除内存吗?
显然不需要磁盘缓存。如果我们在磁盘上设置交换空间,则程序堆栈和堆也不需要内存。是否有需要记忆的东西?
Answers:
当然。原则上,给定适当的硬件,您可能只有一个磁盘,所有内容都存储在磁盘上。每当CPU执行加载或存储指令时,可能会有一些硬件将其转换为磁盘读或写操作。速度非常慢:在磁盘上,每次寻道大约需要10毫秒,因此您每秒可以进行约100次随机访问读写。
一些系统将闪存映射到其地址空间。闪存提供非易失性(永久)存储。因此,在某些方面,这类似于您提到的内容-尽管这些系统通常也具有RAM。
这个问题并非纯粹是学术性的。从历史记录来看,最早的商业生产的计算机之一(对不起,我不记得哪个是副产品)没有任何RAM-所有程序都是通过直接从磁鼓(旋转圆柱体)中获取指令来执行的表面可磁化(磁盘稍后问世)]。速度相对较慢,但比许多竞争对手便宜。[这是在“地铁”时代的回头路]
有趣的是,它配备了一种现在已经过时的工具,称为“优化汇编程序”-即汇编程序不仅生成机器指令,而且还连续地将它们写到感光鼓上,从而最大程度地减少了每条指令的时间等待鼓旋转到下一个。
不能。磁盘驱动器不能像RAM那样随机寻址。相反,它们是块存储设备。您不能从它们读取或写入字节。而且您的CPU无法一次读取整个扇区,因此需要随机访问。操作系统向您隐藏了这一详细级别,但是它们是通过将整个sctor读取到RAM中,对其进行修改并将其写回来实现的。
因此,您需要一块随机存取存储器。不过,这可能是CPU缓存,它是由SRAM(一种快速的RAM)制成的。
不只是磁盘。闪存是按块设计构建的,这是其低价格的关键。它甚至具有比普通磁盘扇区大得多的块,但是它在内部使用RAM将其隐藏在操作系统中。
您可以使持久存储可以直接由CPU使用。EEPROM存储将属于此类(电子可擦可编程“只读”存储器-尽管“读取优化”实际上是更好的描述)。
当您使用虚拟内存并需要处理页面错误时,至少要处理页面错误的异常处理程序是,磁盘驱动器从硬盘驱动器读取数据,然后首先将脏页面写入磁盘,并且页面表需要一直在内存中。因为如果它们不在RAM中,则无法将它们交换回RAM。另外,您至少需要一页RAM的空间。
如果您的CPU像大型的12核Xeon,具有30 MB的高速缓存,则可能有一个既没有RAM也没有硬盘的系统,而仅使用高速缓存。(不确定是否确实有效,或者是否由于某种原因需要RAM)。
从概念上讲这是可能的。RAM只是一个缓存级别。现代计算机中有许多缓存级别(请参阅CPU的L1,L2,L3 ..缓存,当然是Ram,交换区域-这是用作RAM的磁盘的逻辑部分...-),如果您将或添加一台,机器即可运行。例如,Ubuntu Live CD可能不使用HDD的缓存级别。但是,我认为没有任何操作系统可以支持不存在RAM级别的情况。
从技术上讲,RAM是主要的易失性存储器,用于提高处理速度。一旦断电,主存储器中的数据就会丢失。如果我们使用磁盘,即仅磁盘而不是RAM,我们仍然可以运行计算机,但会有更多的读写开销,从而大大降低了系统速度。因此,我们使用RAM。