0. linux-riscv内存管理大纲

  1. 内存管理之预备知识
    1.1 请简述内存架构中UMA和NUMA的区别
    1.2 CPU访问各级存储结构的速度是否一样?
    1.3 请绘制内存管理常用的数据结构的关系图,如mm_struct、VMA、vaddr、page、PFN、PTE、zone、paddr和pg_data等,并思考如下转换关系
    1.3.1 如何由mm_struct和vaddr找到对应的vma?
    1.3.2 如何由page和VMA找到vaddr?
    1.3.3 如何由page找到所有映射的VMA?
    1.3.4 如何由VMA和vaddr找出相应的page数据结构?
    1.3.5 page和PFN之间如何互换?
    1.3.6 PFN和paddr之间如何互换?
    1.3.7 page和PTE之间如何互换?
    1.3.8 zone和page之间如何互换?
    1.3.9 zone和pg_data之间如何互换?
    1.4 在risc-v内核中,内核映像文件映射到内核空间的什么地方?
    1.5 在risc-v内核中,用户空间和内核空间如何划分的?
    1.6 在系统启动时,riscv linux内核如何知道系统有多大物理内存?
    1.7 物理内存如何添加到伙伴系统中,是一页一页添加,还是以 来添加的?
  2. 物理内存与虚拟内存
    2.1 请简述linux内核在理想情况下页面分配器(page allocator)是如何分区出连续物理页面的
    2.2 在页面分配器中,如何从分配掩码(gfp_mask)中确定可以从哪些zone中分配内存?
    2.3 页面分配器是按照什么方向来扫描zone的?
    2.4 为用户进程分配物理内存时,分配掩码应该选用GFP_KERNEL,还是GFP_H

你可能感兴趣的:(linux)