分页与分段存储

适用计算机操作系统(OS)(第四版)
自己的学习笔记,PPT及图片来源网络及自己老师,侵删。

连续分配方式会形成很多的碎片,虽然可以通过紧凑的的方法将许多的碎片拼接成可用的大块空间,但会为之付出很大的开销,不如将进程直接分散地转入到许多不相邻的分区中,直接进行离散分配。

分页存储管理方式

分页存储管理方式 :

将用户程序的地址空间分为若干个固定大小的区域,称为“页”或“页面”。相应的,也将内存空间分为若干个物理块或页框,页和块的大小相同。这样可将用户程序的任一页放入任一物理块中,实现了离散分配。

1.1 分页存储管理的基本方法

1、页面和物理块

1)页面 :

  • 分页存储管理进程的逻辑空间分成若干大小相等的片,称为页面或页。

  • 内存空间分成与页相同大小的若干个存储块,称为物理块或页框。

  • 为进程分配内存时,以块为单位将进程中的若干页分别装入多个可不相邻接的物理块中。

2)页面大小 :

过小 :减少内存碎片,有利于内存利用率的提高,但每个进程占用较多的页面,进程页表过长,占用大量内存,同时降低页面换进换出的效率。

过大 :减少页表的长度,提高页面换进换出的效率,但页内碎片增大。

2、地址结构

地址长度32位 = 0 ~ 11位页内地址 + 12 ~ 31位页号

页面大小为 :212 = 4 KB 页号最多允许 : 220 = 1M 页

计算公式 :

(页号 )P = INT [ A / L ]
A 为逻辑地址 ;L为页面大小
(页内地址)d = [ A ] MOD L
INT [ ] 为整除函数 ;MOD [ ] 为取余函数
在这里插入图片描述
3 、页表
为了能在内存中找到每页所对应的物理块,系统为每个进程建立一张页面映射表即页表。(大多驻留内存)

页表项结构 :(实际在内存存储中,只放块号不放页号)
在这里插入图片描述
在这里插入图片描述

1.2 地址变换机构

1.2.1 基本的地址变换机构

存取一次数据访问内存两次:

1)第一次访问内存查找页表

2)第二次访问物理内存对应的内存单元

页表功能是由一组专门的寄存器来实现的,,一个页表项使用一个寄存器,但由于寄存器成本原因,页表项不可能全部使用寄存器实现,页表大多驻存在内存中,系统只设置一个页表寄存器PTR,存放页表在内存中的首址与页表长度。

进程未执行时,页表的始址与页表长度存放在本进程的PCB中,调用进程时,才将这两个数据装入页表寄存器中。

在这里插入图片描述
基本的地址变换机构访问过程 :(页面大小是2的整数幂

(1)地址变换机构自动将逻辑地址分为页号和页内地址(页内位移量);

(2)检查页号是否越界,如果页号大于或等于页表长度,则表示本次所访问的地址已超越进程的地址空间,并同时发出一个地址越界中断;

(3)如果未出现越界错误,则将页表始址与页号和页表项长度的乘积相加,得到该表项在页表中的位置;

(4)从页表中检索到该页的物埋块号并装入物埋地址寄存器中,同时将逻辑地址中的页内地址直接送入物理地址寄存器的块内地址部分;

(5)物理块号和块内地址组合就产生了要访问的物理地址。

注意 :

1、页表长度 :页表中总共有几个页表项 。

2、页面大小 :一个页面占多大的存储空间。

3、页表项长度 :每个页表项占多大存储空间。

4、物理地址 = 物理块号 * 页面大小 + 页内偏移量

5、页表项的位数 :页表项实际只存储了物理块号,即实际的存储空间依据页面大小可以分成多少个物理块(每个物理块的大小等于页面大小)

位数 = log2 (存储空间大小 / 页面大小)

6、逻辑地址转换为物理地址需要进行越界判定,必须页号<页表长度,不满足则认为出现越界错误。

1.2.2 具有快表的地址变换机构

快表(TLB)又称为联想存储器,用于存放当前被频繁访问的页表项,从而提高地址变换速度。
在这里插入图片描述
具有快表的地址变换机构访问过程 :

1、CPU给出逻辑地址,由某个硬件算得页号、页内偏移量,将页号与快表中的所有页号进行比较。

2、如果找到匹配的页号,说明要访问的页表在快表中有副本,则直接从中取出该页对应的内存块号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因此,若快表命中,则访问某个逻辑地址仅需一次访问即可。

3、如果没有找到匹配的页号,则需要访问内存中的页表,找到对应页表项,得到页面存放的内存块号,再将内存块号与页内偏移量拼接形成物理地址,最后,访问该物理地址对应的内存单元。因此,若快表未命中,则访问某个逻辑地址需要访问两次(在找到页表后,应同时将其存入快表,以后便后面可能的再次访问。但若快表已满,则必须按照一定的算法对旧的页表项进行替换)。

4、由于查询快表的速度比查询页表的速度快的多,因此只要快表命中,就可以节省很多时间。因为局部性原理,一般来说快表的命中率可以达到90%以上。

即在寄存器中放置一个经常被访问的页面的页表(快表的页号也被存储),在基本的地址变换机构访问过程之前,加入对快表的访问。

命中 :快表 + 1次内存
未命中 :快表 + 2次内存

访问快表需a,访问内存需b,则检索快表时命中为a+b,否则为 a+2b,命中率为80%时有效访问时间:

(a + b) * 80% + ( 1 - 80% ) * ( a + 2b )

1.3. 两级页表

页表的页表,解决了大页表无需大片连续存储空间的问题。

逻辑地址结构 :
在这里插入图片描述
1 )按照地址结构将逻辑地址拆分成三部分

