linux内核符号地址,Linux内核-模块专用地址空间

本文介绍了Linux内核模块使用的专用地址空间,包括其大小和内存布局。模块在加载时会调用module_alloc()分配内存,其范围在MODULES_VADDR到MODULES_END之间。针对ARM平台,模块地址默认为16MB,可通过配置扩大到28MB。此外,文章提到了模块PLT机制和如何减少模块空间占用。
摘要由CSDN通过智能技术生成

Linux内核模块采用专用的地址空间,有一定的固定大小,具体可以通过起机dmesg信息里的字段来确认

Memory: 245540K/262144K available (3043K kernel code, 1665K rwdata, 1112K rodata, 176K init, 6356K bss, 16604K reserved, 0K cma-reserved)

Virtual kernel memory layout:

vector : 0xffff0000 - 0xffff1000 ( 4 kB)

fixmap : 0xffc00000 - 0xfff00000 (3072 kB)

vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)

lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)

modules : 0xbe600000 - 0xc0000000 ( 26 MB) <<< 模块地址空间

.text : 0xc0018000 - 0xc04272b0 (4157 kB)

.init : 0xc0428000 - 0xc0454000 ( 176 kB)

.data : 0xc0454000 - 0xc05f45c0 (1666 kB)

.bss : 0xc05f45c0 - 0xc0c295ec (6357 kB)

所需空间大小

模块在加载时,会调用module_alloc()来申请一块内存来存放模块的内容,需要的大小如下:

​ 代码段(.text) + 未初始化全局或静态变量(.bss) + 已初始化全局或静态变量(.data)

关联源码

模块在加载时,内核会调用module_alloc()来申请足够的内存来存

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值