Ambas as fragmentações ocorrem na memória principal, exclusivamente quando o método de alocação é contíguo.
Fragmentação externa: "Conforme processos são carregados na memória e dela removidos, o espaço de memória livre fica dividido em pequenos pedações. A fragmentação externa ocorre quando existe espaço total de memória suficiente para atender uma solicitação, mas os espaços disponíveis não são contíguos".
Fragmentação interna: "Considere um esquema de alocaçao de partições múltiplas com um intervalo de 18.464 bytes. Suponha que o próximo processo solicite 18.462 bytes. Se alocarmos exatamente o bloco solicitado, ficaremos com um intervalo de 2 bytes. O overhead para administrar o uso desse intervalo será substancialmente maior do que o intervalo em si. A abordagem geral para evitar esse problema é dividir a memória física em blocos de tamanho fixo e alocar a memória em unidades com base no tamanho do bloco. Com tal abordagem, a memória alocada a um processo pode ser ligeiramente maior do que a solicitada. A diferença entre esses dois números é a fragmentação interna - memória interna a uma partição que não está sendo utilizada".
Destaques de Silberschatz. Fundamentos de SO. 8º edição, página 171.
Ambas ocorrerem na Memória principal
-> fixa - Programas são alocados na inicialização do S.O
-> dinâmica - Fragmentação Externa - Programas que vão deixando a memória, deixando espaços cada vez maiores de fragmentos.
Fragmentos - São restos de espaços não utilizado, desperdiçados e espalhados por toda a memória.