。核心。我的公羊去哪儿了?

gam*_*mut 4 linux-kernel arch-arm

[    0.000000] Memory: 256MB = 256MB total
[    0.000000] Memory: 171736k/171736k available, 90408k reserved, 0K highmem
[    0.000000] Virtual kernel memory layout:
[    0.000000]     vector  : 0xffff0000 - 0xffff1000   (   4 kB)
[    0.000000]     fixmap  : 0xfff00000 - 0xfffe0000   ( 896 kB)
[    0.000000]     vmalloc : 0xd0800000 - 0xff000000   ( 744 MB)
[    0.000000]     lowmem  : 0xc0000000 - 0xd0000000   ( 256 MB)
[    0.000000]     pkmap   : 0xbfe00000 - 0xc0000000   (   2 MB)
[    0.000000]     modules : 0xbf000000 - 0xbfe00000   (  14 MB)
[    0.000000]       .text : 0xc0008000 - 0xc048d000   (4628 kB)
[    0.000000]       .init : 0xc048d000 - 0xc04b2000   ( 148 kB)
[    0.000000]       .data : 0xc04b2000 - 0xc04f7400   ( 277 kB)
[    0.000000]        .bss : 0xc04f7424 - 0xc0593f68   ( 627 kB)
Run Code Online (Sandbox Code Playgroud)

我有一个带有 3.4.39 内核的 arm sun8i 设备。可用内存只有 256MB,但板上的芯片大小为 2GB。启动了启用 highmem=y 的内核,但问题仍然存在。这里发生了什么?Lomem 的上限为 256MB,我什至可以分配 700MB 的块吗?我认为 lomem 应该包含 vmalloc 块。

ilk*_*chu 5

搜索您在评论中提到的芯片,H5TQ2G63FFR 是 2 Gb(千兆位)芯片,因此它只有 256 MB(兆字节)内存。

H5TQ2G83FFR-xxC、H5TQ2G63FFR-xxC、[...] 是 2,147,483,648CMOS 双倍数据速率 III (DDR3) 同步 DRAM,[...]

(引自此PDF。)

以位为单位指定内存芯片的情况并不少见,因为您可以将其中的 8 个组合在一起制成 2 GB 的记忆棒。(更多的芯片可以形成更宽的数据路径,这取决于系统/处理器应该有多宽。)