如果我将 swappiness 的值设置为 100,并尝试在我朋友没有 RAM 的计算机中启动安装了 ubuntu 的硬盘驱动器,我可以在没有 RAM 的情况下启动计算机吗?
答案1
不可以。CPU 无法执行来自交换区的代码。交换的工作原理是将 RAM 内容移至磁盘,将其他磁盘内容移至 RAM,但执行始终来自 RAM。
而且,没有办法将代码或数据从磁盘直接传输到 CPU 缓存。你无法绕过 RAM。
即使可以直接从 NOR 闪存执行代码的微控制器架构也需要 RAM 作为堆栈,至少需要一些内置 SRAM,就像某些控制器那样。
答案2
https://electronics.stackexchange.com/a/311839/111920包含链接http://www.drdobbs.com/parallel/booting-an-intel-architecture-system-par/232300699?pgno=2它极其详细地描述了现代英特尔 CPU 的启动过程。
TL;DR:不。在启动过程中确实存在一个阶段,其中 RAM 芯片未使用,处理器仅以其内部缓存作为临时 RAM 运行。但这是在 BIOS 加载过程的早期阶段,BIOS 所做的第一件事就是初始化 RAM,以便能够使用它。在那里运行的机器代码非常专业,非常手工制作。
在那之后非常早期阶段,所有事情都需要 RAM。这意味着如果没有 RAM,您甚至无法进入 BIOS、获取视频信号,更不用说从任何介质启动了。