存储器的分段详解

存储器的分段详解
1.什么是1B?
1B可以想象成为一块
如图:|_|_|_|_|_|_|_|----------1B大小
            7 6 5 4 3 2 1 0

2.这个1B如何在内存中表示
当然用地址阿,不过地址是多少位呢?
如果地址用20位表示
如下:第一个地址到第十六个地址

                      二进制               十六进制
|_______|-->00000000000000000000---->00000----表示-------1B
|_______|-->00000000000000000001---->00001----表示-------1B
|_______|-->00000000000000000010---->00002----表示-------1B
|_______|-->00000000000000000011---->00003----表示-------1B
|_______|-->00000000000000000100---->00004----表示-------1B
|_______|-->00000000000000000101---->00005----表示-------1B
|_______|-->00000000000000000110---->00006----表示-------1B
|_______|-->00000000000000000111---->00007----表示-------1B
|_______|-->00000000000000001000---->00008----表示-------1B
|_______|-->00000000000000001001---->00009----表示-------1B
|_______|-->00000000000000001010---->0000A----表示-------1B
|_______|-->00000000000000001011---->0000B----表示-------1B
|_______|-->00000000000000001100---->0000C----表示-------1B
|_______|-->00000000000000001101---->0000D----表示-------1B
|_______|-->00000000000000001110---->0000E----表示-------1B
|_______|-->00000000000000001111---->0000F----表示-------1B

那么20位最多能表示多少个地址呢?当然是2^20个阿
上图继续
|_______|-->00000000000000000000---->00000----表示-------1B
|_______|-->00000000000000000001---->00001----表示-------1B
|_______|-->00000000000000000010---->00002----表示-------1B
|_______|-->00000000000000000011---->00003----表示-------1B
|_______|-->00000000000000000100---->00004----表示-------1B
|_______|-->00000000000000000101---->00005----表示-------1B
|_______|-->00000000000000000110---->00006----表示-------1B
|_______|-->00000000000000000111---->00007----表示-------1B
|_______|-->00000000000000001000---->00008----表示-------1B
|_______|-->00000000000000001001---->00009----表示-------1B
|_______|-->00000000000000001010---->0000A----表示-------1B
|_______|-->00000000000000001011---->0000B----表示-------1B
|_______|-->00000000000000001100---->0000C----表示-------1B
|_______|-->00000000000000001101---->0000D----表示-------1B
|_______|-->00000000000000001110---->0000E----表示-------1B
|_______|-->00000000000000001111---->0000F----表示-------1B
.................
.................
.................
共有2^20个1B也就是1MB

可见一个地址表示1B,那么共有多少个地址就能表示多少B了!!
呵呵.
如果用16位宽来表示一个地址那个共有2^16的地址,也就是2^16B=64KB

 

///
现在到讲分段了
为什么要将存储器分段?
原因:
16位字长的机器只能提供2^16个地址,远远不满足地址总线为20位所表示的地址范围(2^20)
那么如何用16位来提供20位地址的问题??---->分段
什么是分段呢?
比如:
从地址00000到0000F为一段,刚好是16B(因为共16个地址)
从地址00010到0001F为一段
如图:
 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|---一共16B
00000                                                                         0000F
|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|---一共16B
00010                                                                         0001F
................................................
....
|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|---一共16B
FFFF0                                                                         FFFFF

可见每段首地址的最后1位(16进制说法)都是0
那么就不写了,结果不就是16位地址了FFFF(16位)

那么实际的地址就等于  每小段的首地址*10H+在每段内的偏移地址
偏移地址如下:
在段|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|__|---一共16B
    FFFF
段首地址是:FFFF,段内的第一个1B的地址是0000,也就是在该段内偏移0000
那么他的物理地址是FFFF*10+0000=FFFF0,哈哈和20位地址一样了

 


总结:
看到2M,就像到有2MB个地址,转化成2^20B,可见地址位宽是20位!!
那么32位地址能表示多少大小2^32-->4GB

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值