分页存储和分段存储的一些小问题解答

为什么能通过0~11位的页内地址,计算出页面大小为4KB?

为什么分页存储地址空间是一维的,而分段存储却是二维的?

分页和分段存储之间的不同点又是什么?

请看下面介绍……


1.分页存储结构如下:(以下所有图片来自百度百科)



若给定一个逻辑地址空间中的地址为A,页面的大小为L,则页号P和页内地址d可按右图所示公式求得:

其中,INT是整除函数,MOD是取余函数。例如,其系统的页面大小为1 KB,设A = 2170 B,则由上式可以求得P = 2,d = 122。

分页存储转换如下:



2.分段存储结构如下


分段存储转换如下:


3.问题来了,通过看书,大家也许有2个疑问:

3.1. 为什么能通过0~11位的页内地址,计算出页面大小为4KB?

3.2. 为什么分页存储地址空间是一维的,而分段存储却是二维的?

第一个问题:

首先因为计算机中一个地址默认对应八位二进制数,那么页内偏移量为12位,能表示[0]~[2^12-1]范围的数字,

其中2^12=4^10=4K,由于1位对应1个字节(操作系统一般以字节编址),所以就是4KB



第二个问题:
我们可以看到分页地址结构,你们有没有发现页号我们是不需要的,因为页面大小是 固定的 ,所以我们可以直接由逻辑地址的大小计算出页号, 例如,其系统的 页面 大小为1 KB,设A = 2170 B,则由上式可以求得页号为2。所以,我们实际上只需要一个1维的数据,逻辑地址大小即可.
但是分段存储的地址结构就不一样,我们必须要知道段号,以及段内地址。因为段的长度是 不定的,因此我们无法像分页那样直接计算段号,因此必须要给出段号,加上段内偏移地址,就构成了二维的。即逻辑地址必须由段号+段内地址构成(二维)




 

分页存储

分段存储

不同点:

页长:固定

段长:不固定

引入:提高内存利用率

引入:满足程序员(例如:动态链接)

地址空间:一维

地址空间:二维

页号和页内偏移对用户可见

段号和段内偏移由程序员设定(对其他用户不可见)

相同点:

离散分配地址(非连续)



一字一句的纯手打!
如有错误,望批评指正!




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值