内存管理
2021/8/25 7:07:38
本文主要是介绍内存管理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
一、连续分配
1、单一连续分配
-
优点
- 实现简单;
- 无外部碎片;
- 不一定需要内存保护
-
缺点
- 只能用于单用户、单任务OS;
- 有内部碎片;
- 存储器利用率低;
2、固定分区分配
-
优点
- 实现简单;
- 无外部碎片;
-
缺点
- 1.较大用户程序时,需要采用覆盖技术,降低了性能;
- 2.会产生内部碎片,利用率低
3、动态分区分配
- 记录内存使用情况
- 选择分区给新进程
- 分区回收
二、非连续分配管理
1、分页存储管理
- 将内存分为大小相等的分区
- 页框/页帧/内存块/物理块
- 页框号/页号从0开始
- OS以页框为基本单位分配内存
2、基本地址变换
- 物理地址= (页号->块号)+偏移量
- 页号P =逻辑地址A ,页面长度(大小)L
- 偏移量W=逻辑地址A%页面长度L
- P=A>> 12; W= A & 4095
3、基本地址变换机构
- 页式管理中地址空间是一维的
- 每次访存都需要地址转换,必须足够快
- 页表不能太大,会降低内存利用率
4、快表和慢表
- 直接将页号与快表页号比较
- 匹配成功,取块号+偏移量形成地址
- 匹配失败,访问主存页表,并同步到快表(局部性原理)
5、二级页表
- 页表连续存放,占用大量连续空间
- 一段时间内只需要访问部分特定页面
- 页表项分组/分页离散存储
- 建页目录表管理离散页表
- 将逻辑地址拆分成三部分
- 从PCB中读取页目录表始址
- 根据一级页号 查出二级页表位置
- 根据二级页号查内存块号,加偏移量计算物理地址
三、分段存储管理方式
- 分段
- 段表
- 地址变换机构
- 段的共享与保护
1、分页与分段方式对比
- 页->物理单位
- 段->逻辑单位
- 分页>-维地址空间
- 分段>二维地址空间
- 分段更容易信息共享和保护
2、段页式管理
- 先分段,再分页
- 1个进程->1个段表
- 1个段表项->1个页表
- 1个页表->多个物理块
这篇关于内存管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15鸿蒙生态设备数量超8亿台
- 2024-05-13TiDB + ES:转转业财系统亿级数据存储优化实践
- 2024-05-09“2024鸿蒙零基础快速实战-仿抖音App开发(ArkTS版)”实战课程已上线
- 2024-05-09聊聊如何通过arthas-tunnel-server来远程管理所有需要arthas监控的应用
- 2024-05-09log4j2这么配就对了
- 2024-05-09nginx修改Content-Type
- 2024-05-09Redis多数据源,看这篇就够了
- 2024-05-09Google Chrome驱动程序 124.0.6367.62(正式版本)去哪下载?
- 2024-05-09有没有大佬知道这种数据应该怎么抓取呀?
- 2024-05-09这种运行结果里的10.100000001,怎么能最快改成10.1?