课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
相信大家在使用智能手机的时候也发现了,一些占用内存比较小的app软件在性能和运行加载速度上都是比较快的,而今天我们就一起来了解一下,关于内存分配的一些相关知识点。
物理内存VS虚拟内存
在研究内存分配器之前,让我们先看一下物理内存和虚拟内存的背景知识。剧透一下,内存分配器实际上操作的不是物理内存而是虚拟内存。
内存细胞作为物理内存结构的小单元,工作原理如下:
地址线(三相晶体管)其实是连接数据线与数据电容的三相开关。
当地址线负载时(红线),数据线开始向电容中写数据,电容处于充电状态,逻辑值变为1
当地址线空载时(绿线),数据线不能向电容中写数据,电容处于未充电状态,逻辑值为0
当CPU从RAM中读值时,它先会给地址线发送一个电流信号从而合上开关,连通数据电路。这时如果电容处于高电位,则电容中的电流会流向数据线,CPU读数为1;否则,数据线中没有电流负载,CPU读数为0。
CPU和内存的交互
CPU实际上通过地址总线、数据总线和控制总线实现对内存的访问。
数据总线:在CPU和内存之间传递数据的通道;
控制总线:在CPU和内存之间传递各种控制/状态信号的通道;
地址总线:传送地址信号,以确定所要访问的内存地址。
内存分配器
相信通过前面对“虚拟地址空间”以及堆内存申请的学习,相信我们对内存分配器说也就不难理解了。
如果堆中有足够多的内存空间,那么分配器就可以独立完成内存的申请而不需要访问内核。否则,系统将会通过系统调用函数brk来扩展堆,通常是增加变量MMAP_THRESHOLD的默认值(128KB)。
当然内存分配器的职责不仅仅是更新brk地址,更多的还是用于减少碎片以及快速分配内存块。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。