是否可以在没有ram的情况下使用ubuntu?


Answers:


47

否。CPU无法从交换执行代码。交换的工作原理是将RAM内容移至磁盘,将其他磁盘内容移至RAM,但执行总是从RAM执行。

不能,无法将代码或数据从磁盘直接传输到CPU缓存。您不能绕过RAM。

即使是可以直接从NOR闪存执行代码的微控制器架构,也需要用于堆栈的RAM,至少需要某些控制器具有的内置SRAM。


1
@LưuVĩnhPhúc你是对的。我仍然习惯将具有ARM Cortex-A内核的SoC称为“微控制器”,尽管这可能会引起误解。那些拥有MMU,可以运行Linux,并且通常还具有内部SRAM(需要启动代码),但是我不认为那些可以直接从闪存执行代码。好吧,OP似乎还是想一台普通的PC。
Philippos

1
认为 S390 Linux可以直接从HDD执行代码。添加该功能是因为S390是31位体系结构,并且使每个字节都可用于数据而不是代码是一个胜利。不过,我可能记错了,但是补丁集令人难忘,因为它具有独特的区别,即对大型机和微控制器都有价值(即Linux扩展的两个极端),但对两者之间的任何内容都不感兴趣。
约尔格W¯¯米塔格

2
嗯,找到了,它就是XIP功能(就地执行eXecute)。显然,您仍然需要RAM来存储数据。它仅与代码有关。
约尔格W¯¯米塔格

1
@rackandboneman作为嵌入式开发人员,我所做的一切从从RTOS上的8位控制器上的裸露汇编程序到嵌入式Linux都有。我遇到的最少的内存是具有三个返回地址堆栈的内存的ATtiny。没有那个,您甚至都不会中断!现在,请不要争论此堆栈存储器是ram还是寄存器...(-:
Philippos

1
@Philippos我为什么要争论-我们在谈论同一件事。
rackandboneman

7

/electronics//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,获取视频信号,或者甚至无法从任何介质进行引导。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.