先介绍一下三个地址:物理地址、逻辑地址、线性地址。
物理地址:存储的是硬件系统中真实存在的物理内存空间,是实物,看得见摸得着的东西。物理内存的访问通过硬件系统总线进行的,一般的32位的机器上都具有4GB的物理地址空间。注意,是一般状况。
逻辑地址:X86体系结构CPU中,有若干个段寄存器,“段寄存器+偏移地址”即可表示内存地址。使用这种方式表示的地址称为“逻辑地址“,系统会自动个将逻辑地址转换为线性地址。就本人理解,所谓的逻辑地址只是相关人员为了方便自己理解,所使用的一种机制,用的是人们的正常理解方式。在汇编里面经常见到”段地址+偏移地址“的概念。
线性地址:与物理地址类似,是没有分段的概念的,地址是连续的。
逻辑地址和线性地址都要映射成物理地址,之所以又多出一个线性地址,而不是直接用一个逻辑地址就来代替来的原因是,在386架构中,cpu可以出于是模式和保护模式两种模式下,在实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,cpu不进行自动地址转换)而在保护模式下必须先将逻辑地址转化为线性地址,在看是或否采用了分页机制,若果没有分页,那么此线性地址等于物理地址,若采用了分页机制,则再通过地址转换(相关的经过分页目录、分页表的具体映射过程读者可以上网参阅资料)映射成物理地址。
内存管理正式使用了分页机制,才使得不同进程之间的地址能够和平相处,即不同进程指向的线性地址可以相同,然后经过分页机制,转化成不同的物理地址,这就是分页的好处。
然而当物理内存不够了又该怎么办了?分页机制提出了一种很有创意的想法,就是虚拟地址!通过分页机制将原本指向物理内存的地址映射到硬盘中,充分发挥硬盘存储容量大的优点,合理利用资源,可以说是分页机制的完结啊!
个人学习总结,查看资料看到论坛上有一篇更好的大牛作,地址贴出,供大家学习,http://blog.csdn.net/do2jiang/article/details/4512417