I've searched serverfault and found this question: Linux x86_64 reports 3.2G of memory instead of 4G
But my problem is slightly different from that one. I've checked my BIOS. I didn't find the Memory Remap Feature or related option. The computer is Samsung DM-v65 (seems only available in South Korea, made in 2008) I've updated BIOS to the latest version produced by Samsung support. Here is the main page of the BIOS:
BIOS -- CFPL.1100.20070825.OJH
CPU -- Inter(R) Core(TM)2 CPU 6320
Installed memory -- 4096MB
Available to OS -- 3317MB
Used by devices -- 779MB
DRAM Frequency -- 667MHz
Memory Operation -- Dual Channel Interleaved
Is there anything I can do to get all 4GB memory to use? Thanks in advance.
EDIT: I got this page. 4gb ram shows as 3.3gb As quoted in the page,
The board utilizes 4 GB of addressable system memory. Typically the address space that is allocated for PCI Conventional bus add-in cards, PCI Express configuration space, BIOS (firmware hub), and chipset overhead resides above the top of DRAM (total system memory). On a system that has 4 GB of system memory installed, it is not possible to use all of the installed memory due to system address space being allocated for other system critical functions. These functions include the following:
- BIOS/firmware hub (2 MB)
- Local APIC (19 MB)
- Digital Media Interface (40 MB)
- Front side bus interrupts (17 MB)
- PCI Express configuration space (256 MB)
- MCH base address registers, internal graphics ranges, PCI Express ports (up to 512 MB)
- Memory-mapped I/O that is dynamically allocated for PCI Conventional and PCI Express add-in cards.
this implies that the 'overlapping' memory is NOT relocated to a higher address. This was a rather low end desktop board from circa 2004, intended strictly to support Win2000/XP in 32bit mode. with the P4 500 and 600 series CPUs and onboard Intel shared memory graphics.
So I guess I have to accept the fact of I can't use all 4GB of the memory installed. This question can be closed. Thanks to all.