結構體:init_mm 位置:mm/Init-mm.c1 struct mm_struct init_mm = {2 .mm_rb =RB_ROOT, /*紅/黑樹狀結構根節點*/3 .pgd =swapper_pg_dir, /*核心頁全域目錄位址*/4 .mm_users =ATOMIC_INIT(2), /*使用者空間使用者數*/5 .mm_count =ATOMIC_INIT(1), /*引用數*/6 .mmap_sem =__RWSEM_INITIALIZER(init_mm.mmap_sem), /*訊號量*/7 .page_table_lock=__SPIN_LOCK_UNLOCKED(init_mm.page_table_lock), /*保護鎖*/8 .mmlist = LIST_HEAD_INIT(init_mm.mmlist), /*所活動mm的鏈表*/ 9 INIT_MM_CONTEXT(init_mm) /*處理器相關上下文*/};結構體:memblock_region 位置:arch/arm/mm/mmu.c:11701 struct memblock_region {2 phys_addr_tbase; /*基地址*/3 phys_addr_tsize; /*大小*/4 #ifdef CONFIG_HAVE_MEMBLOCK_NODE_MAP5 int nid; /*noid id*/6 #endif7 };結構體:memblock_type 位置:include/linux/memblock.h1 struct memblock_type {2 unsignedlong cnt; /* regions 個數 */3 unsignedlong max; /* 已指派數組大小 */4 phys_addr_t total_size; /* 所有regions總大小 */5 structmemblock_region *regions;6 };結構體: memblock 位置:linux/include/asm/setup.h1 struct memblock {2 phys_addr_t current_limit; /*記憶體限制 */3 structmemblock_type memory; /*可用記憶體*/4 structmemblock_type reserved; /*保留記憶體*/5 }; 結構體:map_desc 位置:arch/arm/mm/mmu.c:11761 structmap_desc {2 unsignedlong virtual; /*要映射到的虛擬位址*/3 unsignedlong pfn; /*要映射的物理頁幀號*/4 unsignedlong length; /*映射長度*/5 unsignedint type; /*映射記憶體類型*/6 }; 結構體:mem_type 位置:arch/arm/mm/mmu.c:7161 struct mem_type {2 pteval_t prot_pte; /*二層頁式flags */3 pmdval_t prot_l1; /*二層頁式flags*/4 pmdval_t prot_sect; /*單層段式flags*/5 unsigned int domain; /*記憶體所屬域*/6 };結構體: membank 位置:linux/include/asm/setup.h1 struct membank {2 phys_addr_t start; /*Bank起始地址*/3 unsignedlong size; /*Bank大小*/4 unsignedint highmem; /*高端記憶體標記*/5 };結構體: meminfo 位置:linux/include/asm/setup.h1 struct meminfo {2 intnr_banks; /*Bank的數量*/3 structmembank bank[NR_BANKS]; /*Bank數組*/4 };1 typedefstruct{ pteval_t pte; } pte_t; /*頁表項結構*/2 typedefstruct{ pmdval_t pmd; } pmd_t; /*頁中間目錄結構*/3 typedefstruct{ pmdval_t pgd[2]; } pgd_t; /*頁全域目錄結構*/4 typedefstruct{ pteval_t pgprot; } pgprot_t;/*頁保護目錄結構*/ 結構體: pg_data_t 位置:include/linux/Mmzone.h2 typedef struct pglist_data{3 struct zonenode_zones[MAX_NR_ZONES]; /*zone節點數組*/4 struct zonelistnode_zonelists[MAX_ZONELISTS]; /*zonelist數組*/5 int nr_zones; /*zone個數*/6 spinlock_tnode_size_lock; /*鎖*/7 unsigned long node_start_pfn; /*節點開始頁幀號*/8 unsigned long node_present_pages; /* 物理頁總數 */9 unsigned long node_spanned_pages; /* 包含洞在內的所有頁幀數*/10 int node_id; /*node編號*/11 } pg_data_t;結構體: bootmem_data位置:include/linux/Mmzone.h1 typedefstructbootmem_data {2 unsignedlong node_min_pfn; /*存放bootmem位元影像的第一個頁面 */3 unsignedlong node_low_pfn; /*低端實體記憶體頂點,最大896MB*/4 void*node_bootmem_map; /*指向bootmem位元影像*/5 unsigned long last_end_off /*用來存放在前一次分配中所分配的最後一個位元組相對於hint_idx的位移量*/6 unsigned long hint_idx; /*前一次分配的最後一個頁面的頁面號 */7 struct list_headlist; /*鏈表結構*/} bootmem_data_t;