linux内核全局变量重定位,动态链接库中全局变量的重定位问题
原帖由 albcamus 于 2007-5-9 09:38 发表于 9楼
印象里整个共享库都是以MAP_PRIVATE为标志来调用mmap影射的。
你说的对,共享库的代码段和数据段一般也是以MAP_PRIVATE来影射的。不同的只是读写权限。
是我的概念有错误。在Solaris用pmap可以看每段影射的权限和方式,可以看到,所有共享库的代码段都没有s位。
又查了一下资料,共享库的共享是通过影射来实现的,无论你是MAP_PRIVATE还是MAP_SHARED。
MAP_PRIVATE还是MAP_SHARED的不同在于是否页的内容的改变对其它进程可见。
MAP_PRIVATE+只读+执行不同影响代码段及代码段内的常量在进程间共享。
MAP_PRIVATE+读写+执行则通过COW的实现使得COW发生时,原来的页面失效,重新得到一个匿名内存页来完成一次写操作。
全局变量既然在数据段内,它就是MAP_PRIVATE+读写+执行的方式,如果进程不去改变它,它就通过major fault或者minor fault实现了共享。
进程需要修改的时候就发生一次COW。
Permissions/Flags (Mode) The virtual memory permis-
sions are shown for each
mapping. Valid permissions
are:
r: The mapping can be read
by the process.
w: The mapping can be writ-
ten by the process.
x: Instructions that reside
within the mapping can
be executed by the pro-
cess.
Flags showing additional
information for each mapping
can be displayed:
s: The mapping is shared
such that changes made
in the observed address
space are committed to
the mapped file, and are
visible from all other
processes sharing the
mapping.
bash-3.00# pmap 1221
1221: bash
08044000 16K rw--- [ stack ]
08050000 588K r-x-- /usr/bin/bash
080F2000 76K rwx-- /usr/bin/bash
08105000 184K rwx-- [ heap ]
FEA00000 2176K r-x-- /usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3
FEC2F000 8K rwx-- /usr/lib/locale/en_US.UTF-8/en_US.UTF-8.so.3
FED08000 4K rwxs- [ anon ]
FED10000 64K rwx-- [ anon ]
FED30000 4K rwx-- [ anon ]
FED40000 56K r-x-- /usr/lib/locale/common/methods_unicode.so.3
FED5D000 4K rwx-- /usr/lib/locale/common/methods_unicode.so.3
FED60000 24K rwx-- [ anon ]
FED70000 896K r-x-- /lib/libc.so.1
FEE50000 28K rw--- /lib/libc.so.1
FEE57000 8K rw--- /lib/libc.so.1
FEE70000 4K rwx-- [ anon ]
FEE80000 560K r-x-- /lib/libnsl.so.1
FEF1C000 20K rw--- /lib/libnsl.so.1
FEF21000 24K rw--- /lib/libnsl.so.1
FEF30000 48K r-x-- /lib/libsocket.so.1
FEF4C000 4K rw--- /lib/libsocket.so.1
FEF50000 156K r-x-- /lib/libcurses.so.1
FEF87000 28K rw--- /lib/libcurses.so.1
FEF8E000 8K rw--- /lib/libcurses.so.1
FEFA0000 4K r-x-- /lib/libdl.so.1
FEFB0000 4K rwx-- [ anon ]
FEFC2000 160K r-x-- /lib/ld.so.1
FEFFA000 4K rwx-- /lib/ld.so.1
FEFFB000 8K rwx-- /lib/ld.so.1
linux内核全局变量重定位,动态链接库中全局变量的重定位问题相关推荐
- linux内核全局变量重定位,关于可重定位文件中全局变量的一个重定位疑惑,借各位牛刀一用^...
/// 不需要牛刀,不需要阅读源码,如果只是为解决109的含义.楼主执行的查询命令readelf -S test2.o [ 8] .symtab SYMTAB ...
- vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式
通常认为,产生异常的地址是lr寄存器的值,从上面的异常信息可以看到[lr]的值是c01a4e30. 接下来,我们可以通过内核镜像文件反汇编来找到这个地址.内核编译完成后,会在内核代码根目录下生成vml ...
- Linux 内核通知链随笔【中】
关于内核通知链不像Netlink那样,既可以用于内核与用户空间的通信,还能用于内核不同子系统之间的通信,通知链只能用于内核不同子系统之间的通信.那么内核通知链到底是怎么工作的?我们如何才能用好 ...
- linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...
中科大老师全程讲解Linux内核分析视频教程<附加介绍+总结>共23节课" F4 u& {+ T) p5 G' W ]; o% m 2 q: ]. j8 I; q' D ...
- linux内核关系绘图工具_Linux中的绘图工具
linux内核关系绘图工具 如果您是像我这样的大型开源狂热者,您可能会经常遇到有关专有工具的开源替代品的问题. 从"替代方案到Microsoft®Visio®"部门,这里有三个技巧 ...
- elf文件中代码段有绝对地址但重定位表中无.text.rel
阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...
- 如何安装新linux内核,详解Debian系统中安装Linux新内核的流程
一直对Linux内核很有兴趣,但苦于入门不易,认真看了ldd前5章突然就来感觉了,光看不练不顶用,首先就需要环境搭建. 使用的是Debian 5.0,内核2.6.26,欲安装的新内核为2.6.28,这 ...
- Windows PE 重定位表编程(枚举重定位地址)
原理之前单独总结过,在这里: http://blog.csdn.net/u013761036/article/details/54051347 下面是枚举重定位信息的代码: // ReLocation ...
- linux do_irq 报错 代码,linux - 内核函数asm_do_IRQ()中的irq与我在模块中请求的不同 - 堆栈内存溢出...
我做了一些皮质-A9开发板的实验. 我使用gpio_to_irq()获取irq num并且我请求了irq并用它写了一个小驱动程序,它在syslog中是196. 我在asm_do_IRQ中添加了一些pr ...
最新文章
- debian 9/ ubuntu 添加swap分区
- jvm--动态对象年龄判定
- CF1037H. Security
- hive转16进制unhex_Java 进制的转换
- 关于解决Permission is only granted to system apps
- AIR中文帮助 第十章. 窗体(Windows)和菜单
- 前端数据库——WebSQL和IndexedDB
- 操作系统时间片轮换_操作系统 时间片轮转法
- oracle狎鸥亭_卢永佑 个人主页 - 韩国奥拉克皮肤科整外科 - 美佳网
- VScode编辑同步Markdown文档到印象笔记
- jdk中ArrayList的实现
- Android应用开发进阶
- 驱动精灵恶意投放后门程序 云控劫持流量、诱导推广
- 直播答题哪家强:风口之下的产品运营体验
- pandas_计算年化收益率
- 一,FPGA配置及文件生成烧写
- 小学生计算机房的简笔画,小学生校园风景简笔画图片
- IDE工具、文本编辑器的列块编辑模式
- 在SVN服务器彻底删除文件
- 浙大版《Python 程序设计》题目集
热门文章
- 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁
- Mac版word空格变成小点,多了很多“分节符(下一页)”和“窗体顶端”和“窗体底端”等字样,怎么解决?
- Linux Bridge的IP NAT细节探析-填补又一坑的过程
- taro开发微信小程序-播放轨迹(十一)
- 小程序助力智能家居生态平台
- 中学生应该养成的良好习惯
- 程序员,我要为了这个名号而疯狂
- php m403n安装错误,HP LaserJet M403n驱动
- Larval安装使用Excel步骤
- tf1.x error:Variable generator/encoder_image/conv2d/kernel already exists, disallowed