Почему размер / proc / kcore меньше, чем RAM? [закрыто]

Мне было интересно, почему это так. Все ссылки (я нашел), касающиеся размера файла, указывают, что размер примерно такой же, как размер физической RAM, или размер, который процессор может адресовать. Я на 32-битной.

Я иногда использую kcore , когда мне нужно строка ОЗУ для поиска удаленного текста.

/ proc / kcore: 1,1 ГБ

ОЗУ: 2,6 ГБ

~ $ ll /proc/kcore
-r-------- 1 root root 1065349120 2011-12-05 09:42 /proc/kcore
~ $ sudo dd if=/proc/kcore of=/dev/null bs=1024
1040380+0 records in
1040380+0 records out
1065349120 bytes (1.1 GB) copied, 2.26191 s, 471 MB/s

~ $ free -m
             total       used       free     shared    buffers     cached
Mem:          2509       1742        766          0        132       1118
-/+ buffers/cache:        492       2016
Swap:         1051          0       1051

~ $ grep ^Mem /proc/meminfo
MemTotal:        2569640 kB
MemFree:          791548 kB

~ $ dmesg | grep Memory
[    0.000000] Memory: 2554056k/2612412k available (4940k kernel code, 57908k reserved, 2333k data, 688k init, 1703108k highmem)

~ $ sudo lspci -v -s 00:02.0
00:02.0 VGA compatible controller: Intel Corporation 82915G/GV/910GL Integrated Graphics Controller (rev 04) (prog-if 00 [VGA controller])
    Subsystem: Intel Corporation Device 4556
    Flags: bus master, fast devsel, latency 0, IRQ 16
    Memory at ffa00000 (32-bit, non-prefetchable) [size=512K]
    I/O ports at ec00 [size=8]
    Memory at c0000000 (32-bit, prefetchable) [size=256M]
    Memory at ffa80000 (32-bit, non-prefetchable) [size=256K]
    Expansion ROM at <unassigned> [disabled]
    Capabilities: [d0] Power Management version 2
    Kernel driver in use: i915
    Kernel modules: i915

Полный вывод dmesg и lspci на Ubuntu pastebin .


Кто-нибудь знает, почему это так

или - наблюдается ли у кого-нибудь такое же поведение (размер (kcore) <размер (RAM))?

0
задан 6 December 2011 в 01:12

1 ответ

Я наблюдаю такое же поведение в моей системе:

free -m
             total       used       free     shared    buffers     cached
Mem:          2011       1877        133          0        128        685
-/+ buffers/cache:       1063        947
Swap:         2099          1       2098

ll /proc/kcore 
-r-------- 1 root root 1016M 2011-12-06 01:09 /proc/kcore

Хорошо, я не уверен в этом, но это может быть связано с проблемой HIGHMEM / LOWMEM в 32-битных системах.

Посмотрите на это:

dmesg | grep MEM
[    0.000000] 1158MB HIGHMEM available.
[    0.000000] 887MB LOWMEM available.

через linux-mm

Почему highmem

[ 118] В настоящее время 32-битная архитектура x86 является наиболее популярным типом компьютеров. В этой архитектуре ядро ​​Linux традиционно делит 4 ГБ адресного пространства виртуальной памяти на 3 ГБ для пользовательских программ и 1 ГБ для ядра.

....

Как справиться с highmem

Однако многие люди настаивают на использовании более 1 ГБ физической памяти в такой 32-битной системе. Это заставляет ядро ​​Linux перепрыгивать через некоторые интересные скачки ...

В основном система использует следующую тактику:

Память сверх физического адреса 896 МБ временно отображается в виртуальную память ядра всякий раз, когда ядру требуется доступ к этой памяти.

Данные, к которым ядру часто требуется доступ, размещаются в нижних 896 МБ памяти (ZONE_NORMAL) и могут быть немедленно доступны ядру (см. Временное отображение).

...

Итак, я думаю, что мы видим только зарезервированное для ядра пространство памяти с / proc / kcore. Кстати, я тоже использую 32-битную версию Ubuntu.

0
ответ дан 6 December 2011 в 01:12

Другие вопросы по тегам:

Похожие вопросы: