Por que o comando "free" e o "dmidecode" mostram valores diferentes para a RAM?

Eu tenho um servidor CentOS 5.10 ( 32 bits ) em execução no VMWare. Está alocado 4 GB de RAM. Se eu correr dmidecode -t 17 | grep Size | grep MB, vejo: Size: 4096 MB No entanto, quando corro free, vejo: total used free shared buffers cached Mem: 3107140 1239244 1867896 0 332 400464 -/+...