内存分配方式之二:非连续分配管理方式(分页式、分段式、段页式)

非连续分配允许一个程序分散的装入到不相邻的内存分区中。

在连续分配管理方式中我们发现,即使内存中有超过1G的空闲内存,但是如果没有连续的1G空闲分区,程序仍然是无法运行的;但是如果使用非连续分配管理方式,作业要求的1G内存空间可以分散的分配在内存各个区域,当然,这需要额外的空间去存储分散区域的索引。

根据分区大小是否固定分为分页存储管理方式分段存储管理方式

分页存储管理方式

分页存储管理方式中,根据运行作业时是否把作业所有页面装入到内存中才能运行分为基本分页存储管理和请求分页存储管理。

请求分页技术采用虚拟技术,因此开始运行时,不必将作业全部一次性装入内存,而基本分页不是;请求分段和基本分段,请求段页式和基本段页式区别同上,本文介绍的均是“基本”的方式,后续介绍“请求”的方式。

1. 基本思想

  • 把主存空间划分为大小相等且固定的块,块相对较小(要比连续分配中的固定分区的块小很多),作为主存的基本单位

  • 把进程也按照块为大小进行划分,进程在执行时,以块为单位进行内存申请

2. 分页存储相关概念

  1. 页面和页面大小:进程中的块称为页,内存中的块称为页框或者页帧。页的大小应该是2的整数幂(方便地址装换)

  2. 地址结构:这里的地址也就是虚拟地址,又叫逻辑地址。虚拟地址包含两部分:高20位是页号,低12为是页内偏移量。每页大小是4KB,地址空间最多允许有2^20页。

在这里插入图片描述

  1. 表:实现页号和物理块号(页框)的地址映射,一般存放在内存中。页表有页表项组成,页表项包含两部分:第一部分是页号,第二部分是物理内存块号。页表项的第一部分跟虚拟地址的第一部分相同,第二部分结合虚拟地址的第二部分可以共同组成物理地址
    在这里插入图片描述

3. 地址转换

  • 地址转化是将逻辑地址(虚拟地址)转化为物理地址,借助于页表进行实现。

在系统中通常设置有一个页表寄存器(PTR)用于存放页表的起始地址F和页表长度M。设页面大小为L,逻辑地址A到物理地址E的转化过程如下:

  1. 计算页号P(P=A/L)和页面偏移量(W=A%L)

  2. 比较页号P和页面长度M,如果P大于等于M,则产生越界,否则继续执行

  3. 根据页表中的页号查找对应的物理块号b

  4. 计算E=b*L+W,得到物理地址E,根据此地址去方位内存进行数据的存取或者指令读取

在这里插入图片描述

分段存储管理方式

分页处理是从计算机的角度出发,以提高内存你的利用率,分页是通过硬件机制实现的,对用户来说是完全透明的;而分段管理方式是从用户的角度出发,以满足方便编程,信息保护和共享等方面的需求。

1. 分段

段式管理方式按照用户进程的自然段划分逻辑空间。举个例子,用户进程有主程序、一个子程序、栈和一段数据组成。于是可以将用户进程划分为4个段,每个段从0开始编址,并分配一段连续的空间**(段内要求连续,段间不要求连续)**,逻辑地址又两部分组成,第一部分是段号S,第二部分是段内偏移量。

注意:在页式管理中,逻辑地址的页号和页内偏移量是对用户完全透明的,但是在段内管理中,段号和段内偏移量必须由用户显示提供,在高级编程语言中,这个工作由编译器完成。

2. 段表

每个进程中都有一张逻辑地址和内存地址映射的段表。其中每一个段表项对应进程的一个段,段表项记录该段在内存中的起始地址和段的长度。

在这里插入图片描述

3. 地址变换

系统中设置了段表寄存器,用于存放段表的起始地址和段表长度。

段表寄存器和页表寄存器的作用都有两个:第一是在段表或者页表中进行寻址;第二是判断是否越界。

逻辑地址A到物理地址E转换过程如下:

  1. 从逻辑地址中取到段号S和偏移量W

  2. 比较段号的段长度M,如果S大于等于M,则产生越界,否则继续执行

  3. 在段表中查到对应内存块的起始地址(基址)

  4. 计算E=b+W,用的到的物理地址去访问内存

在这里插入图片描述

段页式管理方式

页式管理方式能有效提高内存利用率;段式管理方式能反映程序的逻辑结构,有利于段的共享。将两种方法结合在一起,形成段页式管理方式

在段页式系统中,作业的地址首先被分成若干逻辑段,每段有自己的段号,然后再将每一段分成若干个大小固定的页。对内存的管理方式仍然和分页管理方式一样,将其分成若干个和页面大小相同的存储块,对内存的分配以存储块为单位

1. 逻辑地址

逻辑地址分为三部分:段号、页号和页内偏移量

系统为每一个进程建立一个段表,每个分段都有自己的一个页表。

在这里插入图片描述

2. 地址转换

地址转换过程和上面提到的转换过程类似,首先根据段表查到页表的起始地址,然后根据页表找到物理内存块号(页框号),最后形成物理地址。

在这里插入图片描述

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Style_OvO

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

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

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

打赏作者

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

抵扣说明:

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

余额充值