kcore 文件

/proc/kcore提供了一个运行时的内存镜像,通过gdb和vmlinux可以用来debug kernel。其初始化函数展示了如何包含kernel的text段、vmalloc区域、模块空间及直接从物理内存映射的低端内存。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/proc/kcore 提供了整个机器的内存镜像,这样可以通过gdb vmlinux  /proc/kcore 来debug kernel.
kcore的实现在fs/proc/kcore.c中。
为什么说kcore代表整个机器的内存镜像呀,这点从kcore的初始化函数就可以看到
static int __init proc_kcore_init(void)
{
#在proc下创建kcore文件
	proc_root_kcore = proc_create("kcore", S_IRUSR, NULL,
				      &proc_kcore_operations);
	if (!proc_root_kcore) {
		pr_err("couldn't create /proc/kcore\n");
		return 0; /* Always returns 0. */
	}
	/* Store text area if it's special */
#在kcore中添加kernel的text端
	proc_kcore_text_init();
	/* Store vmalloc area */
#在kcore中添加vmalloc 端
	kclist_add(&kcore_vmalloc, (void *)VMALLOC_START,
		VMALLOC_END - VMALLOC_START, KCORE_VMALLOC);
#在kcore中添加module占用的空间
	add_modules_range();
	/* Store direct-map area from physical memory map */
#在kcore中添加低端内存
	kcore_update_ram();
#注册通知连,以防内存热插拔
	register_hotmemory_notifier(&kcore_callback_nb);

	return 0;
}
fs_initcall(proc_kcore_init);
看过kcore的初始化函数就知道kcore代表的是一个运行时的内存镜像

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值