基本内存管理方案2---一个进程进入内存中若干不连续的区域(页式,段式,段页式)

页式

设计思想:

  • 将用户进程地址空间划分为大小相等的页、页面(一般为4K,也有4M的),并从0开始编号
  • 将物理内存地址空间划分为大小相等的区域,称为页框,也从0开始编号,也叫做物理页面,页帧,内存块
  • 以页为单位进行分配,按照进程所需要的页数来分配,进程地址空间上相邻的页,映射到物理内存上,页不一定相邻。

**逻辑地址:**页号(20,页面的编号) + 页内地址(也叫页内偏移,12位)

页表:记录了逻辑空间某页面对应在物理地址空间上是哪一页
页表项:页表的每一行称为页表项,记录逻辑页号和物理页号的对应关系

内存分配的过程:
在这里插入图片描述

地址转换过程:由硬件支持
当CPU获取到逻辑地址后,自动的将该逻辑地址分为两部分,分别是页号和页内地址(页内偏移),用页号根据页表查对应物理页面,然后与页内偏移地址拼接起来,就得到了物理地址,然后就可以对此地址进行读写操作。

缺点:
假设一个进程需要5页+1条指令的空间,那么该进程最少需要6页的内存,就产生了内碎片,碎片大小为一页的大小减去一条指令所占的大小。

段式

设计思想:
用户进程地址空间:根据程序自身的逻辑关系将程序划分成若干个程序段,每一个段都有一个段名
内存空间:也被动态划分为若干长度不同的区域,称为物理段,每个物理段由开始地址和长度确定。

内存分配规则:
以段为单位进行分配,每个段在内存中占据连续空间,但各个段之间可以不相邻。

段表:记录了程序各个段与物理内存上的段的映射关系
段表项:段表的一项称为段表项,记录程序某个段(段号)在物理内存上的段长度以及段的起始地址等信息。和页表项相似
每个进程的段表存放在内存中。

逻辑地址: 段号 + 段内地址
在这里插入图片描述
地址转换:依赖硬件
CPU取到逻辑地址,用段号查段表,得到该段在内存的起始地址,与段内偏移计算出物理地址。

段页式:

产生背景:
综合页式和段式方案的优点,克服二者的缺点

设计思想:
用户进程空间划分:
先按逻辑将进程空间划分成段,然后将这些段再按页去划分

逻辑地址:
原来的段内地址,此时是页号 + 页内地址
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021050522111

内存划分:同页式存储管理方案
内存分配:以页为单位进行分配

相关数据结构
段表:记录了每一段的页表的起始地址以及页表的长度
页表:记录了逻辑页号与物理页号的对应关系
每一段都有一张页表,此时的一个进程有多个页表

空闲区管理:同页式管理
内存分配,回收:同页式管理

根据段号查段表,得到对应页表起始地址,再将段内地址划分为2部分,页号和页内地址

本文图片与思想来自网络公开课,有兴趣的读者可以查看一下:https://www.bilibili.com/video/BV1Gx411Q7ro?p=50&spm_id_from=pageDriver

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值