原帖由 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内核全局变量重定位,动态链接库中全局变量的重定位问题相关推荐

  1. linux内核全局变量重定位,关于可重定位文件中全局变量的一个重定位疑惑,借各位牛刀一用^...

    /// 不需要牛刀,不需要阅读源码,如果只是为解决109的含义.楼主执行的查询命令readelf -S  test2.o [ 8] .symtab           SYMTAB           ...

  2. vmlinux 反汇编_ARM Linux内核驱动异常定位方法分析--反汇编方式

    通常认为,产生异常的地址是lr寄存器的值,从上面的异常信息可以看到[lr]的值是c01a4e30. 接下来,我们可以通过内核镜像文件反汇编来找到这个地址.内核编译完成后,会在内核代码根目录下生成vml ...

  3. Linux 内核通知链随笔【中】

        关于内核通知链不像Netlink那样,既可以用于内核与用户空间的通信,还能用于内核不同子系统之间的通信,通知链只能用于内核不同子系统之间的通信.那么内核通知链到底是怎么工作的?我们如何才能用好 ...

  4. linux内核教学的全套视频,中科大老师全程讲解Linux内核分析视频教程《附加介绍+总结》共23节课...

    中科大老师全程讲解Linux内核分析视频教程<附加介绍+总结>共23节课" F4 u& {+ T) p5 G' W  ]; o% m 2 q: ]. j8 I; q' D ...

  5. linux内核关系绘图工具_Linux中的绘图工具

    linux内核关系绘图工具 如果您是像我这样的大型开源狂热者,您可能会经常遇到有关专有工具的开源替代品的问题. 从"替代方案到Microsoft®Visio®"部门,这里有三个技巧 ...

  6. elf文件中代码段有绝对地址但重定位表中无.text.rel

    阅读<程序员的自我修改>第三章 中关于ELF 文件结构描述 关于重定位表 P79时候产生的问题. 文章中说只要有绝对地址的段,就会有重定位.但是readelf -S helloWorld. ...

  7. 如何安装新linux内核,详解Debian系统中安装Linux新内核的流程

    一直对Linux内核很有兴趣,但苦于入门不易,认真看了ldd前5章突然就来感觉了,光看不练不顶用,首先就需要环境搭建. 使用的是Debian 5.0,内核2.6.26,欲安装的新内核为2.6.28,这 ...

  8. Windows PE 重定位表编程(枚举重定位地址)

    原理之前单独总结过,在这里: http://blog.csdn.net/u013761036/article/details/54051347 下面是枚举重定位信息的代码: // ReLocation ...

  9. linux do_irq 报错 代码,linux - 内核函数asm_do_IRQ()中的irq与我在模块中请求的不同 - 堆栈内存溢出...

    我做了一些皮质-A9开发板的实验. 我使用gpio_to_irq()获取irq num并且我请求了irq并用它写了一个小驱动程序,它在syslog中是196. 我在asm_do_IRQ中添加了一些pr ...

最新文章

  1. debian 9/ ubuntu 添加swap分区
  2. jvm--动态对象年龄判定
  3. CF1037H. Security
  4. hive转16进制unhex_Java 进制的转换
  5. 关于解决Permission is only granted to system apps
  6. AIR中文帮助 第十章. 窗体(Windows)和菜单
  7. 前端数据库——WebSQL和IndexedDB
  8. 操作系统时间片轮换_操作系统   时间片轮转法
  9. oracle狎鸥亭_卢永佑 个人主页 - 韩国奥拉克皮肤科整外科 - 美佳网
  10. VScode编辑同步Markdown文档到印象笔记
  11. jdk中ArrayList的实现
  12. Android应用开发进阶
  13. 驱动精灵恶意投放后门程序 云控劫持流量、诱导推广
  14. 直播答题哪家强:风口之下的产品运营体验
  15. pandas_计算年化收益率
  16. 一,FPGA配置及文件生成烧写
  17. 小学生计算机房的简笔画,小学生校园风景简笔画图片
  18. IDE工具、文本编辑器的列块编辑模式
  19. 在SVN服务器彻底删除文件
  20. 浙大版《Python 程序设计》题目集

热门文章

  1. 2019.6.7 一场搜索专题的考试【including 洛谷·血色先锋队,入门OJ·兴建高铁,珠光宝气阁
  2. Mac版word空格变成小点,多了很多“分节符(下一页)”和“窗体顶端”和“窗体底端”等字样,怎么解决?
  3. Linux Bridge的IP NAT细节探析-填补又一坑的过程
  4. taro开发微信小程序-播放轨迹(十一)
  5. 小程序助力智能家居生态平台
  6. 中学生应该养成的良好习惯
  7. 程序员,我要为了这个名号而疯狂
  8. php m403n安装错误,HP LaserJet M403n驱动
  9. Larval安装使用Excel步骤
  10. tf1.x error:Variable generator/encoder_image/conv2d/kernel already exists, disallowed