1. Memória virtual
O sistema garantirá que os processos receberão a quantidade solicitada de memória, apesar de serem maiores que a memória física. Dessa forma, o kernel aloca um espaço de memória virtual do tamanho máximo de memória física que ele pode manipular. Por exemplo. em uma máquina de 32 bits, o kernel alocará um total de 2 ^ 32, ou seja, 4 GB de endereços virtuais para cada processo por padrão.
2. Supercomprometimento
Existe também algo chamado overcommit no Linux, em que o kernel responde a solicitações de alocação de memória muito maiores que a memória física disponível. A supercomprometimento fará com que o kernel aloque memória virtual sem qualquer garantia de alocação de memória física correspondente.
3. Trocar espaço
Como o processo requer que grande parte da memória comece realmente usando essa quantidade de memória, o kernel inicia a varredura de páginas de memória não utilizadas, assim como páginas de memória de processos com menor prioridade ou que não estão atualmente em execução. Ele transfere esses dados para o espaço de troca no dispositivo de armazenamento secundário e libera essas páginas para o processo. Isso é chamado de roubo de páginas.
Repetindo continuamente o passo 3, isto é, trocando páginas para dentro e fora, o kernel consegue mostrar ao processo uma ilusão da memória que ele solicitou, que pode ser maior do que a memória fisicamente disponível. Agora, como você mencionou um sistema embarcado, temos que considerar se o swap está ativado no sistema ou não. Se sim, os 3 pontos acima se aplicam. Se não, os 3 pontos acima ainda se aplicam, mas a única coisa é que seu processo provavelmente falhará ou poderá ser eliminado pelo assassino OOM (Out-of-Memory). Existe também a possibilidade de que o kernel use OOM killer para eliminar outros processos para liberar mais páginas para seus processos, se acharem adequado. No entanto, isso acontecerá somente se não houver espaço de troca.