博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
内存管理(一)
阅读量:5934 次
发布时间:2019-06-19

本文共 1408 字,大约阅读时间需要 4 分钟。

UMA计算机(uniform memory access)将可用内存以连续方式组织起来。SMP系统中每个处理器访问各个内存区都是同样快。

NUMA计算机(non-uniform memory access)总是多处理计算机。系统的各个CPU都有本地内存,可支持特别快速的访问。各个处理器之间通过总线连接起来,以支持对其它CPU的本地内存的访问。

对于SMP系统,每个处理器对内存区的访问速度都相同,因此NUMA下只有一个Node(UMA), 该Node拥有自己的mem_map数组,同时将这唯一的Node分成几个zone,每个zone再用独立的伙伴系统管理物理页面。

 

page cache:读写文件时文件内容的cache,大小为一个页,不一定才固态存储器上连续。

buffer cache:读写固态存储器时,固态存储器内块内容的cache,buffer cache的内容对应固态存储器上的一个连续的区域,一个buffer cache大小可能从512到一个页。

swap cache:是page cache的子集。用于多个进程共享的页面被换出到交换区的情况。

buffer cache缓冲固态存储器块内容,page cache缓冲文件的一页内容。page cache写回固态存储器时会使用临时的buffer cache来写固态存储器。

注意下kupdate、bdflush、kswapd线程。

 

逻辑地址:x86中使用,段:偏移

线性地址:x86下逻辑地址经过分段单元处理后得到的线性地址;

物理地址:线性地址经过也表查找后得出物理地址,这个地址将被送到总线上指示所要访问的物理内存单元。

总线地址:总线寄存器地址、外设总线和内存之间使用(Sparc 架构上有这要的概念)

内核逻辑地址:常规的内核地址空间,映射了大部分主存,可以当作物理内存使用;内核逻辑地址与相应的物理地址相差一个常数偏移量(对等映射)

内核虚拟地址:由函数vmalloc 和 kmap_high返回的地址,不能直接对应物理内存,需要内存分配核地址转换才能与物理地址联系起来(页表映射)

LINUX:避免使用x86的段功能以提高可移植性,使用基址为0的段,使得逻辑地址=线性地址,一般 物理地址 = 总线地址,也可称线性地址为虚拟地址(但是如上所述,仍有差别,只是我看的部分书籍及手册中也没有特别作出区分)

 

 

在buddy system算法上运行的存储器区(memory area)分配算法没有显著的效率:

1)不同的数据类型用不同的方法分配内存可以提高效率。如需要初始化的数据结构,释放后可以暂存着,再分配时就不必初始化了

2)内核的函数常常重复使用同一类型的内存区,缓存最近释放的对象可以加快分配和释放

3)对内存的请求可以按照请求频率来分类,频繁使用的类型使用专门的缓存,很少使用的可以使用取整到2的幂次的通用缓存等算法

4)使用2的幂次大小的内存区域时,高速缓存冲突的概率较大,可以通过仔细安排内存区域的起始地址来减少高速缓存冲突

5)缓存一定数量的对象可以减少对buddy系统的调用,从而节省时间,并减少由此引起的高速缓存“污染”

slab分配器将存储区看作对象(object),它把对象按照类型分组成不同的高速缓存;每个slab由一个或多个连续的页框组成,这些页框中包含已分配的对象,也包含空闲的对象; slab分配器通过伙伴系统分配页框。

转载地址:http://zjctx.baihongyu.com/

你可能感兴趣的文章
商业智能、大数据、社交化、实时性是未来企业的精髓
查看>>
算法运行时间
查看>>
Echache整合Spring缓存实例讲解(转)
查看>>
五种开源协议(GPL,LGPL,BSD,MIT,Apache)介绍
查看>>
解决UnicodeEncodeError: 'ascii' codec can't encode characters in position 问题(转)
查看>>
Intersection between a 2d line and a conic in OpenCASCADE
查看>>
睿云智合(Wise2C)容器解决方案如何操作
查看>>
[Android]任务列表中显示"小程序"的原理分析
查看>>
MVP 观点 | 轻松实现日志可视化?— 95后阿里云 MVP 王鹏翰的答案
查看>>
当DevOps遇见AI,智能运维黄金时代即将开启?
查看>>
When Tech Meets Love – Smarter Ways to NOT be Single
查看>>
医疗人工智能的中国时代已经到来
查看>>
“九个字、一只手、专有云”,有孚网络的云上之路
查看>>
K8s的内部Pod之间都不通,搞了快两天
查看>>
JAVA线程示范之一种
查看>>
ES java api
查看>>
一周AI事件速览丨施尧耘人阿里量子首席科学家,各家AI大牛变动频繁
查看>>
需求、开发和测试的“三足鼎立”
查看>>
SCXML有限状态自动机
查看>>
大数据时代 数据该如何保护?
查看>>