2016年4月1日 星期五

Linux Virtual Memory


Virtual Memory Address (VMA)


  • User process 在4GB virtual memory 分配如下:
               (1)  1GB Kernel Space, 3GB User Space
                 或
               (2)  2GB Kernel Space, 2GB User Space


  • System分配給每個user process都是連續的virtual memory space,但是實際上的記憶體使用則是透過MMU來存取physical memory space.

  • 查詢Process對應的VMA

         #cat /proc/<pid>/maps


[root@GM]# cat /proc/360/maps
start    end      perm offset   ma:mi inode      image  
00008000-0000a000 r-xp 00000000 1f:03 32         /mnt/mtd/myapp
00012000-00013000 rwxp 00002000 1f:03 32         /mnt/mtd/myapp
00013000-00018000 rwxp 00000000 00:00 0          [heap]
76e38000-76e44000 rwxs 011b0000 00:0d 625        /dev/log_vg
76e44000-76e47000 r-xp 00000000 1f:02 174        /lib/libdl-0.9.33.2.so
76e47000-76e4e000 ---p 00000000 00:00 0 
76e4e000-76e4f000 r-xp 00002000 1f:02 174        /lib/libdl-0.9.33.2.so
76e4f000-76e50000 rwxp 00003000 1f:02 174        /lib/libdl-0.9.33.2.so
76e50000-76eb5000 r-xp 00000000 1f:02 172        /lib/libuClibc-0.9.33.2.so
76eb5000-76ebc000 ---p 00000000 00:00 0 
76ebc000-76ebd000 r-xp 00064000 1f:02 172        /lib/libuClibc-0.9.33.2.so
76ebd000-76ebe000 rwxp 00065000 1f:02 172        /lib/libuClibc-0.9.33.2.so
76ebe000-76ec3000 rwxp 00000000 00:00 0 
76ec3000-76f14000 r-xp 00000000 1f:02 165        /lib/libgm.so
76f14000-76f1c000 ---p 00000000 00:00 0 
76f1c000-76f1d000 rwxp 00051000 1f:02 165        /lib/libgm.so
76f1d000-76f28000 rwxp 00000000 00:00 0 
76f28000-76f3a000 r-xp 00000000 1f:02 158        /lib/libpthread-0.9.33.2.so
76f3a000-76f41000 ---p 00000000 00:00 0 
76f41000-76f42000 r-xp 00011000 1f:02 158        /lib/libpthread-0.9.33.2.so
76f42000-76f43000 rwxp 00012000 1f:02 158        /lib/libpthread-0.9.33.2.so
76f43000-76f45000 rwxp 00000000 00:00 0 
76f45000-76f4b000 r-xp 00000000 1f:02 156        /lib/ld-uClibc-0.9.33.2.so
76f50000-76f52000 rwxp 00000000 00:00 0 
76f52000-76f53000 r-xp 00005000 1f:02 156        /lib/ld-uClibc-0.9.33.2.so
76f53000-76f54000 rwxp 00006000 1f:02 156        /lib/ld-uClibc-0.9.33.2.so
7e93a000-7e95b000 rw-p 00000000 00:00 0          [stack]
ffff0000-ffff1000 r-xp 00000000 00:00 0          [vectors]


欄位:
          perm: permission 
        ma:mi: major:minor