打印
[C语言]

经常听人说程序在RAM中运行,这句话是不是有问题?

[复制链接]
4052|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
6688hyc|  楼主 | 2017-11-3 16:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
gujiamao12345| | 2017-11-3 16:59 | 只看该作者

那你把你电脑ddr拔了,看能不能继续回答我的问题

使用特权

评论回复
板凳
feelhyq| | 2017-11-3 17:36 | 只看该作者
gujiamao12345 发表于 2017-11-3 16:59
那你把你电脑ddr拔了,看能不能继续回答我的问题

拔掉了 不也可以运行吗?

使用特权

评论回复
地板
feelhyq| | 2017-11-3 17:41 | 只看该作者
程序在哪里运行要看是芯片架构,比如说STM32, code bus和data bus连接到了SRAM上面,那么SRAM里面除了放通常用的数据 还可以放代码。但是更多的,比如说51单片(加入RAM足够大),它的RAM里面是不能放程序的,因为51单片机 RAM没有与 code bus连接。

至于经常听人说程序放在RAM里面运行,通常的工作环境是 跑很大型的操作系统,比如说linux,像跑UCOS这种小的OS,芯片内部的NOR FALSH容量足够大,基本上不会放到RAM里面去运行

使用特权

评论回复
评论
ta1ent 2017-11-3 21:44 回复TA
精辟 
5
gujiamao12345| | 2017-11-3 18:10 | 只看该作者
feelhyq 发表于 2017-11-3 17:41
程序在哪里运行要看是芯片架构,比如说STM32, code bus和data bus连接到了SRAM上面,那么SRAM里面除了放通 ...


LZ的RAM的意思可能是通用的内存..。

使用特权

评论回复
6
资深技术| | 2017-11-3 23:33 | 只看该作者
准确说,楼主是对的。
太多教科书都说在RAM里运行,这是泛指电脑在运行程序时需要从硬盘把程序读到RAM里,或者是处理芯片(cpu,arm,dsp等)要从ROM(flash)里读出指令到RAM里运行,这是不严谨的。
CPU从RAM存取指令,或是直接从ROM(flash)里读取指令,依照指令运行,所以真正的运行是在CPU里。

使用特权

评论回复
7
whtwhtw| | 2017-11-4 15:05 | 只看该作者
正常情况下指令是放在flash中的,执行程序时候是读一句flash指令,CPU执行一条指令。
经常听人说程序在RAM中运行是指把flash中的程序在执行的时候全部读入RAM中,然后从RAM中读取一条指令,CPU执行一条指令

使用特权

评论回复
8
whtwhtw| | 2017-11-4 15:08 | 只看该作者
经常听人说程序在RAM中运行,其优点有2个,一是操作FLASH读写的程序,如果不把这部分代码放入RAM中,flash又要读取指令又要操作它自身,操作读写的时候会读不到指令而死机;
二,代码放入RAM能加速指令执行时间,比代码在flash中快。

使用特权

评论回复
9
McuPlayer| | 2017-11-4 22:33 | 只看该作者
flash的读取速度较低,RAM读取速度高,这时可以把需要高速执行的代码提前copy到RAM中执行

使用特权

评论回复
10
雪山飞狐D| | 2017-11-5 18:17 | 只看该作者
    把中断向量表和代码拷进RAM里面,然后可以对flash里面的原代码进行在线升级或者格式化,或者拷进SD卡之类外部存储器,执行特定程序

使用特权

评论回复
11
linqing171| | 2017-11-5 20:30 | 只看该作者
严谨一点来说应该是   cpu  从 RAM 中取的指令,  CPU  从 Flash 中取的指令。
不过我感觉  好像是英文手册里面,运行效率的章节 也都是 说   程序在RAM中运行。

使用特权

评论回复
12
wx85105157| | 2017-11-5 22:11 | 只看该作者
feelhyq 发表于 2017-11-3 17:41
程序在哪里运行要看是芯片架构,比如说STM32, code bus和data bus连接到了SRAM上面,那么SRAM里面除了放通 ...

说的不错,但是需要补充下,像是最低端的stm8s003s也有ram运行代码的能力,是因为他的iap烧写flash的时候,是不能从flash里面运行代码的。

使用特权

评论回复
13
oayzw| | 2017-11-6 11:24 | 只看该作者
本帖最后由 oayzw 于 2017-11-6 11:31 编辑

绝大多数单片机芯片内包括了CPU、ROM\RAM,CPU从ROM(通常是FLASH)中取指运行程序
PC的CPU和RAM是二个物理部件,通常先把程序(从硬盘、光盘等)拷贝到RAM中,CPU再从RAM中取指令运行

使用特权

评论回复
14
潜力变实力| | 2017-11-6 15:28 | 只看该作者

flash的读取速度较低,RAM读取速度高,这时可以把需要高速执行的代码提前copy到RAM中,然后CPU再从RAM中取指令运行!!实际运行是在CPU里面,RAM只是起到存储的作用。

使用特权

评论回复
15
一往直前| | 2017-11-6 18:28 | 只看该作者
在RAM里面运行的是临时的数据,就是你程序运行的临时数据。掉电就挂了

使用特权

评论回复
16
liruikun| | 2017-11-7 08:49 | 只看该作者
学到了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

278

主题

1320

帖子

16

粉丝