web-dev-qa-db-ja.com

「/ proc / kcore」ファイルのサイズが物理メモリのサイズよりも大きいのはなぜですか?

procマニュアルから:

/ proc/kcore

このファイルはシステムの物理メモリを表し、ELFコアファイル形式で保存されます。この疑似ファイルとストリップされていないカーネル(/ usr/src/linux/vmlinux)バイナリを使用すると、GDBを使用して、カーネルデータ構造の現在の状態を調べることができます。

ファイルの全長は、物理メモリ(RAM)に4KBを加えたサイズです。

/proc/kcoreのサイズは、物理メモリ(RAM)に4KBを加えたサイズです。

しかし、私のSuSE Linuxでは:

# ls -lt  --block-size=M /proc/kcore
-r-------- 1 root root 134217727M Nov 15 21:09 /proc/kcore

    # cat /proc/meminfo
MemTotal:         792680 kB
MemFree:           79960 kB
MemAvailable:     351664 kB
Buffers:              40 kB
Cached:           246588 kB
SwapCached:          212 kB
Active:           282992 kB
Inactive:         292896 kB
Active(anon):     122652 kB
Inactive(anon):   214164 kB
Active(file):     160340 kB
Inactive(file):    78732 kB
Unevictable:         100 kB
Mlocked:             100 kB
SwapTotal:       1532924 kB
SwapFree:        1531088 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        329148 kB
Mapped:            71888 kB
Shmem:              7556 kB
Slab:              63088 kB
SReclaimable:      46300 kB
SUnreclaim:        16788 kB
KernelStack:        1888 kB
PageTables:            0 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     1929264 kB
Committed_AS:    1451492 kB
VmallocTotal:   34359738367 kB
VmallocUsed:        7580 kB
VmallocChunk:   34359726080 kB
HardwareCorrupted:     0 kB
DirectMap4k:      867568 kB
DirectMap2M:           0 kB

/proc/kcoreファイルのサイズが物理メモリサイズよりも大きいのはなぜですか?

5
Nan Xiao

kcoreは、カーネルのRAMの仮想割り当てです。64ビットシステムでは、システムが割り当てることができる最大量であるため、そのサイズは128Tの絶対制限になります。

3
cesar