2 )从PCB中读出页目录表始址,根据一级页号查页目录表,找到下一级表在内存中的存放位置

3 )根据二级页表号查表,找到最终想访问的内存块号

4 )结合页内偏移量得到物理地址

注意 :

  • 多级页表中,各级页表的大小不能超过一个页面,若两级页表不够,可以分更多级
  • 多级页表的访问次数(没有快表),N级页表访问一个逻辑地址需要N+1次访问内存。

分段存储管理方式

为了满足以下需要 :

1 )方便编程 :对作业以逻辑关系划分。
2 )分段共享 :可以分享作业的一部分完整信息。
3 )分段保护 :对作业的一部分赋予不同的权限用来保护信息。
4 )动态链接 :动态链接要求以段作为链接的基本单位。
5 )动态增长 :现实中一些数据段会随着运行的过程不断增加,很难采用预先多分配的方式。

2.1 分段地址结构 :

在这里插入图片描述

  • 作业按逻辑关系划分成若干段,每个段都有自己的段名和长度
  • 逻辑地址是二维的,由段号(名)和段内偏移量决定
  • 段长不固定

2.2 段表

段表实现逻辑段到物理内存区的映射
在这里插入图片描述

2.3 地址变换机构

在这里插入图片描述
过程 :
1 )首先用段号与段表长度对比查看是否越界(段号>=段表长度),越界产生中断信号。
2 )未越界则计算出段表中对应的段表项。
3 )然后段内地址与段长对比,判断是否越界,越界产生中断信号。
4 )未越界则计算物理地址。

2.4 分段的优缺点 :

优点:

  • 便于程序模块化处理和处理变化的数据结构。
  • 便于共享分段。
  • 便于动态链接。

缺点:

  • 地址变换费时,需硬件支持,并且管理表格要提供附加的存储空间。
  • 为满足段的动态增长和减少碎片,要用拼接技术。
  • 段长不定,管理困难。
  • 段长受内存可用区的限制

分页与分段的区别

  • 页是信息的物理单位,分页削减了内存的外零头,
    提高了内存的利用率。段是信息的逻辑单位,分段
    的目的是满足用户的需要。
  • 页的大小固定且由系统确定。段的长度不固定,决
    定于用户程序,由编译程序根据信息的性质来划
    分。
  • 分页的作业地址空间是一维的。分段的作业地址空
    间是二维的(段名和段内地址)。

段页混合的管理方式

用户程序分成若干个段,每个段分成若干个页。结合分页和分段的优点,用分段方法来分配和管理虚存,
用分页方法来分配和管理实存。

3.1 地址结构 :

在这里插入图片描述

3.2 段表&页表

段表:记录每一段的页表始址和页表长度。
页表:记录了逻辑页号与内存块号的对应关系。(每一个段对应一个页表)
在这里插入图片描述

3.3 地址变换过程

在这里插入图片描述

在段页式管理系统中,要对内存中指令或数据进行一次存取的话,至少需要访问三次以上的内存(没有快表):

1 )第一次是由段表地址寄存器得段表始址后访问段表,由此取出对应段的页表在内存中的地址。

2 )第二次则是访问页表得到所要访问的物理地址。

3 )第三次才能访问真正需要访问的物理单元。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从今天起请叫我小张

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值