打印
[uCOS/RTOS]

关于程序内存运行分配理解

[复制链接]
758|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hushiganghu|  楼主 | 2016-9-19 14:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人近期在学UCOS入手,顺便就去理解一下操作系统基本原理。
今天在网上看到了这么一句话“操作系统的服务把用户数据和应用程序装入内存中运行。“
这段话有点理解不通,我把我的见解说出来,麻烦各位高手看看我有没有想歪。

从基本的51裸机说起,譬如一个2Krom,1KRAM。
程序编译完成后都固化在ROM里面,程序运行时,CPU控制器从ROM中取出指令并执行,
全局变量和局部变量都分配在RAM中(还有些特殊寄存器),程序也就正常运行了。所以对于裸机来说,程序一直在ROM中,只是需要才取出来一条条运行,这个理解对吗?

操作系统的理解,譬如一个200KROM,2KRAM芯片,编译完成后程序大小可能是150kROM,30KRAM,
程序运行时候,MMU把程序分割成一块块,每一块ROM代码都放进RAM中运行,譬如首块ROM和RAM共只占1K AM空间
这样就等于实现了虚拟内存拓展,第一块结束时再把下一块放进内存,是不是这个意思?

相关帖子

沙发
xinzha| | 2016-9-22 11:32 | 只看该作者
ucos的时候,涉及不到MMU之类复杂的概念。
“操作系统的服务把用户数据和应用程序装入内存中运行。“这句话更多是针对Linux这类可以动态加载用户程序的复杂操作系统,在Linux系统中,每个用户程序可以认为自己拥有完整的地址空间,并且在操作系统和驱动没有bug的情况下,各个应用程序之间是互不干扰的(除非你自己想让他们互动)。
而对于ucos这类极简系统来说,有一种情况也可以认为是装入,比如为了省钱使用了NAND而不是ROM,那么就需要系统起来之后再把代码拷贝进来。当然也可以有有限的动态加载功能,不过需要你自己来实现。

使用特权

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

本版积分规则

5

主题

15

帖子

1

粉丝