加入收藏 | 设为首页 | 会员中心 | 我要投稿 威海站长网 (https://www.0631zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 评论 > 正文

人工智能趋势对当今企业的影响

发布时间:2021-02-20 13:44:19 所属栏目:评论 来源:互联网
导读:.管理逻辑 Linux对物理页面管理的框架如上图,由于本文阐述的是物理内存外碎片,所以关于伙伴系统本文只做简单分析,不涉及具体的细节并不阐述关于per cpu pageset等内容,如果读者有兴趣,可以参考内核源码。 Linux将物理内存分为不同的node和zone来管理:

.管理逻辑

Linux对物理页面管理的框架如上图,由于本文阐述的是物理内存外碎片,所以关于伙伴系统本文只做简单分析,不涉及具体的细节并不阐述关于per cpu pageset等内容,如果读者有兴趣,可以参考内核源码。

Linux将物理内存分为不同的node和zone来管理:

  • node:为了支持NUMA结构,即CPU对不同内存簇的访问速度不同,Linux设计了node结构,将物理内存分为多个内存节点管理;对于UMA结构,只有一个node节点。
  • zone:为兼容不同的平台的硬件限制,例如80x86的体系结构的硬件总线访问等问题,Linux将node节点下的内存分为多个zone;目前在ARM平台,多个zone管理已非必要。

zone管理单元下的内存通过free_area数组将内存分成11个块链表进行管理:


 

二、Linux物理内存管理框架

阐述物理内存外碎片化的来龙去脉前,先得明白Linux是如何管理物理内存的?Linux内核采用的是buddy system allocation,即著名的伙伴系统分配器。

1.设计思路

伙伴系统分配器的核心思路:将系统的空闲页面分为11个块链表,每个块链表分别管理着1,2,4,8,16,32,64,128,256,512和1024个物理页帧号连续的页面。每个页面大小为4K bytes,buddy管理的块大小范围从4K bytes到4M bytes,以2的倍数递增。


 

2.物理内存外碎片化:指系统中无法利用的小内存块。

例如系统剩余内存为16K bytes,但是这16K bytes内存是由4个4K bytes的页面组成,即16K内存物理页帧号#1不连续。在系统剩余16K bytes内存的情况下,系统却无法成功分配大于4K的连续物理内存,该情况就是内存外碎片导致,本文中阐述的就是物理内存外碎片化。

注:#1物理页帧号:Linux物理内存是通过页面进行管理,并对每个页面进行编号,称为页帧号,如果是连续的两个物理页面,其页帧号是连续的。


 

结语

该篇主要讲了Redis的ZSET数据类型的底层实现跳跃表,先从跳跃表是什么,引出跳跃表的概念和数据结构,剖析了其主要组成部分,进而通过多幅过程图解释了Redis是如何设计跳跃表的,最后结合源码对跳跃表进行描述,如创建过程,添加节点过程,获取某个节点排名过程,中间穿插例子和过程图。

如果觉得写得还行,麻烦给个赞👍,您的认可才是我写作的动力!

如果觉得有说的不对的地方,欢迎评论指出。

好了,拜拜咯。



 

(编辑:威海站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读