Linux内存管理--基本概念及相关数据结构(转)

一、内存管理的基本概念
       1.存储空间
       在32位嵌入式系统中,存储空间的地址范围从0x00000000到0xFFFFFFFF。这4GB存储范围内可以包括以下几种存储空间:
       设备空间(MT_DEVICE)、内部高速SRAM空间(MT_CACHECLEAN)、内部mini
cache空间(MT_MINICLEAN)、低端中断向量空间(MT_LOW_VECTORS)、高端中断向量空间
(MT_HIGH_VECTORS)、RAM内存空间(MT_MEMORY)、ROM(flash)空间(MT_ROM)
       2.内存空间
       系统的内存空间特指上面的RAM内存空间。
       3.内存页(page)
       Linux是以页(page)为单位来管理物理内存的,一页大小一般等于4096(字节)。页容量越大,系统中可能存在的内存碎片就越多。对应内存页的重要数据结构有struct page。
       4.内存区段(bank)
       一个内存bank表示一块连续内存区域,一个bank一般对应处理器的一个RAM片选管脚上连接的RAM芯片内存空间。对应内存bank的数据结构有struct meminfo。
       5.内存节点(node)
      
内存节点是指有一个或者多个内存bank组成的内存集合,如果一个内存节点由多个内存bank组成,这些内存bank之间可以地址连续,也可以不连续,即
内存节点内可以存在内存孔洞。对应内存节点的重要数据结构有struct pglist_data(pg_data_t)。
       6.内存页区(zone)
       内存页区是定义在内存节点(node)内的概念,每个内存节点可分为3个内存页区,即DMA页区(ZONE_DMA=0)、Normal页区(ZONE_NORMAL=1)和HighMem页区(ZONE_HIGHMEM=2),三个页区的含义如下:
1)  DMA页区:可以进行DMA操作的RAM内存区域。
2)  Normal页区:不能进行DMA操作的RAM内存区域。
3)  HighMem页区:属于高端内存的区域,高端内存是指系统中的物理内存容量太大,其中高于一定域值的RAM内存页区就是高端内存页区。
对应的内存页区的重要数据结构有struct zone。
7.空闲内存区域(free area)
对应内存空闲区域的重要数据结构有struct free_area。
8.NUMA(Non-Uniform Memory Access)非一致内存访问
二、内存管理相关数据结构
       1.Struct page内存页描述符结构
       struct page {
       page_flags_t flags;  页标志字
       atomic_t _count;   
       atomic_t _mapcount;     
       unsigned long private;   
       struct address_space *mapping;   
       pgoff_t index;               
       struct list_head lru;        
#if defined(WneANT_PAGE_VIRTUAL)
       void *virtual;                 
#endif /* WANT_PAGE_VIRTUAL */
};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux内存管理是一种复杂且功能强大的技术,它基于一系列算法和策略来有效地使用和管理系统的内存资源。以下是Linux内存管理基本概念: 1. 分页和段管理:Linux采用分页机制来管理物理内存,它将内存划分为固定大小的页或帧。同时,它还采用分段机制来管理进程的虚拟地址空间,将进程的地址空间划分为一系列段(如代码段、数据段和堆段)。 2. 内存映射:Linux使用内存映射来将文件或设备直接映射到内存中,这样可以直接访问文件内容或设备寄存器,而无需进行系统调用或访问文件系统。 3. 交换和回收:当系统内存不足时,Linux使用交换机制将不再活跃的进程或数据页从内存中移除,并将其存储在交换空间(也称为交换分区)中。当需要更多内存时,可以从交换空间中恢复这些页面。回收机制则用于回收不再需要的内存页面,以供其他进程使用。 4. 缓存:Linux使用缓存来提高内存使用效率。缓存通常包括页替换缓存(用于存储不再使用的页面)和缓存数据结构(如TLB,用于加速虚拟到物理的换)。 5. 动态内存分配:Linux提供了多种动态内存分配机制,如brk()和sbrk()系统调用来调整堆的大小,mmap()系统调用用于映射文件或创建新的内存区域。 6. 内存使用和监控:Linux提供了多种工具和接口来监控和管理系统的内存使用情况,如free、top、vmstat等命令,以及/proc文件系统中的信息。 总的来说,Linux内存管理策略旨在实现高效的内存使用、动态调整、缓存优化和故障恢复等功能,以确保系统在各种负载和场景下的稳定运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值