我是靠谱客的博主 拉长紫菜,最近开发中收集的这篇文章主要介绍对于段页式内存管理的理解,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

      内存管理单元(MMU)负责从虚拟地址到物理地址的转化。逻辑地址(可以认为是虚拟地址)是段标识+段内偏移量的形式,MMU通过查询段表,可以将逻辑地址转化为线性地址。如果CPU没有开启分页功能,那么线性地址就是物理地址;如果CPU开启了分页功能,MMU还需要查询页表来将线性地址转化为物理地址:逻辑地址(段表)->线性地址(页表)->物理地址。

       所以段页式内存管理每读取一数据,要访问三次内存。第一次是由段表寄存器得到段表始址后访问段表,由此取出对应段的页表在内存中的地址;第二次是访问页表得到所需访问的物理地址;第三次才能访问真正需要访问的物理单元。

 

 

附:

       MMU是一种硬件电路,它包含两个部件,一个是分段部件,一个是分页部件,通过分段机制(把一个逻辑地址转换为线性地址,线性地址也是32位,其地址取值范围为0x00000000~0xffffffff)和分页机制(把一个线性地址转换为物理地址),最终将逻辑地址映射为物理地址,如下图:

                        

          在Linux中,主要设置了:内核代码段,内核数据段,用户代码段,用户数据段。而且每个段的基地址对应线性地址都是为0,而且都可以使用4G的地址空间,相当与绕过了逻辑地址和线性地址的映射,从而完全利用了分页机制。

最后

以上就是拉长紫菜为你收集整理的对于段页式内存管理的理解的全部内容,希望文章能够帮你解决对于段页式内存管理的理解所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部