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