操作系统:11、linux存储管理

操作系统:11、linux存储管理

Buddy内存管理算法

Buddy内存管理算法是经典的内存管理算法,也是运行在linux中的算法。
算法基于计算机处理二进制的优势具有极高的效率。主要是为了解决内存外碎片的问题。

页内碎片:
已经被分配出去(能明确指出属于哪个进程)的内存空间大于请求所需的内存空间,不能被利用的内存空间就是内部碎片(页内碎片)。
在这里插入图片描述

页外碎片:
还没分配出去(不属于任何进程),但是由于大小而无法分配给申请内存空间的新进程的内存空闲块。
在这里插入图片描述
Buddy内存管理算法的目的是努力让内存分配与相邻内存合并能快速进行。

Buddy算法内存分配原则:
向上取整为2的幂的大小,比如进程需要79k内存,向上取证就是128K。进程需要666K,那么就会取1024K。
在这里插入图片描述
下图中空闲区1和空闲区2相邻,且内存大小一致,所以可以说“空闲区1和空闲区2互为伙伴”
在这里插入图片描述
Buddy算法会创建一系列空闲链表,每一种都是2的次幂,比如2KB、4KB、8KB、16KB一直到1MB
在这里插入图片描述

Buddy算法分配内存的过程:
在这里插入图片描述
如上图,buddy算法若要分配100kb内存,会先向上取整得到需要分配128K内存,然后找是否有符合大小内存,找到后,会判定找到的内存块是否可以继续拆分,直到拆分为刚好符合大小的128KB。

因为计算机处理2的次幂速度是很快的,所以buddy算法非常高效。

Buddy算法回收刚才分配的内存:
在这里插入图片描述
总结buddy算法:

buddy算法是经典的内存管理算法;
算法基于计算机处理二进制的优势具有极高的效率;
算法主要是为了解决内存外碎片的问题;
本质上该算法是将内存外碎片问题转为了内存内碎片问题,但是因为一般来说内存外碎片会比内存内碎片大很多,所以还是大大提高了内存利用效率。

linux交换空间

减缓空间(swap)是磁盘的一个分区;linux物理内存满时,会把一些内存交换到Swap空间;
Swap空间是初始化系统时配置的(装linux系统时会提示需不需要交换空间,需要多大的交换空间)。

使用top命令可以查看到linux交换空间数据:
在这里插入图片描述
一般不推荐使用交换空间,因为交换空间是存储在磁盘,磁盘速度比内存满很多。

交换空间用途

冷启动内存依赖:
	大型应用启动中需要使用大量内存,这些内存很多时候只是在启动时用一下,后续运行很少会用到这么多的内存,有了交换空间,系统就可以将这部分不怎么使用的内存数据保存在Swap空间中,从而释放更多的内存。提供给系统使用

系统睡眠依赖:
	linux系统需要睡眠的时候,把系统里面的所有内存数据都保存在Swap空间中,等下次系统需要启动的时候,才把内存数据重新加载到内存中,这样就可以加快系统启动。

大进程空间依赖:
	有些进程确实需要很多内存空间,但是物理内存不够使用,因此需要把进程需要的内存暂时保存到交换空间中去,使得大进程也可以运行的起来。

Swap空间和虚拟内存的对比:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值