首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请问关于Linux内存管理机制以及MMU的几个小问题

2012-08-13 
请教关于Linux内存管理机制以及MMU的几个问题~(一)有这样的说法:C# codeMMU负责将程序中的虚拟地址(VA)转

请教关于Linux内存管理机制以及MMU的几个问题~
(一)有这样的说法:

C# code
MMU负责将程序中的虚拟地址(VA)转换为物理地址(PA)

 
C# code
线性地址是逻辑地址到物理地址变换之间的中间层,如果启用了分页机制,那么线性地址会使用页目录和页表中的项变换成物理地址。如果没有启用分页机制,那么线性地址就直接成为物理地址了[\quote]

   
  问:说法一中的虚拟地址是否就是说法二中的逻辑地址?是的话逻辑地址转换为物理地址的过程是否就由MMU完全负责,还有说法二中的分页机制开不开启是如何实现的?
   
(二)
C# code
虚拟内存机制被比喻为:你不需要非常长的轨道让一列火车从上海开到北京。你只需要足够长的铁轨(比如说3公里)就能完成这个任务。采取的方法是把后面的铁轨即时铺到火车的前面

  问:这部分工作是由谁实现的?系统是如何做到为每个进程虚拟出4G的空间而又保证进程之间在内存中相互独立互不干扰的?
   
(三)我的理解(说法可能有不恰当):cpu的分段机制对应了逻辑地址(虚拟地址?)-->线性地址、分页机制对应了线性地址-->物理地址,这样繁冗的做法是由什么问题所制约的?

问的没什么条理,先谢各位了~~

[解决办法]
你可以去翻下《Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3

System Programming Guide》

在 Chapter 3 Protected-Mode Memory Management,图 Figure 3.1 Segmentation and Paging 有

非常详细的解释。我写的解释肯定不如那里介绍的好,就不写了

热点排行