Linux内存管理笔记(宋宝华)
文章平均质量分 88
主要是为了方便自己回忆查看,更多的是从流程原理上去记录,从代码方面去讲解的没有,主要是自己水平有限
紫夜墨青
这个作者很懒,什么都没留下…
展开
-
5.Linux内存管理----其他工程问题以及调优
文章目录一、DMA与cache的一致性 一、DMA与cache的一致性 1、解决方法: (1) 一致性DMA: 访问 DMA 内存区域是不带有cache的,这样cpu和外设看到的DMA的内存数据时时刻刻都是一致的 api函数: void * dma_alloc_coherent(struct device *dev, size_t size, dma_addr_t *dma_handle, gfp_t flag); void dma_free_coherent(stru原创 2020-12-13 12:45:00 · 178 阅读 · 0 评论 -
4.Linux内存管理----内存与IO交换
Linux内存管理第四课----内存与IO交换 文章目录Linux内存管理第四课----内存与IO交换一、Page Cache二、free命令详解三、read/write 和 mmap四、swap 和 zRam五、页面回收和LRU 一、Page Cache 1.page cache解释:在Linux读写文件时,用于缓存文件的逻辑内容,从而加快磁上映像和数据的访问。 2.产生page cache 的操作:read/write,mmap(内存映射) (1)read/write ①read: 当cpu首原创 2020-12-13 12:44:39 · 202 阅读 · 0 评论 -
3.Linux内存管理----进程中的内存消耗、泄露
文章目录一、VMA(virtual memory area)二、pagefault(缺页中断)三、用户空间的虚拟内存在实际物理内存的分布四、判断内存泄露 一、VMA(virtual memory area) 1.VMA(虚拟内存空间)概述 一个进程用结构体task_struct结构体描述。task_struct中包含内存结构体mm_struct ;mm_struct 包含虚拟内存结构体vm_area_struct。 vm_area_struct中,包含虚拟内存的用户空间的地址范围,以及该内存原创 2020-12-13 12:44:03 · 177 阅读 · 0 评论 -
2.Linux内存管理----内存动态申请、释放
文章目录一、内核态、用户态的内存申请和释放二、内核内存申请api三、进程申请内存的过程四、OOM(内存溢出:Out of Memory) 一、内核态、用户态的内存申请和释放 Linux最底层的物理内存是通过buddy算法进行管理的,但是buddy的最小单位为页,如果我们想申请一个字节的时候,该怎么办。 在Linux内核态中,以字节为单位的申请是通过slab算法进行管理的;用户态中是通过libc进行管理的。slab和libc相当于一个二级内存分配管理器。 1、slab----内核态的原创 2020-12-13 12:43:27 · 506 阅读 · 0 评论 -
1.Linux内存管理----CPU寻址
文章目录一、内存寻址 一、内存寻址 1、cpu寻址 linux系统中,从cpu角度去访问的地址是虚拟地址;cpu将虚拟地址发送给MMU(l内存管理单元,Memory Management unit),MMU去寻找实际内存的物理地址。虚拟地址到物理地址映射关系的实现可以称之为地址转换(Address Translation)。 用户空间中,进程A切换到进程B时,MMU会把物理会把进程B的页表的基地址加载到MMU。 2、页表项 页表的高20bit,表示虚拟地址的页码;低12位表示该页码的原创 2020-12-13 12:42:50 · 219 阅读 · 0 评论