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