分页存储

简介: 分页存储

做题做到分页存储,试着看了一下书,发现记住公式比较简单,但是为什么这样计算,查了查资料,发现基础知识不扎实理解起来还是很绕的。

把目前自己所知道的总结一下,希望对自己和大家有所帮助。

像书中所讲,首先明确几个概念:

页:一个进程的逻辑地址空间分成若干大小相等的片(逻辑地址,大小相等)

页框:物理空间分成与页大小相等的若干个存储块(物理地址,与页相等)

页表:数据结构,实现从页号到页框号的映射。页表在内存中连续存放。

计算机以Byte做最小单位的,1Byte是8bit,即8位,但是最少要分配1Byte而不是1bit.所以单位是B16位二进制最大可以表示到65535,就是64KB.(216=26.2^10=64k)

页的大小与页内偏移量的关系:页内偏移量是n位,页的大小是2^n

https://blog.csdn.net/weixin_43914604/article/details/105907291?utm_term=%E9%A1%B5%E5%8F%B7%E5%92%8C%E9%A1%B5%E5%86%85%E5%81%8F%E7%A7%BB%E9%87%8F&utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2allsobaiduweb~default-0-105907291&spm=3001.4430

理解起来还有有点绕,举个例子,好像就容易理解了。

二进制的111111111111(十二个1)转换成十进制是4095,即4K,如果页大小超过4K,那么用12位的偏移量就无法寻址超出4K的部分.(把页当成一个word页,页内偏移量就是里面有多少行,行数不能超过一页的承受范围)

页号与页个数的关系:页号是m位,页的个数是2^m

页号每1位不是0就是1.所以页的个数是2^m。

如何将逻辑地址转换为页码与页偏移量

进程的逻辑地址被分为固定相等的小块,就是为页。同时将其物理地址也分为同样大小的块,称为页框或页帧。每页(或帧)里面包含的才是真正的地址,在得到页码(帧号)之后,再通过页内偏移(或帧内偏移),也就是页偏移(帧偏移)来找到相应的地址。所以每个逻辑地址(物理地址)的表示方法是 页码(帧号)+页偏移量(帧偏移量)。

页号与页内偏移量的计算:(两种方法针对不同情况)

页号=int(逻辑地址/页大小)

页内偏移量=mod(逻辑地址/页大小)

逻辑地址换算成10进制太大,可以考虑下面的方法:

例:设页面的大小为2KB,将逻辑地址3BADH划分为页号和页内偏移量两部分,用16进制表示

3BADH=0011 1011 1010 1101

由页的大小为2KB,可以得到页内偏移为12位(低地址)

故页号0011(3H)

页内偏移1011 1010 1101(BADH)


相关文章
|
8月前
|
存储
分页存储管理系统的计算
分页存储管理系统的计算
665 2
|
8月前
|
存储 缓存 算法
分页存储
分页存储
120 0
|
8月前
|
存储 关系型数据库 C语言
开启内存分页
开启内存分页
65 0
|
存储
分页与分段(1)
分页与分段
51 0
|
存储
分页与分段(2)
分页与分段(1)
43 0
|
存储 SQL 缓存
分页列表缓存,你真的会吗
开源中国的红薯哥写了很多关于缓存的文章,其中多级缓存思路,分页列表缓存这些知识点给了我很大的启发性。 写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。
分页列表缓存,你真的会吗
|
SQL 关系型数据库 MySQL
Mysql排序后分页,因数据重复导致分页数据紊乱的问题
Mysql排序后分页,因数据重复导致分页数据紊乱的问题
168 0
|
存储
【补充】分页存储管理中的页表项长度是什么?
【补充】分页存储管理中的页表项长度是什么?
222 0
【补充】分页存储管理中的页表项长度是什么?
|
缓存 算法
总结两种常见的长列表分页缓存策略
通常,对于长列表加载的场景,都需要进行分页, 如最近的世界杯体育垂站项目中的赛程页,评论流,直播流。而为了提高分页加载的性能,往往需要对分页进行缓存。 下面总结对两种常见的分页缓存的策略, 适用场景以及各自的优缺点。     策略一: 直接对分页结果缓存 顾名思义,就是直接缓存每次分页查询的结果。  
8123 0