TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Gerenciamento de Memória: multiprogramação

Pesquisas Acadêmicas: Gerenciamento de Memória: multiprogramação. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  30/10/2013  •  Pesquisas Acadêmicas  •  9.348 Palavras (38 Páginas)  •  284 Visualizações

Página 1 de 38

Gerência de Memória

A multiprogramação permite que a CPU possa ser compartilhada por um conjunto de processos, em benefício do desempenho global do computador. Entretanto, para obter esse ganho, é necessário compartilhar a memória entre múltiplos processos. Neste capítulo serão discutidas as várias formas de gerenciar a memória.

6.1 Introdução

A memória corresponde a um longo array de palavras ou bytes, cada um com o seu endereço. A CPU e os controladores dos dispositivos periféricos podem ler e escrever em posições da memória:

Mecanismos para gerência de memória:

• Máquina pura

• Monitor residente

• Swapping

• Partições múltiplas

• Paginação

• Segmentação

• Segmentação com paginação

6.2 Máquina pura

Este é o esquema mais simples que se pode imaginar, ou seja, não existe gerência de memória. Neste caso, o usuário lida diretamente com o hardware e possui total controle sobre toda a memória. Este mecanismo é o que fornece maior flexibilidade para o usuário, máxima simplicidade e custo mínimo, uma vez que não exige nenhum software nem hardware especiais.

Por outro lado, o esquema apresenta uma série de problemas, que podem ser resumidos pela ausência de serviços: o sistema operacional não controla interrupções, não há monitor residente para processar chamadas de sistema ou erros, etc.

Considerando que o usuário pode alterar o código do próprio sistema operacional, nos endereços dos tratadores de interrupção, etc., esta opção é viável apenas em sistemas dedicados (por exemplo, sistemas embarcados), onde o computador controla um equipamento específico, como um eletrodoméstico, uma máquina de controle numérico, um míssil, um satélite, uma bomba de gasolina, etc.

6.3 Monitor Residente

Neste esquema a memória é dividida em duas partes: área do usuário e área do sistema operacional. A área do sistema operacional fica geralmente no início da memória porque a tabela de interrupção usualmente ocupa os primeiros endereços da memória.

• Hardware de proteção

Se o sistema operacional está na memória baixa e a área de usuário na memória alta, é necessário proteger o código e os dados do SO contra o acesso acidental ou malicioso por parte de um programa de usuário. Esta proteção deve ser fornecida pelo hardware e pode ser implementada através de um registrador de proteção, denominado limite. O mecanismo de acesso à memória só “aceita” endereços maiores ou iguais ao valor desse registrador. O valor do registrador é zerado quando a execução vai para o SO e somente o SO pode alterar o valor desse registrador.

• Relocação

Um problema a ser considerado é a carga de programas. Embora o espaço de endereçamento do computador inicie em 0, o primeiro endereço do programa usuário (endereço inicial de carga) é aquele contido no registrador limite. É preciso de alguma forma acertar os endereços referidos no programa do usuário (isto é, no código de máquina correspondente ao programa de usuário).

Se o endereço inicial de carga é conhecido previamente, os endereços absolutos (endereços físicos) podem ser gerados na compilação (mais exatamente, na ligação), durante a geração do código de máquina. Neste caso, uma alteração no endereço de carga implica em recompilar o programa.

Quando o endereço inicial de carga não é conhecido previamente, o código de máquina (arquivo executável) é gerado supondo que o programa vai ser carregado e executado a partir do endereço zero. Neste caso, se um programa tem tamanho K, os seus endereços (isto é, os endereços referidos nas instruções de máquina desse programa) certamente são valores entre zero e K-1. Estes endereços entre 0 e K-1 constituem o que se denomina espaço de endereçamento lógico do programa. Quando o programa é carregado na memória é necessário acertar os seus endereços lógicos para que eles passem a indicar os endereços físicos corretos. O acerto é muito simples, basta somar o endereço inicial de carga à cada endereço lógico referido no programa.

Os endereços lógicos são também referidos como endereços relativos e o processo de acerto dos mesmos é conhecido como relocação. A relocação pode ser feita de forma estática ou de forma dinâmica. Na relocação estática, os endereços relativos são transformados em absolutos no momento da carga do programa. Para isso, o arquivo executável deve conter também a indicação dos locais do código que referem endereços. Essa indicação é conhecida como informação de relocação. É tarefa do carregador (loader) fazer o acerto dos endereços e isso é feito durante a carga do programa.

No caso da relocação dinâmica, os endereços do programa permanecem lógicos o tempo inteiro (isto é, as instruções de máquina não são alteradas para referir endereços físicos). É o mecanismo de acesso à memória que vai fazer a correção (relocação) durante a execução do programa, conforme é explicado a seguir. Para fazer a relocação, é necessário que o endereço inicial de carga fique armazenado em um registrador da UCP. No esquema de proteção descrito anteriormente, esse endereço ficava no registrador limite. Agora, em um computador que faça relocação dinâmica, esse valor fica em um registrador referido normalmente como registrador base ou registrador de relocação. Quando a UCP requer um acesso ao endereço (lógico) E, o mecanismo de acesso a memória entende como sendo um acesso ao endereço RB+E, onde RB é o valor contido no registrador base. A figura abaixo mostra como os endereços relativos são transformados em endereços absolutos durante a execução:

O uso de relocação dinâmica permite movimentar um programa na memória com facilidade, basta alterar o valor do registrador base. Isto permite mudar o tamanho do sistema operacional durante a execução de um programa (como por exemplo para incluir mais buffers ou então um controlador de dispositivo pouco utilizado). Outra forma comum de permitir o aumento do tamanho do SO é carregar

...

Baixar como (para membros premium)  txt (61.1 Kb)  
Continuar por mais 37 páginas »
Disponível apenas no TrabalhosGratuitos.com