Acesso do Hardware à Memória Física: Barramentos, pinos de endereço, pinos de dados. Arquitetura da máquina: orientada a bytes ou palavras. Exemplo de máquina com acesso a palavra: Alpha. TODO: verificar. Memória Virtual. Um pouco de história sobre segmentação (mencionar MULTICS?). Paginação e proteção de memória. Diferenças entre MPU e MMU. uClinux e os ports do Linux para arquiteturas sem MMU. TODO: estudar diferenças, como a exigências de não utilizar vfork, porque glibc não funciona (além do fato de m68k não ter bom suporte a TLS). Acesso à memória por dispositivos. Endereço no barramento. DMA. IO-MMU. Diferenças entre IO mapeado em memória (registros), memória de dispositivo e memória compartilhada. Zonas de Memória: conceitos do Linux, de acordo com algumas características descritas acima e segundo a sua arquitetura: * Zona de DMA, já que alguns dispositivos só são capazes de utilizar essa zona. No PC, por exemplo, alguns dispositivos só são capazes de usar memória abaixo de 1MiB (20 bits) ou 16MiB (24 bits). TODO: ISA!?! * Memória Alta. Intel PAE. Associação linear que o Linux faz de endereço virtual com endereço físico. * Memória Baixa. Layout de memória no Linux. vmalloc e outros (TODO: o que é cada um desses outros?) ocupam parte do 1GiB (dependendo de configuração) que serve à memória baixa. Portanto, mesmo uma máquina com 1GiB de memória, pode ter um limite inferior para memória baixa. /proc/meminfo