Linux内存(2)

主讲逻辑地址与物理地址转换

一、分页机制

为了提高内存读取效率,每一页的大小都是2的n次幂,一个程序最多有64页,(16位处理器一页大小为1K,32位处理器一页大小为4K)以1K为例讲解:

假如相对地址为1502,二进制为0000010111011110,而一页的大小为1024(2^10),所以前六位000001为页号,后十位0111011110为偏移量,所以1502在第一页的偏移量为478。

上述情况未涉及到页表,而系统中都会有页表,假设系统中有如下页表:


页表中索引为1的那一页驻存在为6的可用帧中,所以物理地址为0001100111011110。

二、分段机制

分段与分页一样,由段号和偏移量组成,每一段的大小都不一样,但是具有一个最小值和最大值。段号是内存中段表的索引,而段表由段长度和段基址(段的起始地址)组成,还是以1502为例,16位逻辑地址为0000010111011110,其中前4位为段号,后12位为偏移量。假设由如下段表:


段号为0,偏移量为10111011110,然后将基址加上偏移量得到物理地址11111011110



最后说一句,由页的大小是固定的,所以浪费的内存只会是每一页最后剩下的一点,产生内部碎片,而段的大小是可变的,所以容易产生外部碎片,而且分页是不可见的,分段是可见的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值