quarta-feira, 2 de abril de 2014

Memória Segmentada

RICARDO DE MAGALHÃES SIMÕES - Sobre o Autor
Doutorando em Engenharia Elétrica, Mestre em Informática (2006) e Bacharel em Ciência da Computação (2003), todos pela Universidade Federal do Espírito Santo. Atualmente, Professor Substituto de Informática no CEFET-ES, Professor de Programação I no Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas à Distância no CEFET- ES, professor de Sistemas Operacionais pela ESAB. Tem experiência na área de Ciência da Computação, com ênfase em Desenvolvimento de Algorítmos, Educação de Informática para estudantes do Ensino Médio, atuando principalmente nos seguintes temas: Informática Básica, Programação nas linguagem C/C++/C#, Java, Pascal.
Página pessoal:
Curriculo Lattes::

UNIDADE 14

Objetivo: Entender como é feita a segmentação da memória, e os resultados obtidos com a utilização de segmentos de memória.

1. Introdução

A Segmentação da Memória consiste na divisão da memória em segmentos de dados. Cada segmento possuirá as seguintes propriedades: a sua localização física na memória, permissão de acesso, tamanho e um identificador. Se um processo possuir permissão para utilizar um segmento, e se o processo solicitar acesso a uma informação dentro do segmento, poderá fazer isso, caso contrário um aviso de erro será passado ao processo (e consequentemente ao usuário).

Além das propriedades citadas, dependendo do sistema operacional, o segmento pode possuir um indicador informando se sua localização está na memória principal ou na memória secundária. Caso esteja na memória secundária, e seja acessado por algum processo, o sistema operacional irá realizar o carregamento do segmento na memória principal para poder acessar as informações contidas nele.

2. Unidade de Gerenciamento da Memória

A segmentação da memória só será possível se houver no computador, dentro do próprio processador ou como um circuito eletrônico independente, uma Unidade de Gerenciamento da Memória (Memory Management Unit, MMU). Esta unidade será responsável por fazer o mapeamento entre os endereços físicos e os endereços dos segmentos de memória. Os processos não acessam diretamente as áreas de memória do computador, em vez disso, cada processo ao ser iniciado será associado a um segmento de memória específico. Quando um processo realiza o acesso a uma determinada área de memória, dentro do seu segmento, a Unidade de Gerenciamento da Memória irá acessar a área física correspondente ao segmento designado ao processo. Para fazer isso, a Unidade deGerenciamento irá executar as seguintes verificações:

O identificador do segmento do processo;
A localização na memória física do segmento, isto é, qual o endereço inicial do segmento na memória;
A localização área de memória acessada pelo processo;
A quantidade de informação solicitada pelo processo.

Se o processo em questão fizer a solicitação corretamente, isto é, solicitar acesso a uma área de memória dentro do seu segmento, a Unidade de Gerenciamento da Memória irá completar essa operação e passar ao processo os dados contidos na área de memória que foi solicitada. Se por acaso o processo fizer uma solicitação que não seja permitida, por exemplo, o processo solicita acesso a uma área de memória dentro do segmento a que pertence, mas que ultrapasse o tamanho do segmento, essa solicitação não será atendida, e um aviso de erro será passado ao processo.

Se na realização do acesso ao segmento, este não se encontrar na memória principal, o sistema operacional irá verificar se o segmento encontra-se armazenado na memória secundária. Encontrando o segmento, o mesmo será carregado na memória principal para que as informações contidas nele possam ser acessadas.

Se um processo tentar acessar uma área de um segmento de memória que oferece permissão para o processo em questão ou se o processo tentar acessar uma área de memória fora do seu segmento, o sistema operacional facilmente conseguirá identificar esse fato, pois cada segmento possui um identificador e a definição da permissão de acesso. Se o segmento permitir o acesso de vários processos diferentes, as informações contidas nele poderão ser acessadas por qualquer processo. Se o segmento permitir o acesso apenas a um processo (quem define o tipo de permissão é o primeiro processo criado associado ao segmento) a informação só poderá ser lida pelo processo que foi inicialmente associado ao segmento. Quando o processo finaliza a sua execução, o segmento de memória é liberado (ou pelo próprio programa ou pelo coletor de lixo do sistema operacional) e assim o segmento fica disponível para ser utilizado por outro processo.

3. Memória Virtual Segmentada

Em alguns sistemas, a memória virtual não utiliza páginas de memória, e sim segmentos de memória. Nesse caso, serão criados com a possibilidade de terem o seu tamanho alterado durante a utilização do computador.

A Unidade de Gerenciamento da Memória deve estar preparada para lidar com essa situação, pois em um determinado momento um processo pode solicitar acesso a uma área inicialmente indevida, mas esta mesma área pode ser adicionada ao segmento posteriormente, permitindo sua utilização.

4. Combinação da Segmentação e Paginação

Nos sistemas IBM System/38 (Mainframes) o gerenciamento da memória é feito utilizando-se a paginação e a segmentação. Cada segmento de memória é dividido em páginas de memória. Nos processadores Intel x86, os segmentos de memória também são divididos em páginas de memória e cada segmento é tratado como sendo uma memória virtual independente. Mas esse recurso só poderá ser utilizado se o sistema operacional em execução no computador permitir que se realize essa distinção, o que não acontece nos dias de hoje.

Nenhum comentário:

Postar um comentário