【操作系统原理】10-Linux的存储管理

一、Buddy内存管理算法

努力让内存分配与相邻内存合并能快速进行

◆ Buddy算法是经典的内存管理算法
◆ 算法基于计算机处理二进制的优势具有极高的效率
◆ 算法主要是为了解决内存外碎片的问题
在这里插入图片描述

页内碎片

内部碎片是已经被分配出去(能明确 指出属于哪个进程)的内存空间大于 请求所需的内存空间,不能被利用的 内存空间就是内部碎片。

页外碎片

外部碎片是指还没有分配出去(不属 于任何进程),但是由于大小而无法 分配给申请内存空间的新进程的内存 空闲块。

内存分配原则

◆ 向上取整为2的幂大小
◆ 70k→128k
◆ 129k→256k
◆ 666k→1024k

伙伴系统

◆ “伙伴”指的是内存的“伙伴”
◆ 一片连续内存的“伙伴”是相邻的另一片大小一样的连续内存

◆ 假设存储空间有1M大小

分配100k内存

  1. 100k向上取2的幂=128k
  2. 查询是否有128k空闲内存块?
  3. 没有!查询是否有256k空闲内存块?
  4. 没有!查询是否有512k空闲内存块?
  5. 没有!查询是否有1M空闲内存块?
  6. 有,摘下1M空闲内存块,分配出去
  7. 拆下512k放在512k的空闲链表,其余的分配出去
  8. 拆下256k放在256k的空闲链表,其余的分配出去
  9. 拆下128k放在128k的空闲链表,其余的分配出去
  10. 分配完毕

回收刚才分配的内存

  1. 判断刚才分配的内存伙伴在空闲链表上吗?
  2. 在!移除伙伴,合并为256k空闲内存,判断
  3. 在!移除伙伴,合并为512k空闲内存,判断
  4. 在!移除伙伴,合并为1M空闲内存
  5. 插入1M空闲链表,回收完成

二、 Linux交换空间

◆ 交换空间(Swap)是磁盘的一个分区
◆ Linux物理内存满时,会把一些内存交换至Swap空间
◆ Swap空间是初始化系统时配置的

◆ 冷启动内存依赖
◆ 系统睡眠依赖
◆ 大进程空间依赖

在这里插入图片描述

发布了178 篇原创文章 · 获赞 11 · 访问量 3695

猜你喜欢

转载自blog.csdn.net/ange2000561/article/details/105309163