3.2 (N)UMA模型的内存组织
来源:互联网 发布:2015年网络流行语 编辑:程序博客网 时间:2024/06/05 08:29
3.2 (N)UMA模型中的内存组织
Linux支持的各种不同体系结构在内存管理方面差别很大。
内核对一致和非一致内存访问系统使用相同的数据结构,因此针对各种不同形式的内存布局,各个算法几乎没有什么差别。
3.2.1 概述
首先,内存划分为结点。每个节点关联到系统中的一个处理器,在内核中表示为pg_data_tr的实力。
各个节点又划分为内存域,是内存的进一步细分。
if USE_SPLIT_PTLOCKS
spinlock_t ptl;
endif
struct kmem_cache *slab;struct page *first_page;}union { pgoff_t index; void *freelist;};struct list_head lru;void *virtual;
ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS
unsigned long debug_flags;
endif
ifdef CONFIG_KMEMCHECK
void *shadow;
endif
}
*flags 存储了体系结构无关的标志,用于描述页的属性。
*_count是一个使用计数,表示内核中引用该页的次数。
*_mapcount表示在也表中有多少向执行该页
*lru是一个表头,用于在各种链表上维护该页,以便将也按不同类别分组,最重要的类
别是活动和不活动也。
*内核可以将多个毗连的也合并为符合也(compound page).
*mapping 指定了页帧所在的地址空间。index是页帧在映射内部的偏移量。地址空间是
一个非常一般的概念。地址空间用于将文件的内容与装载数据的内存区关联起来。
*private是一个指向”私有”数据的指针,虚拟内存管理会忽略该数据。根据页的用途,
可以用不同的方式使用该指针。
*virtual用于高端内存区域中的页,换言之,机无法直接映射到内核内存中的也。
virtual用于存储该也的虚拟地址。
*体系结构无关的也标志
也的不同属性通过一些列页标志描述,存储为struct page的flags成员中的各个比特位
。
*PageLocked查询比特位是否置位;
*SetPageLocked设置PG_locked位,不考虑先前的状态;
*TestSetPageLocked设置比特位,而且返回原值;
*ClearPageLocked清除比特位,不考虑先前的状态
*T estClearPageLocked清除比特位,返回原值。
*PG_locked指定了页是否锁定。如果该别提为置位,内核的其他部分不允许反问该也。
者防止了内存管理出席那静态条件。
*如果设计该也的I/O操作期间发生错误,则PG_error置位。
*PG_referenced和PG_active控制了系统使用该也的活跃程度。在也交换子系统选择患处
页时,该信息是很重要的。
*PG_uptodate表示也的数据已经从块设备读取,期间没有出错。
*如果与硬盘上的数据相比,也的内容已经该bain,则之为PG_dirty.
*PG_lru有助于实现页面回收和切换。
*如果page结构的private成员非空,则必须设置PG_private位。用于I/O页,可使用该字
段将页细分为多个缓冲区,但内核的其他部分也有各种不同的方法,将私有数据附加到
也上。
*如果页的内容处于向块设备会写的过程中,则需要设置PG_writeback位。
*如果页的slab分配器的一部分,则设置PG_slab位
*如果也处于交换缓存,则设置PG_swapcache为。
*在可用内存的数量变少时,内核试图周期性地回收也,即提出不活动、未用的也。
*如果也空闲且包含子啊伙伴的列表中,则设置PG_buddy位,伙伴系统是也分配机制的核
心。
*PG_compound表示该也属于一个更大的符合页,符合也有多个毗连的普通页组成。
*PageXXX(page)会检查也是否设置了PG_XXX位。
*SetPageXXX无条件地清除某个设置的比特位,并返回原值。
- 3.2 (N)UMA模型的内存组织
- 《深入Linux内核架构》笔记:(N)UMA模型中的内存组织
- (N)UMA 模型中的内存组织------《深入Linux内核架构》笔记
- N)UMA 模型中的内存组织------《深入Linux内核架构》笔记
- C语言内存模型(内存组织方式)
- C语言内存模型(内存组织方式)
- UMA
- 内存学习1 UMA和NUMA
- 读书汇(03)--中国企业的组织能力模型
- JavaSE 6.0学习(字符串-----优异的内存组织机制)
- SMP,UMA,NUMA,MPP的概念理解
- 内存组织
- 如何测试与UMA GAN功能的手机 - 测试,UMA-电子行业
- C++类对象的内存组织结构
- C++类对象的内存组织结构:
- linux和windows的内存组织方式
- 组织行为学对项目管理的意义(2):人格的大五模型
- 组织行为学对项目管理的意义(2):人格的大五模型 .
- [leetcode] 198. House Robber
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
- JZOJ.1758 过河
- [暴力] HDU 4473 Exam
- python学习——常用第三方模块PIL
- 3.2 (N)UMA模型的内存组织
- android五大布局之-RelativeLayout
- UVa230 Borrowers
- js鼠标事件中的clientX/clientY,screenX/screenY,pageX/pageY,offsetX/offsetY,layerX/layerY,x/y
- BestCoder 2nd Anniversary
- 迟到的总结(2016年7月16号考试总结)
- [JZOJ4654]彩色格子
- Linux C编程实战——第六章 文件操作
- 百度地图定位