2015年(3)
分类: LINUX
2015-08-02 12:54:26
其实寻址这个问题,站在虚拟空间角度来看,就是通过线性地址寻找页表。站在物理空间角度来看,是通过地址总线寻找物理页框。中间的MMU起到承上启下的作用。
说的通俗一点,我举个例子。
虚拟空间好比阴间,物理空间好比阳间,阴间与阳间各有各自的法则,在保护着各自世界。使其正确平稳的运作。阴间的东西不能随便来到阳间,而阳间的东西也不能随便去到阴间,比如:阳间的人们一直在探索存不存在灵魂究竟有没有阴间,而阴间的东西其实也一直在努力冲破阴间的束缚来到阳间,因此就有这样一个奇怪的地方把这两个地方关联了起来,打通了束缚,就是半步多。这是连接阴阳两界的大门。
对于linux中的虚实空间问题也是一样的,因此话说回来,
虚拟地址不能访问物理空间,而物理空间返回的地址也不能直接拿给进程使用(进程运行在虚拟空间,需要虚拟地址),但这2个空间还必须关联起来,形成一个整体,因此需要一个枢纽,就像半步多一样。因此MMU就充当了半步多这个角色,它沟通了虚实空间 。MMU通过虚拟空间的页表,解析出物理地址给cpu,因此cpu可以通过地址总线寻址到物理空间。
至于页表的建立,也就是几种映射问题,请看下几篇博文。