分页存储管理方式

连续:设计简单,直接寻址,效率高。缺点:内存利用效率最低,有内部碎片。
分页:设计最复杂,容易产生外部碎片,无论数据有多少,都只能按照页面大小分配,造成浪费。
分段:程序员在编程和使用上多方面的要求,缺点,无法利用碎片,必须搬移内存,造成性能损失。

三种存储分配机制的优缺点,连续,分页,分段
连续分配会形成许多“碎片”,虽然可以通过“紧凑”方法将许多碎片拼接成可用大空间,但需要很大开销。
所以就有了另一种思路,能不能将分配方式改成不连续的,也就是离散的。
离散分配方式分为以下三种,其实主要就两种
1.分页
2.分段
3.分页+分段(段页式)

1.分页存储管理的基本方式

1.页面和物理块
(1)页面

分页式存储将进程的地址空间分成若干页,对页进行编号,页内也分成若干块(物理块),对块进行编号。
分配时以块为单位,装入页。所以可能最后一页装不满。
(2)页面大小
需要适中,过小提高利用率,但页面太多,页表太长,浪费内存。过大利用率低,碎片增大。
页的大小固定且由系统决定。

2.地址结构
分为
页号P | 位移量W(页内地址)
系统把逻辑地址划分为页号和页内地址两部分。

3.页表
也称页面映像表,所有页在页表中都有一项页表项,页表项中记录了相应页在内中对应的物理块号。
作用:通过查找该表,可以找到每页在内存中的物理块号。(实现页号到物理块的地址映射)

2.地址变换机构

为了将用户地址空间中的逻辑地址变换为内存空间中的物理地址,需要设置地址变换机构。
页表的作用就是实现页号到物理块号的变换,所以地址变换是借助页表来完成的。
(1)基本的地址变换机构
分页系统的地址变换机构
页表大多数位于内存中。系统中有一个页表寄存器,其中存放页表的起始地址和页表长度。
当需要进行访问时,分页地址变换机构会自动将有效地址(相对地址)分为页号和页内地址,通页号检索页表。
如果页号大有等于页表长度,则表示地址越界–>产生越界中断。
若为出现错误,则将页表起始地址+页号*页表项长度,便得到表项在页表中的位置,得到物理块号。页内地址送入物理地址中的块内地址字段。
(2)具有快表的地址变换机构
具有快表的地址变换机构
增加了一个块表(也就是一个高速缓冲寄存器【具有并行查询能力】)
页表存放在内存中,CPU存取需要访问两次。第一次是访问页表,找到物理块号,形成物理地址。第二次则是获取其中数据或者写入。
而具有快表的地址变换机构就是为了减少访问次数以提高CPU的处理速度。
怎么实现的呢?
快表中存放当前访问的那些页表项,在CPU给出有效地址后,地址变换机构会自动将页号送入快表,将此页号与快表中的页表项比较,若找到匹配项则不用进行第一次访问,也就是不需要去内存中的页表查找。未匹配则按还需访问内存中的页表。

3.引入快表后内存的有效访问时间

EAT=ab+(1-a)(t+b)+t |成功访问快表概率乘上对应访问时间,失败访问快表乘(访问快表的时间加上访问页表的时间)+取或写的时间
=2t+b-t*a
书上是另一个符号,这里就用b了。
b表示查找快表所需的时间,a表示命中率,t表示访问一次内存的时间。

4.两级页表和多级页表

因为计算机的逻辑地址空间非常大,所以页表也变的非常大,占用太多空间。
解决办法:1.对于页表所需的内存空间,采用离散的分配方式,以解决难以找到一块连续的大内存空间的问题;
实现这种方法可以通过将页表划分成更小的快,也就是两级或多级页表。

5.反置页表

为减少页表占用的内存空间,引入了反置页表。
一般页表是按页号进行排序,页表项中的内容是物理块号。
反置页表为每一个物理块设置一个页表项,并按物理块的编号进行排序。
内容是页号和其所隶属进程的标识符。
反置页表不依据进程的逻辑页号来生成页表,而是依据进程在内存的物理页号来组织的,即一个系统中大多数情况下都只存在一个反向页表,通过逻辑页号+进程ID进行HASH,通过链接指针来得到对应的页架号(物理页号)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值