Linux 内存管理简介

  1. struct page :
    描述的是一个物理页, 内存管理的最小单元, 只描述的是物理页面本身, 程序和系统运行,存在数据的换入换出, 因此page中的数据和page无本质的联系.

     数据结构定义在 :
     		include/linux/mm_types.h
     			主要内容:
     					(1) 页面状态(page-flags.h);
     					(2) 页的类型:
     						a. page cache/anonymous page;
     						b. page_pool used by netstak(DMA address);
     						c. slab, slob and slub;
     						d. slab kmem_cache (高速缓存);
     						e. compound page(复合页, 多个物理页组成的大页);
     						f. Page table page;
     						g. ZONE_DEVICE pages;
     					(3) 页面引用计数(page_ref.h);
     					(4) memory cgroup;
     					(5) 页面虚拟地址(asm/page.h);	
    
  2. struct zone :

     由于硬件的限制, 内核并不能堆所有的内存页都一视同仁, 有些页位于内存中的特定物理地址上, 用于特定用途, 内核将具有相同特性的页分组, 形成不同的zone.
     
     硬件缺陷或者局限性,导致的寻址问题:
     	(1) 一些硬件只能在特定地址执行DMA ;
     	(2) 一些体系结构下物理内存比虚拟内存大得多, 一些内存就不能永久映射到内存;
     		ZONE_DMA : 包含的页执行DMA 操作;
     		ZONE_DMA32: 32位 DMA 操作;
     		ZONE_NORMAL: 正常映射的页;
     		ZONE_HIGHMEM: 高端内存, 不能永久映射到内核地址空间的页;
     
     数据结构定义在 :
     		include/linux/mmzone.h
    
     各个zone的初始化:
     	kernel/mm/page_alloc.c
    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值