摘要:
内核启动过程的内存管理1,memblock机制kernel/arm/mm/memblock.carm_memblock_init()函数系统刚启动的时候不是所有的内存都是可以作为分配使用的,比如有些内存是默认给rootfs或者kernel使用的,memblock机制作用就是决定哪些内存是可以分配的,... 阅读全文
摘要:
1,kmalloc()函数和vmalloc()函数的区别:kmalloc()函数分配的内存是物理上连续的,而Vmalloc()函数分配的内存仅仅是虚拟地址连续的,正常内核编程通常使用kmalloc(),这主要是处于性能的考虑,因为vmalloc()将物理不连续的页转换为虚拟地址空间上连续的页,必须专... 阅读全文
摘要:
一,为什么需要高端内存答:对于32位机器,linux虚拟内存最大为4G,其中3-4G空间是用作内核空间,考虑到如果物理内存大于1G,那么物理内存不能得到完全的映射,因此,Linux 规定“内核直接映射空间” 最多映射 896M 物理内存,ARM体系架构上有高端内存的概念,不过不是固定在896M以上的... 阅读全文
摘要:
Linux伙伴系统(一)--伙伴系统的概述Linux伙伴系统(二)--伙伴系统的初始化Linux伙伴系统(三)--分配页Linux伙伴系统(四)--释放页Linux伙伴系统(五)--通过迁移类型分组来实现反碎片 阅读全文
摘要:
1,ARM MMUARM体系结构与编程第五章MMU的基本概念:MMU基本原理系统通过MMU将物理地址映射成虚拟地址,最小单位为页,虚拟地址空间一个页对应物理地址的一个页框ARM MMU原理 阅读全文
摘要:
1,linux内核内存管理arm体系结构的内存建立是在kernel/arch/arm/kernel/setup.c文件里~linux内核设计与实现——内存管理linux内核中,内核把物理页作为内存管理的基本单元,处理器最小的寻址单位是字节,从虚拟内存角度看,页是最小单位。内核中使用struct pa... 阅读全文
摘要:
一:内存分段和分页。点击打开链接每个用户空间的linux进程都有3G的地址空间,(虚拟地址空间3G-4G空间是linux内核使用的),用户空间看到的进程地址都是指虚拟地址空间,然后操作系统通过MMU再将虚拟地址映射到实际的物理地址。分段:就是将整个程序映射到linux内存的物理地址,假设有两个进程 ... 阅读全文
摘要:
1,内存中各个地址范围的含义按照地址范围由低到高的顺序:0-3G的地址范围:代码段:代码的可执行文件,一般为只读并且是共享的。(RO code/data)数据段:存已经被初始化的全局变量(RW data) static char *user="jiangsu"BSS段:存一些未被初始化的全局变量(... 阅读全文