In the BIOS it says 4096 MB, so the BIOS detects it. However, Windows 7 only lets me use 2048 MB. What's the problem?
Use MSConfig → Boot → Advanced.
Is the box 'Maximum Memory' checked?
It's because Microsoft intentionally made this software limitation - 4GB memory - under 32-bit Windows Vista/7. This is a way to upsell the more expensive 64-bit OS.
This post has all the details. Licensed Memory in Windows Vista:
I say the restriction to 4GB is a licensing issue because that’s how Microsoft’s programmers evidently have thought of it. The 4GB limit is retrieved from the registry by calling a function named ZwQueryLicenseValue, which is itself called from an internal procedure which Microsoft’s published symbol files name as MxMemoryLicense. If you remove this check for the licensed memory limit then a restriction to 4GB is demonstrably not enforced by other means. Yet I must admit that I have not found where Microsoft says directly that 32-bit Windows Vista is limited to 4GB only by licensing. The supposed License Agreement doesn’t even mention the word memory. What, really, is going on?
Ah, I see you have a Dell. Mine is similar -- a 4GB Dimension 5150 system that only reports 3.3GB as installed, all of it usable. This was the case under Vista-32, Windows7-64, and assorted Linux distributions of both bitness-es.
In my case, this is a limit of the chipset -- the onboard video appears to sit on a large part of mappable memory, making it unusable to the OS.
My guess is that it is a mixture of 32 bit which takes you down to ~3.5 GB, and then the rest is being taken up by on board graphics, but to be honest, 1 GB+ of video RAM does seem like a lot.
Do you have a load of PCI / add ons to your pc? These may be eating up the addressable resources.
That is caused by a few things. x86 can only detect a TOTAL of 4 GB, and that includes your graphics card and other stuff too. Just go to 64 bit.