1. 思考

多个进程可以加载相同的共享链接库,比如C语言的运行库,加载运行库采用内存映射文件的方式,可以延迟对于文件内容的读入操作。

共享链接库文件,是一个elf格式的库文件,里面会包含多个不同的section,比如text/data/bss section。

不同的section的访问方式和权限都有差别,比如text section可能一般要求“只读、可以执行”的权限,而data/bss section最起码要在“可读、可写”的权限。

那么,这种不同权限的section在内存映射时,是怎样区分对待,映射到不同的内存区域中的呢?

Linux下的共享链接库可以通过dlopen函数来加载,该函数会负责将一个共享链接库的不同的section以不同的方式映射到进程的地址空间中,

   1: daniel@ubuntu:/proc$ cat /proc/self/maps
   2: 00262000-00280000 r-xp 00000000 08:01 525208     /lib/i386-linux-gnu/ld-2.13.so
   3: 00280000-00281000 r--p 0001d000 08:01 525208     /lib/i386-linux-gnu/ld-2.13.so
   4: 00281000-00282000 rw-p 0001e000 08:01 525208     /lib/i386-linux-gnu/ld-2.13.so
   5: 002df000-00455000 r-xp 00000000 08:01 525221     /lib/i386-linux-gnu/libc-2.13.so
   6: 00455000-00457000 r--p 00176000 08:01 525221     /lib/i386-linux-gnu/libc-2.13.so
   7: 00457000-00458000 rw-p 00178000 08:01 525221     /lib/i386-linux-gnu/libc-2.13.so
   8: 00458000-0045b000 rw-p 00000000 00:00 0 
   9: 009b8000-009b9000 r-xp 00000000 00:00 0          [vdso]
  10: 08048000-08051000 r-xp 00000000 08:01 1310739    /bin/cat
  11: 08051000-08052000 r--p 00008000 08:01 1310739    /bin/cat
  12: 08052000-08053000 rw-p 00009000 08:01 1310739    /bin/cat
  13: 08fad000-08fce000 rw-p 00000000 00:00 0          [heap]
  14: b7516000-b7517000 r--p 0043a000 08:01 3021821    /usr/lib/locale/locale-archive
  15: b7517000-b7557000 r--p 002bd000 08:01 3021821    /usr/lib/locale/locale-archive
  16: b7557000-b7757000 r--p 00000000 08:01 3021821    /usr/lib/locale/locale-archive
  17: b7757000-b7758000 rw-p 00000000 00:00 0 
  18: b7768000-b776a000 rw-p 00000000 00:00 0 
  19: bf9e6000-bfa07000 rw-p 00000000 00:00 0          [stack]

更多相关文章

  1. Linux下非root用户能创建新文件,却不能拷贝文件的问题
  2. Linux用户和组的操作(一) 用户文件/etc/passwd
  3. REDIS从LINUX文件写入批量数据
  4. Linux编程(8)_文件IO
  5. Linux学习第二天-文件系统和简单文件操作命令
  6. 【Azure】两台Linux虚拟机挂载共享文件
  7. Linux命令-权限管理命令:chmod
  8. TQ210 —— 嵌入式Linux根文件系统的设计与实现
  9. Linux locate(文件搜索) 命令

随机推荐

  1. Android(安卓)Hook神器:XPosed入门与登陆
  2. android 学习笔记(五)
  3. android小技巧
  4. android资源文件详解
  5. 系统签名apk--转
  6. Android Build System
  7. Android中获取颜色的几种方法
  8. android简单Logo
  9. android 动画
  10. android studio生成apk直接改名字