首先,内存的大小在linux内核中的获知方法
1.通过bootloader 的 tag mem传入。
Setup.c 中的函数如下:
static int __init parse_tag_mem32(const struct tag *tag)
{
if (meminfo.nr_banks >= NR_BANKS) {
printk(KERN_WARNING
"Ignoring memory bank 0x%08x size %dKB/n",
tag->u.mem.start, tag->u.mem.size / 1024);
return -EINVAL;
}
arm_add_memory(tag->u.mem.start, tag->u.mem.size);
return 0;
}
__tagtable(ATAG_MEM, parse_tag_mem32);
其中最重要的函数为: arm_add_memory
这个函数向 meminfo数组中添加了一项关于 mem的描述
2.另外一个方法:通过内核启动参数mem=来传递
Setup.c 中的函数如下:
static void __init early_mem(char **p)
{
static int usermem __initdata = 0;
unsigned long size, start;
/*
* If the user specifies memory size, we
* blow away any automatically generated
* size.
*/
if (usermem == 0) {
usermem = 1;
meminfo.nr_banks = 0;
}
start = PHYS_OFFSET;
size = memparse(*p, p);
if (**p == '@')
start = memparse(*p + 1, p);
arm_add_memory(start, size);
}
__early_param("mem=", early_mem);
其中第二种方法具有高的优先级。
另外,还有一种修改memory属性的办法:
mdesc->fixup(mdesc, tags, &from, &meminfo);
这种方法依赖于特定的开发平台,在平台初始化的描述结构中定义。
最终,所以的关于memory的信息通过函数
paging_init(&meminfo, mdesc);
传递给 mem 初始化的部分。
第二,memory的初始化。
paging_init 的定义在 arch/arm/mm/mmu.c中。
在 paging_init 最重要的函数是:bootmem_init
该函数定义于:arch/arm/mm/init.c中。
分享到:
相关推荐
linux 内存泄露排查文档。 介绍mtrace的使用。根据实际问题介绍如果定位问题。
linux内存管理 linux内存管理 linux内存管理
嵌入式Linux内存与性能详解-史子旺 本书非常详尽地讲解了 linux 内存相关知识与 linux 系统调优相关的工具
天大 操作系统 课程 linux 内存管理 实验报告
linux 内存管理学习总结 学习心得 内存管理纲要
针对linux内存的使用,详细讲解了如何优化内存,及性能的提高
cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理.pdf cgroup-linux内存资源管理....
linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测 linux 内核 内存泄露检测
linux内存管理工具
关于Linux内存管理的经典文档,嵌入式linux驱动基础,linux字符设备驱动,linux设备驱动模型
linux内存管理源代码导读 pdf格式
嵌入式Linux内存使用与性能优化,很好的一本书
关于Linux操作系统下内存泄漏的检查方法
关于系统的内存使用,《嵌入式Linux内存使用与性能优化》试图完成两项任务:增加系统整体的空闲内存数量,从而提高进程的并发能力:使系统在长时间运行后,仍然能够保持较高数量的空闲内存。《嵌入式Linux内存使用与...
Linux内存管理--Linux物理内存三级架构.pdf
编译gcc -o memtool memtool.c,然后直接运行,会提供使用方法,按照使用方法读写内存,可用于ARM或者X86等平台读写内存
bin bin就是二进制(binary)英文缩写,该目录中存放Linux的常用命令,在有的版本中是一些和根目录下相同的目录。 /boot 该目录下存放的都是系统启动时要用到的程序,当用lilo引导Linux时,会用到这里的一些信息 /dev ...
Linux内存分页机制原理
Linux虚拟内存管理.pdf
linux 内存运行原理 slab 内存泄露整理 ,内存分析整理