メモリマッピングLinux 3+カーネル

メモリマッピングLinux 3+カーネル

誰かがメモリマッピングがどのように実行されるかを理解するのに役立ちますか?

これを経験した

Linuxに実際にインストールされているよりも多いか少ないメモリが表示されるのはなぜですか?

しかし、私はまだそれをよく理解していません。

2Gb DDR3 RAMと3.2.0-39-genericでUbuntu 12.04を使用する

free -k
         total       used       free     shared    buffers     cached
Mem:       2012040    1726616     285424          0       2612     245560
-/+ buffers/cache:    1478444     533596
Swap:      2057212     745152    1312060

2GB(KB):

2097152

2097152-2012040=85112

Memory used by kernel

dmesg|grep Memory

(6571k kernel code, 452k absent, 63360k reserved, 6632k data, 920k init)

6571+452+63360+6632=77015k

85112-77015=8097k

この8Mbの中古RAMはどこで見ることができますか?デバイスがDMA経由で使用されている場合は表示されますか?

また、予約とは、BIOS用に予約されたメモリを意味しますか?

http://pastebin.com/GrvrfzUu

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
[    0.000000]  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
[    0.000000]  BIOS-e820: 0000000000100000 - 000000007da08c00 (usable)
[    0.000000]  BIOS-e820: 000000007da08c00 - 000000007da5cc00 (ACPI NVS)
[    0.000000]  BIOS-e820: 000000007da5cc00 - 000000007da5ec00 (ACPI data)
[    0.000000]  BIOS-e820: 000000007da5ec00 - 0000000080000000 (reserved)
[    0.000000]  BIOS-e820: 00000000e0000000 - 00000000f0000000 (reserved)
[    0.000000]  BIOS-e820: 00000000fec00000 - 00000000fed00400 (reserved)
[    0.000000]  BIOS-e820: 00000000fed20000 - 00000000feda0000 (reserved)
[    0.000000]  BIOS-e820: 00000000fee00000 - 00000000fef00000 (reserved)
[    0.000000]  BIOS-e820: 00000000ffb00000 - 0000000100000000 (reserved)
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.5 present.
[    0.000000] DMI: Dell Inc. OptiPlex 380                 /0F0TGN, BIOS A05 02/24/2011
[    0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved)
[    0.000000] e820 remove range: 00000000000a0000 - 0000000000100000 (usable)

dmesg|グレブメモリ

Memory: 1994460k/2058272k available (6571k kernel code, 452k absent, 63360k reserved, 6632k data, 920k init)

ベストアンサー1

一度見て、カーネルの仮想メモリシステムが初期化される前に、元のブートメモリアロケータを使用して仮想メモリを管理するために必要な構造のようなものを割り当て、ブートアロケータが消費するページはそうではないと結論付けたようです。正しく。

おすすめ記事