Os benefícios são:
- Ao compilar o código / tarefa, o compilador / vinculador precisa decidir / atribuir o endereço de código / texto (instruções), dados (variáveis globais), pilha.
O sistema com MMU (Unidade de Gerenciamento de Memória) (isto é, suporta a memória virtual),
O compilador / vinculador está livre para aceitar qualquer endereço conforme necessário.
Enquanto o código estiver executando, a MMU converterá o endereço virtual em endereço físico.
O sistema sem MMU: o compilador e o linker têm que atribuir endereço dependendo da memória do sistema. Porque não deve usar a região de memória de outra tarefa.
Vantagem: o compilador / linker não precisa se preocupar com o mapa de memória do sistema.
- A programação de tarefas será mais fácil, porque o espaço de memória realmente alocado para a tarefa é muito alto quando comparado à disponibilidade de memória do sistema, (Isto é conseguido mantendo os dados / códigos necessários na memória principal e mantendo o resto em secundário armazenamento).
- A função de serviço do sistema não precisa ser duplicada. Todos os endereços virtuais de todas as tarefas do serviço do sistema podem ser mapeados para o mesmo endereço físico que contém o serviço do sistema.
- Em termos simples, a alocação de memória não precisa ser considerada durante a codificação de uma tarefa que seria tratada durante a execução da tarefa pela MMU.
Coming to your Question:
If virtual memory is stored in main memory, then why even use it in the first place?Why not just use main memory?
memeory / endereço da Vitural é a representação do endereço físico / memória.
Esta representação ajuda na obtenção de uma implementação multitarefa mais fácil, gerenciamento de memória, desenvolvimento de tarefas sem detalhes da memória do sistema.