
内存测量
系统占用内存 free 旧版本free $ free total used free shared buffers cached Mem: 65960636 63933576 2027060 73392 1602076 32628548 -/+ buffers/cache: 29702952 36257684 Swap: 0 0 0 (1)第一行Mem:内存 …

系统占用内存 free 旧版本free $ free total used free shared buffers cached Mem: 65960636 63933576 2027060 73392 1602076 32628548 -/+ buffers/cache: 29702952 36257684 Swap: 0 0 0 (1)第一行Mem:内存 …

进程虚拟地址空间 Executable and Linkable Format(ELF) 上图是可执行文件的内容结构图,由ELF header、program headers、各section、sections headers组成。

无DMA时:设备与内存之间数据搬运需要依靠CPU来完成。 有DMA时:DMA可以直接完成设备与内存直接的数据搬运,不需要cpu介入。 DMA的引入,优点是数据在内存和设备之间的搬运不需

CMA,contiguous memory allocator是内存管理子系统的一个模块,其主要为了解决分配连续的物理内存。尽管有了伙伴系统、slab分配器以及相关的内存回收机制,但是对于一些驱动如camera、disp

伙伴系统内存分配是以物理页面4KB为单位,但是实际使用的时候不会一下使用到4KB。实际使用中很多情况会以字节为单位。因此为了更精确的划分使用内存,linux内核在伙伴系统之上使用s

相关结构体 核心结构体 struct pglist_data: 节点的描述,arm64 UMA架构中,只有一个节点。 struct zone node_zone[]:是一个数组,每个元素表示一个内存区域所对应的 struct zone 结构体。从名字可以看出,此数组

恒等映射与内核镜像映射__create_page_tables preserve_boot_args:保持启动参数到boot_args[]数组 set_cpu_boot_maode_f

页表级数 如何确定page table level?确定了VABITS和PAGES size之后,页表级数也可确定,根据内核的配置如下: config PGTABLE_LEVELS int default 2 if ARM64_16K_PAGES && ARM64_VA_BITS_36 default 2 if ARM64_64K_PAGES && …

三级结构Node、Zone、Page Node与内存架构UMA、NUMA UMA架构(uniform memory acces) 一致内存访问,所有CPU访问内存都需要过总线,距离都是一样的,所以每个

地址空间 虚拟地址:程序使用的内存地址;物理地址:硬件的地址空间。虚拟地址通过MMU转化为物理地址,虚拟地址的长度与实际的物理内存容量没有关系,从系统中每个进程的角度看,地址空间的进