- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 Linux6.1.79 匿名内存区描述符(struct anon_vma)
成员类型 成员名 功能说明(内核选项) struct anon_vma * root 该匿名内存区树的根节点 struct rw_semaphore rwsem 读写信号量:W,修改;R,遍历链表 atomic_t refcount 匿名内存区引用计数,最后一个使用者负责释放 unsigned long num_children 子节点数量 unsigned long num_active_vmas 指向该匿名内存区
2024-08-04 19:02:55
88
原创 Linux6.1.79 虚拟内存区描述符(VMA,struct vm_area_struct)
define VM_MAYWRITE 0x00000020 若设置,表示该内存区域上可以设置VM_WRITE标志位。#define VM_MAYSHARE 0x00000080 若设置,表示该内存区域上可以设置VM_SHARE标志位。#define VM_MAYREAD 0x00000010 若设置,表示该内存区域上可以设置VM_READ标志位。
2024-08-04 18:48:14
645
原创 Linux6.1.79 内存描述符(struct mm_struct)
获取进程用户空间中未被映射的内存区域新式布局下,兼容性内存映射(mmap)的起始地址(CONFIG_HAVE_ARCH_COMPAT_MMAP_BASES,64位应用调用32位mmap系统调用,或者32位应用调用64位mmap系统调用)经典布局下,兼容性内存映射(mmap)的起始地址(保护启动相关信息的自旋锁:架构相关的内存管理上下文。以arm64架构为例:引入ASID版本号,避免每次进程切换都需要清空页表缓存,只需要在硬件ASID回绕时把处理器的页表缓存清空。
2024-07-20 18:35:14
965
原创 Linux虚拟内存管理
这些操作包括在已映射的地址段内查找特定的地址,或者追加一个代表新映射的虚拟地址区间(VMA)。大多数操作系统都实现了缓冲区缓存(buffer cache),该缓存是一个管理内存块链表的框架,其内存块用于缓存持久性存储磁盘块。当一个新VMA被映射到现有的VMA之前或之后,并且和现有的VMA带有相同的访问属性,数据也是来自文件备份内存区域时,合并为一个VMA是更理想的。虚拟地址空间都是通过匿名内存映射分配的。虚拟地址子系统把进程的所有表示匿名内存区域放到一个链表里,并通过一个aon_vma类型的描述符来表示。
2024-07-07 16:28:28
411
原创 Linux6.9发布-内存子系统更新
当系统有多个NUMA(非一致性内存访问)节点,且 带宽匮乏(bandwidth hungry);那么使用加权交叉策略可能是一个明智的选择。然而,如果这些NUMA节点由不同类型的内存组成,比如 通过插座连接的内存条(socket-attached DRAM)和CXL/PCIe连接的内存条(CXL/PCIe attached DRAM), 基于轮转的交叉策略无法利用不同的带宽特性较优地分发数据。相反,以遵循每个NUMA节点的带宽权重而不是均匀的分配策略(allocation policy),交错会更高效。
2024-07-07 15:52:52
783
1
sfdp(Serial Flash Discoverable Parameters)
2019-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人