一道操作系统题

闲逛的时候看到一些笔试题,可悲的是我第一个都不会...

"对于一个内存地址32位,内存页为8KB的系统,地址0x0005F123的页号和页内偏移地址是多少."

我一开始想把16进制的地址转换为10进制,再做一次除法取余数就完了。
但是太麻烦了,原来操作系统也讲过这个,可惜都还给老师了...
今天问了微机原理老师,好在老师比较给力,还记得怎么做...

先计算一下 一共2**32个地址,每个页2**13个地址,一共2**19个,
地址的二进制是 0000 0000 0000 0101 1111 0001 0010 0011
每个页的最大地址是 0000 0000 0000 0000 0010 0000 0000 0000
那么偏移地址就是 11 0001 0010 0011 - 10 0000 0000 0000.
页号就是0101 111 - 1 (因为页号从0开始)

如果换成10进制计算的话结果是一样的。

一开始我还反应不过来,为什么这样做,于是老师又举了个例子:
如果每个页是4个单位,那21号地址怎么算?
21 : 010 101
4  :     100
这样就好看了。

PS:虽然是一个小问题,但是还是可以延伸出很多东西,呵呵,
看来思维还是不行啊,总是想要按10进制看待计算机的问题就太麻烦了...


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值