reverse mapping for anonymous pages
为了快速地根据page的指针找到对应的page table项,linux在每个page的mapping域里有一个anon_vma结构,是一个list,保存了所有引用它的vm_area_struct,而vm_area_struct的vm_mm项指向mm_struct,在mm_struct里的pgd则指向进程的全局页表。有点没看懂的是,一个page的anon_vma结构里还可能包含没有包括这个page的vm_area_struct。书中是这样写的:be warned that,even if an anonymous memory region includes different pages,there always is just one reverse mapping list for all the page frames in the region.翻译过来的意思是一个memory region的所有page共享一个anon_vma结构,这样的话的确可能会出现不包含某个page的vm_area_struct,但是不明白的是linux什么不每个page一个anon_vma结构。
reverse mapping for mapped pages
因为mapped page被共享的可能性很大,一个mapped page一般会被很多process共享 。所以为了更快地找到包含特定page的vm_area_struct。linux使用一个priority search tree,每个文件都有一个这样的树,它被保存在addree_space的i_mmap结构中,而address_space则被保存在inode结构中。这个priority search tree是有edward mccreight在1985年提出来的,它的每个节点都代表一个区间,使用两个index来定位树中节点:一个是radix,它代表区间的开始;一个heap index,它代表区间的结束。PST是一个基于radix的搜索树,同时又是一个基于heap index的堆,任何子节点的heap index都要小于父节点的heap index。在linux中,每个树节点是一个prio_tree_node,代表一个或多个vm_area_struct(vm_area_struct的shared.prio_tree_node指向它,映射文件相同部分的vm_area_struct被链接在同一个prio_tree_node下)。对于vm_area_struct而言,radix是指它映射文件的起始page,heap index是指它的终止page,另外还有一个size index(值为总共映射page数-1,目的是为了满足pst的性质).
分享到:
相关推荐
Linux反向映射是一种在操作系统中用于内存管理的技术,它的目的是改进虚拟内存管理子系统的页面淘汰算法。在Linux内核的历史中,直到2.4版本之前,内核都没有机制可以直接将物理地址转换为用户虚拟地址,也就是所谓...
OpenJPA(Open Java Persistence API)是Apache软件基金会下的一个开源项目,它是Java持久层标准JPA(Java Persistence API)的一个实现。JPA是Java EE平台中的一个重要组件,用于管理和处理应用程序中的对象-关系...
9.2 Reverse Mapping. 9.3 Interpolation. 9.4 Mapping Optimisations. 9.5 Image Registration. 10 Linear Transforms. 10.1 Fourier Transform. 10.2 Discrete Cosine Transform. 10.3 Wavelet Transform. 10.4 ...
使 用 OpenJPA 开发企业应用时,保持数据库和对象视图的一致性是非常重要的工作,OpenJPA 支持三种模式处理数据库和对象视图的一致性:正向映射(Forward Mapping)、反向映射(Reverse Mapping)、中间匹配(Meet...
腋窝反向淋巴制图(Axillary Reverse Mapping, ARM)是一种针对乳腺癌手术的新技术,旨在减少术后上肢淋巴水肿的发生。该技术在腋窝淋巴结切除术(Axillary Lymph Node Dissection, ALND)和/或前哨淋巴结切除术...
9.2 Reverse Mapping 282 9.3 Interpolation 285 9.3.1 Bilinear Interpolation 286 9.3.2 Bicubic Interpolation 288 9.3.3 Splines 290 9.3.4 Interpolating Compressed Data 292 9.4 Mapping Optimisations 292 ...
逆映射(reverse mapping)在这里指的是从CPU核心到进程或线程的反向关系映射,这通常用于跟踪哪些进程被绑定到哪个CPU,或者在运行时动态调整这些绑定。 在嵌入式Linux中,我们通常使用`sched_setaffinity`和`...
【Linux2.6内核内存管理】Linux 2.6版本的内核在内存管理方面引入了诸多改进,其中反向映射(reverse mapping)技术是一个关键的创新。反向映射技术增强了内存管理的效率,使得Linux系统能够更有效地处理内存分配和...
rmap(reverse mapping)机制,顾名思义,就是逆向映射,它是Linux内核为了跟踪虚拟页到物理页映射关系而设计的一种数据结构。通常,页表是用来从虚拟地址映射到物理地址,而rmap则提供了从物理页映射回所有引用它的...
例如,你可以设置DNS服务器管理的域名(domain)、反向映射(reverse mapping)以将IP地址转换为主机名、二级服务器(secondaries)以及转发规则(forwarders and forwardzones),这允许服务器将无法解析的查询转发...
3. 正向解析(Forward Mapping)和反向解析(Reverse Mapping):正向解析是从域名查找IP地址,而反向解析是从IP地址查找域名。正向解析的命名空间按照域的层次结构进行,反向解析则在arpa.in-addr.top domain下进行...
此外,内核还会使用各种技巧来优化内存管理效率,比如反向映射(reverse mapping)、使用更大的内存页等。 综上所述,Linux内核的内存映射机制是一项复杂而重要的技术,它不仅为操作系统提供了高效内存管理的基础,也...
Linux内核采用了分页系统,它提供了高效的内存访问机制,同时也包含了多种内存管理策略,如反向映射(reverse mapping)、匿名和非匿名内存页面的管理等。 文件系统是Linux内核的另一个重要组成部分。Linux支持多种...
There's also more extensive coverage of NOTIFY, IPv6 forward and reverse mapping, transaction signatures, and the new DNS Security Extensions; and a section on accommodating Windows 2000 clients, ...
《深入理解Hibernate配置与映射:hibernate-configuration-3.0.dtd与hibernate-mapping-3.0.dtd解析》 在Java世界里,Hibernate作为一款强大的对象关系映射(ORM)框架,极大地简化了数据库操作。而`hibernate-...
Hibernate 是一款开源的对象关系映射(Object-Relational Mapping,简称 ORM)框架,它为 Java 应用程序提供了对数据库的访问和操作功能。Hibernate 可以简化数据库编程工作,并提供了一种更加面向对象的方式来处理...