Segmentação (memória)

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.[1]

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.[2]

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.

Seu uso não deve ser confundido com a segmentação de memória utilizada pelas antigas arquiteturas de computador x86, como o Intel 8086 e o Intel 8088, que não forneciam proteção; a segmentação a partir do Intel 80286 passou a fornecer proteção.

Ver também


Referências

  1. Operating Systems Concepts Essentials; Abraham Silberschatz, Peter Baen Galvin, Greg Gagne; John Wiley & Sons, 2011
  2. An Operating Systems Vade Mecum, Raphael Finkel, University of Kentucky, 1988
Ícone de esboço Este artigo sobre informática é um esboço. Você pode ajudar a Wikipédia expandindo-o.