Linux文件映射的查看方法有哪些

对于许多网友来说Linux文件映射的查看方法有哪些的教程内容,接下来网带大家一起了解。

一.文件映射的定义

文件映射是一种将磁盘上的文件映射到进程的虚拟内存空间的机制。

Linux文件映射的查看方法有哪些 第1张

通过这种方式,进程可以直接通过内存地址来读写文件,而不必通过常规的 read 和 write 等系统调用

我的理解:所谓的文件映射就是,创建一个文件,然后通过Linux提供的文件映射机制,将这个文件和进程的虚拟内存空间的一块内存绑定起来,然后对这个内存进行读写操作,就是对实际磁盘上文件的读写操作。

文件映射也可称内存映射,通常情况下这是一回事,内存映射包括将文件映射到内存的操作,也包括将匿名内存(不与文件关联的内存)映射到进程的地址空间的操作。

文件映射是内存映射的一种特例。

二.文件映射的查看方法【两种方法】

方法一:使用pmap工具

查看对应进程的文件映射信息

$ pmap -X 12345  #查看指定PID的文件映射信息
12345:   ./example
0000555555554000    100K r-x-- example
0000555555673000      4K r---- example
0000555555674000      4K rw--- example
00007ffff7de0000   1360K r-x-- libc-2.31.so
...
mapped: 1448K    writeable/private: 8K    shared: 0K
  • 每行代表一个内存映射区域。
  • 地址范围、权限、映射类型、文件路径等信息。
  • “mapped” 表示映射的总大小,”writeable/private” 表示可写和私有的大小,”shared” 表示共享的大小。

方法二:cat查看文件映射文件

使用 cat /proc/PID/maps 命令可以查看进程的内存映射情况。

每一行都表示一个内存映射区域,格式如下:

address           perms offset  dev   inode      pathname
00400000-0040b000 r-xp 00000000 08:01 1167685    /usr/bin/cat
0060a000-0060b000 r--p 0000a000 08:01 1167685    /usr/bin/cat
0060b000-0060c000 rw-p 0000b000 08:01 1167685    /usr/bin/cat
  • address:映射的虚拟内存地址范围。
  • perms:权限,包括读(r)、写(w)、执行(x)等。
  • offset:文件中映射区域的偏移量。
  • dev:设备号。
  • inode:文件在文件系统中的节点号。
  • pathname:映射的文件路径或匿名映射。

三. 如何在Linux下使用文件映射

现在我们通过一个例子演示了如何使用文件映射将文件映射到内存中,然后通过修改内存中的内容,最后通过解除内存映射来进行演示。

收藏(0)