栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux内存管理浅识

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux内存管理浅识

1.1内存组织

     从管理内存的方法区分:可以把计算机内存分为,一种UMA(一致性访问),另一种NUMA(非一致性访问)。


        对于UMA每一个CPU访问同一块内存,各CPU对内存的访问不存在性能差异;对于NUMA而言,各内存和CPU都通过总线连接在一起,每个CPU都有一个本地内存,访问速度较快,若CPU访问其他CPU的本地内存,速度很慢。

       Linux在内存组织中将最高层次定义为内存节点。UMA系统中定义一个内存节点,在NUMA系统中定义两个内存节点。Linux内存管理第二个层次定义为区,每个内存节点都划分为很多区,目前内核中定义一下几个区:
-  ZONE_DMA:适合DMA操作的内存区。
-  ZONE_DMA32:在64位系统上使用32位地址寻址的适合DMA操作的内存区。
-   ZONE_NORMAL:常规内存区域,指可以直接映射到内核空间的内存。
-   ZONE_HIGHMEM:高端内存。
-   ZONE_MOVEABLE:一个伪内存区域。
-   Linux内存管理的第三个层次为页,页的大小有CPU的内存管理单元MMU决定。
-     Linux内核是按页来管理内存的,最基本的内存分配和释放都是按页进行的。
1.2按页分配内存

    struct page *alloc_pages(gfp_t gfp_mask,unsigned int order);
    alloc_page(gfp_mask);
    void __free_pages(struct page *page,unsigned int order);

alloc_pages分配2的Oder次方连续的物理页,返回值为起始页struct page对象的地址,参数gfp_mask控制页面分配行为的一个掩码。

1.3 slab分配器

内核针对小块内存的分配器。

2、DMA工作原理

 

DMAC是DMA的控制器,若现在有大量数据需要传输,无DMA时则需要CPU处理,便会产生多次中断,数据搬移则加大CPU的负担,若有DMA的设备则会协助CPU完成数据传输,CPU只需要告诉DMA将一个内存起始地址若干个字节搬移到指定外设发送FIFO中,接受同理,DMAC就会启动存储总线数据搬移,结束后给CPU一个中断,通知CPU数据搬移完成,提高工作效率。
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/734020.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号