操作系统——内存非连续分配方法

本文详细介绍了内存的非连续分配方法,包括分页和分段存储管理。分页存储通过固定大小的页面进行内存分配,解决了外部碎片问题,采用页表进行地址转换,并可能引入快表提高效率。而分段存储则按照信息的逻辑单位进行分配,段的大小不固定,旨在更好地满足用户需求。地址变换涉及段表和段号检查,确保访问的合法性。两种方法各有特点,分页强调系统管理,分段侧重用户逻辑。
摘要由CSDN通过智能技术生成

操作系统——内存非连续分配方法

非连续的内存分配方式允许程序分散地分配在内存空间中,其按照不同的分类有不同的分类结果:

基本分页存储管理方式

分页管理不会产生外部碎片。

思想:

把主存分为相对很小的且固定的块结构,作为主存的基本单位,每个进程也按照这个单位进行内存的申请。

分页存储管理的几个基本概念

页面和页面大小

进程中的块称为,内存中的块称为页框,外存也是按照块分的,直接称为块。

地址结构

地址长度为32位,其中0-11位为页内偏移量(页内地址),即每页大小为4KB。最多可以有 2 20 2^{20} 220页。

注意:地址结构决定了虚拟内存的寻址空间有多大,在实际的问题上,页号、页内偏移、逻辑地址通常是以十进制的形式给出的。

页表

为了方便在内存中找到进程的每个页面对应的物理块,系统为每个进程创建了一张页表。

基本地址变换机构

逻辑地址--------->物理地址

具有快表的地址变换机构

上述的机构,是将页表整个放在内存中,执行一条指令至少需要两次访存操作,在这个机构中,采用了一个高速缓冲存储器来存储活跃的页。——快表

地址变换过程:

有些处理机设计为快表和慢表同时开始查询页号,谁先查到,另一个终止查询,更新相应的表信息。

一般快表的命中率在90%以上。

两级页表

如何解决页表过大需要连续存储的问题呢?这个问题可以参考进程太大需要连续存储的答案。因为页表必须连续存放,所以可以将页表再分页。
解决方案:可以将长长的页表进行分组,使每个页面中刚好可以放下一个分组(如上面的例子中,页面的大小4KB),每个页表项4B,所以每个页面中可以存放1K个(1024)个页表项,因此每1K个连续的页表项为一组,每组刚好占一个页面,再讲各组离散的放在各个内存块中)。这样就需要为离散的页表再建立一张页表,称为页目录表,或外层页表,或顶层页表。
还是面的例子,32位的逻辑地址空间,页表项大小为4B,页面大小4KB,则页内地址占12位,单级页表结构逻辑结构图如下图所示

使用单级页表的情况

将页表分为分为1024个表,每个表中包含1024个页表项,形成二级页表。二级页表结构的逻辑地址结构如下图

两级页表如何实现地址转换:

(1) 按照地址结构将逻辑地址拆成三个部分。
(2) 从PCB中读取页目录起始地址,再根据一级页号查页目录表,找到下一级页表在内存中存放位置。
(3) 根据二级页号查表,找到最终想要访问的内存块号。
(4) 结合页内偏移量得到物理地址。

下面以一个逻辑地址为例。将逻辑地址(0000000000,0000000001,11111111111)转换为物理地址的过程。

顶级页表最多只能有一个页面!!!!!!!!!!

基本分段存储管理方式

1.分段

在分段存储管理方式中,作业的地址空间被划分为若干个段,每个段定义了一组逻辑信息。例如,有主程序段MAIN、子程序段X、数据段D及栈段S等,通常,用段号代替段名。每个段都从0开始编址,并采用一段连续的地址空间。

段的长度由相应的逻辑信息组的长度决定,因此每个短对长度并不相等。

分段地址中地址具有的结构:
img

2.段表

类似与分页系统,分段系统中段也是离散的分布在内存中,所以需也要为每个进程建立一个段映射表,简称段表。

每个段在表中占有一个表项,其中记录了该段在内存空间的起始地址(基址)和段的长度。如下图:

3.地址变化机构

为了实现进程从逻辑地址到物理地址的变换功能,在系统中设置了段表寄存器,用于存放段表始址和段表长度TL。

在进行地址变换时:

  • 系统将逻辑地址中的段号与段表长度TL进行比较。若S>TL,表示段号太大,是访问越界,于是产生越界中断信号。
  • 若未越界,则根据段表的始址和该段的段号,计算出该段对应段表项的位置,从中读出该段在内存的起始地址。
  • 再检查段内地址d是否超过该段的段长SL。若超过,即d>SL,同样发出越界中断信号。
  • 若未越界,则将该段的基址d与段内地址相加,即可得到要访问的内存物理地址。

4.分段和分页的主要区别

相似:

  • 两者都采用了离散分配方式
  • 都是通过地址映射机构来实现地址变化

区别:

  • 页是信息的物理单位,分页仅仅是为了系统管理的需求,完全是系统的行为,对用户是不可见的。段是信息的逻辑单位,它通常是一组意义完整的信息,目的是更好的满足用户的需求。
  • 页的大小固定且有系统决定,段的大小不定。
  • 分页的用户程序地址空间是一维的。分段系统中,用户的地址空间是二维的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值