Không gian địa chỉ 32 bit có nghĩa là bạn có không gian cho 4GB địa chỉ. Lý tưởng nhất là hạt nhân thích có thể ánh xạ tất cả bộ nhớ vật lý, tất cả bộ nhớ của tác vụ hiện tại và tất cả bộ nhớ của chính nó. Nếu chỉ bộ nhớ vật lý chiếm hết 4GB có sẵn, điều đó sẽ không hoạt động. Vì vậy, bộ nhớ vật lý được chia thành bộ nhớ thấp, được ánh xạ mọi lúc và bộ nhớ cao, phải được ánh xạ khi sử dụng. Trừ khi bạn đang chạy kernel đã vá, trên kiến trúc ix86, 128 MB không gian địa chỉ được dành cho mã kernel và cấu trúc dữ liệu và 896 MB được dành cho ánh xạ bộ nhớ vật lý (tổng cộng là 1GB).
Đọc nền về sự phức tạp của quản lý bộ nhớ khi không gian địa chỉ của bạn không lớn hơn tổng bộ nhớ của bạn:
Đoạn trích từ nhật ký kernel của bạn:
BIOS-provided physical RAM map:
BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
BIOS-e820: 0000000000100000 - 00000000cdce0000 (usable)
BIOS-e820: 00000000cdce0000 - 00000000cdce3000 (ACPI NVS)
BIOS-e820: 00000000cdce3000 - 00000000cdcf0000 (ACPI data)
BIOS-e820: 00000000cdcf0000 - 00000000cdd00000 (reserved)
BIOS-e820: 00000000d0000000 - 00000000e0000000 (reserved)
BIOS-e820: 00000000fec00000 - 0000000100000000 (reserved)
BIOS-e820: 0000000100000000 - 0000000130000000 (usable)
2404MB HIGHMEM available.
887MB LOWMEM available.
Zone PFN ranges:
DMA 0x00000000 -> 0x00001000
Normal 0x00001000 -> 0x000377fe
HighMem 0x000377fe -> 0x000cdce0
Ở đây bạn có 887 MB bộ nhớ thấp: tối đa theo lý thuyết là 896 MB trừ đi một vài MB bộ đệm DMA (vùng bộ nhớ được sử dụng để giao tiếp với các thiết bị phần cứng).
Trong bộ nhớ vật lý của bạn, 3328MB được ánh xạ tại các địa chỉ dưới 4GB và 768MB được ánh xạ tại các địa chỉ trên 4GB (phạm vi 0x100000000 Nott0x130000000). Bạn không nhận được quyền truy cập vào 768MB này, điều này giải thích tại sao bạn chỉ có sẵn 3242 MB (4096 MB RAM trừ 768 MB không thể truy cập trừ đi 9 MB bộ đệm DMA trừ 75 MB được sử dụng bởi chính kernel và mã). Tôi không biết tại sao BIOS ánh xạ một số RAM lên trên 4GB, nhưng như một điểm dữ liệu, tôi đang đăng bài này từ một PC có 4GB RAM tương tự có RAM được ánh xạ ở 0x100000000 Chuyện0x130000000.
Ánh xạ bộ nhớ vật lý trên 4GB yêu cầu sử dụng PAE . PAE phải chịu một chi phí hiệu năng nhỏ (đặc biệt, nó yêu cầu cấu trúc dữ liệu lớn hơn trong trình quản lý bộ nhớ), do đó, nó không được kích hoạt một cách có hệ thống. Hạt nhân Ubuntu mặc định được biên dịch mà không cần hỗ trợ PAE. Lấy -generic-pae
kernel để có thể truy cập tới 64GB RAM.
TL, DR: Linux đang hoạt động như mong đợi. Phần sụn không hữu ích lắm. Nhận kernel kích hoạt PAE.