无论我在互联网上浏览什么,无论浏览什么页面,都会存储在硬盘上的浏览器缓存中。浏览器缓存存储在硬盘 C 盘的 Temporary Internet Files 文件夹中。但它是否也暂时(在我浏览时)存储在 RAM 中,但现在被覆盖了?
也就是说,RAM 和浏览器缓存以及我访问的网页有关系吗?
答案1
为了显示网页的图像、文本和动态元素,您下载的所有数据都必须由 CPU 操作、处理、解码和编组为布局,然后推送到显示器,这可能是由 GPU 完成的。
为了使这些设备能够执行任何操作,它们需要将数据存储在 RAM 中。CPU 可能能够使用指令来使用权硬盘和网络设备,但根指令将数据从 RAM 拉到 CPU 缓存中,然后由 CPU 核心进行处理。
几乎一切您在计算机上执行的操作会使用 RAM。通过 PCIe 进行设备到设备 DMA可能避免使用 RAM,但如果您正在查看某事物的最终结果,那么它或至少它的某些表示都会通过您的 RAM。
为说明我所说的最后一部分,请看硬件视频解码。看解码的视频帧,从互联网下载的实际视频将是编码和压缩。您下载压缩视频,您的 CPU 将其复制到图形设备内存,然后您的图形设备在其自己的内存中解码帧。该内存是专用的 GPU RAM 还是系统 RAM 取决于您的 GPU 是专用的还是集成到 CPU 中的。
为了澄清你的评论,RAM 绝对没有持久性。它需要电力来保持其状态,与硬盘和其他完全不同贮存记忆。我写过更多关于那话题结束于当计算机关闭时,RAM 的内容会发生什么变化?
答案2
从字面意义上讲,您在屏幕上看到的内容(每个单独的图形像素,而不是文本)始终以图像的形式存储在 RAM 中,然后在每秒显示 60 次左右时循环读取。如今,对于专用图形适配器,RAM 由适配器上的专用(且速度快于平均水平)芯片组成;对于集成显卡,例如商务笔记本电脑,图形引擎可能会使用部分通用 RAM。
从不太直观的意义上讲,从服务器接收到的 HTML 以及网页的抽象模型(解析接收到的 HTML 的结果)很可能也在内存中。
现代操作系统中 RAM 和硬盘之间的交互是双向的:系统可能会决定将部分硬盘内容暂时保存在内存中(“缓存”以便更快地重复访问);并且它可能决定将数据“交换”到磁盘上,而程序会将磁盘保存在它认为的“内存”中,因为它已经有一段时间没有被访问过了,而且还有更紧急的数据需要保存。
因此,归根结底,浏览器是否尝试将所有内容保存在内存中与您的问题并不相关:操作系统可以自由地以其认为最佳的方式处理应用程序背后的内存,并且在不缺少 RAM 的系统中,当前显示的网页很可能在所有三个抽象级别的 RAM 中。
答案3
除了前面提到的答案之外,硬盘上的任何东西,至少在某个时候,也存在于 RAM 中。写入(和读取)磁盘几乎总是使用所谓的直接内存访问 (DMA),其中 CPU 命令 DMA 控制器在某个设备和 RAM 之间传输内存块。现代计算机上的几乎所有磁盘访问都是以这种方式进行的,其中 CPU 将发出命令将数据块从磁盘传输到 RAM 或从 RAM 传输到磁盘。
对于 DMA 传输,CPU 只会在进程完成时收到中断。这样做的原因是,CPU 不会在传输期间被占用,可以忙于处理其他事情(或者可以休眠,不浪费电量)。几乎所有 I/O 和存储设备(甚至包括 RAM,但尤其是磁盘)都比 CPU 慢得多。虽然我们仍在谈论相对较小的几分之一秒,但从 CPU 的角度来看,将一块数据从 RAM 传输到硬盘驱动器所需的时间可能非常长。因此,允许 CPU 只命令进程启动并在完成后收到中断可以节省大量时间,这些时间可用于 CPU 上的其他有用用途。
当您在浏览器中加载网页时,以太网控制器会将来自网站的数据放入您的 RAM 中,可能仍是加密格式。然后,它将被解密到另一个 RAM 缓冲区中。浏览器通常会使用 RAM 中已有的缓冲区来显示页面,但随后还会使用 DMA 将其复制到磁盘,这样当它再次需要该资源时就可以从那里再次加载它,而不必再次从互联网上下载它。
你也可以几乎保证任何事情现在浏览器中显示的内容目前也位于 RAM 中。为了显示该内容,它至少会以最终渲染形式位于视频 RAM 中,但只要页面仍处于活动打开状态,原始 HTML、javascript、图像文件等可能仍位于主 CPU RAM 中。
答案4
补充其他答案:从某种意义上说,现代 CPU 只能使用 RAM 中的数据进行操作。对于所有其他设备(HDD、SSD、网络适配器、声卡等),它只能说“嘿,从 RAM 中的这个位置获取这些数据”或“嘿,给我一些数据并将其放在 RAM 中的这个位置”。当设备完成后,它会通知 CPU,然后 CPU 转到 RAM 并对该数据执行它需要执行的任何其他操作。
嗯,理论上有一种古老的“PIO”方法(设备将所有数据直接逐字节发送到 CPU),但是这种方法现在实际上并不常用,因为它会占用 CPU,而且速度通常非常非常慢。
有些设备(最显著的是视频适配器,但也有许多其他设备,但程度较轻)也有自己的内部 RAM。CPU 也可能能够直接访问这些 RAM,也可能无法直接访问它们。
但要回答你最初的问题 - 正如其他人已经指出的那样,是的,网页肯定会存储在你的 RAM 中。这也将是你将看到的版本。它可能存在的所有其他地方 - 浏览器缓存、网络适配器等等 - 只是网页加载到你的 RAM 之前的垫脚石。这是它的最终目的地,之后 CPU 会对其进行处理并将其转换为图形像素,然后将其发送到视频适配器,视频适配器再将其发送到显示器。(粗略地说;那里有一些捷径可以加快速度,但原则上这就是正在发生的事情)。