Segmentação
Em sistemas operacionais, segmentação é uma das maneiras mais comuns para a proteção de memória, sendo a memória paginada outro método bastante utilizado. Significa que parte da memória é removida do processo sendo executado atualmente, através do uso de registradores. Se o dado prestes a ser lido ou escrito está fora do espaço de endereços do processo, uma falha de segmentação é lançada.
Qualquer programa de computador está dividido em secções, como as declarações de variáveis e declarações de subrotinas, sobretudo se ele foi escrito numa linguagem de alto nível. Em termos de execução, cada uma dessas secções vai ocupar um segmento da memória.
O sistema operativo que suporta este sistema possuirá uma tabela com os tamanhos e endereços de memória dos vários segmentos de um programa para saber onde estão. Cada segmento possui um conjunto de permissões (leitura, escrita ou execução) e um tamanho associado. Se o processo é autorizado pelas permissões a referenciar a memória da maneira como deseja e se o endereço está no trecho do segmento, a referência do endereço da memória é permitida. Senão, a falha de segmentação é lançada. Outra associação além de permissão e tamanho é a informação de onde o segmento está localizado na memória.
Uma MMU é responsável pela tradução de um segmento e um endereço relativo no segmento em um endereço de memória, e também pela verificação da permissão da referência e valor do endereço relativo.
FUNCIONAMENTO
A memória virtual apresentada anteriormente é unidimensional, ou seja, os endereços virtuais vão de 0 até algum valor máximo. No entanto, em alguns casos, ter dois ou mais espaços de endereços virtuais separados é uma estratégia interessante. A segmentação prove à máquina vários espaços de endereço completamente independentes, chamados segmentos, liberando o programador da tarefa de gerenciar a expansão e a contração de tabelas, da mesma forma que a memória virtual elimina a preocupação de organizar o