首页 > 系统相关 >08 内存(下)实现内存页的分配和释放

08 内存(下)实现内存页的分配和释放

时间:2023-04-25 22:00:16浏览次数:33  
标签:释放 dm mm 08 内存 msadsc 分配 页面

初始化完内存页和内存区,接下来就实现分配和释放内存页面;

内存页的分配:

 内存分配页面接口函数:mm_division_pages,进而调用mm_divpages_fmwk 内存分配页面框架函数,此函数先返回对应的内存区结构的指针,然后调用内存分配核心函数 mm_divpages_core ,返回msadsc_t 结构体指针,包含返回 实际分配的页面数;

其中内存分配核心函数 mm_divpages_core ,会先进行内存区加锁,然后执行分配内存函数mm_reldivpages_onmarea,然后再解锁 ;

  内存分配算法逻辑:如果能在 dm_mdmlielst 数组中找到对应请求页面数的 msadsc_t 结构就直接返回,如果没有就寻找下一个 dm_mdmlielst 数组中元素,依次迭代直到最大的 dm_mdmlielst 数组元素,然后依次对半分割,直到分割到请求的页面数为止;

 

 内存页的释放:

就是分配的逆过程;

  内存释放算法逻辑:会查找相邻且物理地址连续的 msadsc_t 结构,进行合并,合并工作也是迭代过程,直到合并到最大的连续 msadsc_t 结构或者后面不能合并为止,最后把这个合并到最大的连续 msadsc_t 结构,挂载到对应的 dm_mdmlielst 数组中;

 

标签:释放,dm,mm,08,内存,msadsc,分配,页面
From: https://www.cnblogs.com/xuan01/p/17353953.html

相关文章

  • 考研408操作系统-缓冲区管理
    缓冲技术分类:单缓冲双缓冲循环缓冲缓冲池一、单缓冲单缓冲是操作系统提供的一种最简单的缓冲形式,当用户进程发出一个IO请求时,操作系统便在内存中为它分配一个缓冲区。由于只设置一个缓冲区,设备和处理器交换数据时,应该先把要交换的数据写入缓冲区,然后放入工作区,在工作区的......
  • CVE-2016-3088漏洞复现
    1.背景介绍。ActiveMQ的web控制台分三个应用,admin、api和fileserver,其中admin是管理员页面,api是接口,fileserver是储存文件的接口;admin和api都需要登录后才能使用,fileserver无需登录。fileserver是一个RESTfulAPI接口,我们可以通过GET、PUT、DELETE等HTTP请求对其中存储的文件进......
  • redis删除数据后内存释放问题
    这不是Redis本身的问题,Redis本身确实已经调用free释放这些内存。这应该是使用的底层C运行时的问题。就glibc来说,在分配大于128k的内存时使用mmap,而使用brk/sbrk在heap中分配小内存。通过mmap申请的内存在调用free后能马上返还给系统,而heap中的内存就不一定,除非释放的内存是heap中......
  • 考研408操作系统-设备的分配与回收
    设备分配时应该考虑的因素设备的分配算法:先来先服务、优先级高者优先、短任务优先...静态分配与动态分配设备分配管理中的数据结构设备分配的步骤设备分配步骤的改进方法总结......
  • vue-element-admin报错Error: error:0308010C:digital envelope routines::unsupporte
    安装vue-element-admin报错 nodejs  Node.jsv18.15.0  opensslErrorStack:['error:03000086:digitalenveloperoutines::initializationerror'],library:'digitalenveloperoutines',reason:'unsupported',code:'ERR_OSSL......
  • ASEMI代理ADI亚德诺ADG1408YRUZ-REEL7车规级芯片
    编辑-ZADG1408YRUZ-REEL7芯片参数:型号:ADG1408YRUZ-REEL7接通电阻:4Ω电源断开漏电流:±0.04nA输入高电压:2V输入低电压:0.8V输入电流:±0.005μA数字输入电容:4pF过渡时间:140ns−3dB带宽:60MHzVDDtoGND:−0.3Vto+25VVSStoGND:+0.3Vto−25V储存温度范围:−65°......
  • 考研408操作系统-SPOOLing技术(假脱机技术)
    什么是脱机技术?在学习假脱机技术前,我们首先要知道什么是脱机技术。在很久以前,我们通过输入设备直接往主机输入数据。但是输入设备输入数据的速度远慢于CPU处理的速度,这就使得CPU资源被浪费。于是人们又找了一个“中介”来处理CPU和I/O设备之间速度不匹配的矛盾。他们把输入输......
  • 虚拟机热迁移一直处于迁移中的状态-v4-20210308_124243
    虚拟机热迁移一直处于迁移中的状态企业云平台产品中心共享知识库Exportedon03/08/2021TableofContents问题现象:对虚拟机进行热迁移操作,Dashboard和云服务自助平台上一直处于迁移中的状态问题原因:虚拟机存在频繁的数据读写操作,导致虚拟机迁移的速度追不上数据读写的速度,每次迁......
  • Virsh常用命令-v4-20210308_123613
    Virsh常用命令企业云平台产品中心共享知识库Exportedon03/08/2021TableofContentsVirsh是基于libvirt写的一个命令行工具,用来通过Virsh来对虚拟机的生命周期进行管理,以下是常用的一些Virsh命令:1、查看在运行的虚拟机virshlist2、查看创建的所有虚拟机virshlist--all3、启......
  • OSD自然OUT之后无法再加入集群-v1-20210308_124828
    OSD自然OUT之后无法再加入集群企业云平台产品中心共享知识库Exportedon03/08/2021TableofContents问题描述4问题原因5解决方法6验证步骤6相关下载链接:OSD自然OUT之后无法再加入集群.pdf1--------这是一条华丽的分割线--------1https://iwiki.woa.com/dow......