当前位置:嗨网首页>书籍在线阅读

14-内存空间

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

2.3.5 内存空间

老式嵌入式操作系统通常将系统内存看做一大块线性地址空间,并进行管理。也就说,微处理器的地址空间的下限是0,上限是其物理地址范围的顶部。举例来说,如果一个微处理器有24条物理地址线,其内存范围的上限就是16 MB。因此,其地址范围可以用十六进制表示为从0x00000000到0x00ffffff。硬件设计常常将DRAM放置在这个地址范围的底部,并将闪存放置在顶部。位于DRAM顶部和闪存底部之间的那些未使用的地址范围常常被分配给板上的各种外围设备芯片,用于对它们进行寻址。这种设计方法一般是由所选择的微处理器决定的。图2-5显示了一个简单嵌入式系统中的典型内存布局。

11.png

图2-5 典型的嵌入式系统内存布局

在基于老式操作系统的嵌入式设备中,操作系统和所有的任务[12]具有相同的权限,能够访问系统的所有资源。某个进程中的一个故障可能会改写系统中任意一块内存的内容,这块内存可能属于这个进程本身、操作系统、其他任务,甚至是地址空间中的一个硬件寄存器。虽然这种内存管理方式有个最大的优点:简单,但它会导致一些很难诊断的故障。

[12] 在这里的讨论中,“任务”这个词代表任何一个执行线程,而不考虑生成、管理和调度它的机制。

高性能的微处理器中都包含一个复杂的硬件引擎,称为内存管理单元(Memory Management Unit,MMU)。MMU的作用是使操作系统能够在很大程度上管理和控制地址空间,包括操作系统自身的地址空间和分配给进程的地址空间。这种控制主要体现为两种形式:访问权限控制(access right)和内存地址转换(memory translation)。访问权限控制允许操作系统将特定的内存访问权分配给特定的进程。内存地址转换允许操作系统将其地址空间虚拟化,从而带来很多好处。

Linux内核利用这些硬件MMU实现了一个虚拟内存操作系统。虚拟内存所带来的最大的一个好处是,它可以让系统的内存看起来比实际的物理内存多,这样能够更加有效地利用物理内存。其他的好处是,内核在为任务或进程分配系统内存时,可以指定这块内存的访问权限,从而防止某个进程错误地访问属于另一个进程或内核自身的内存或其他资源。

下一节将更详细地讨论MMU的工作原理。复杂的虚拟内存系统的内容超出了本书的范围[13]。实际上,我们会从嵌入式系统开发者的角度来考查虚拟内存系统。

[13] 有很多优秀书籍详细讲述了虚拟内存系统。请参考本章最后一节中的推荐书目。