DESENVOLVIMENTO DE SISTEMAS PARA INTERNET 8. GERENCIAMENTO DE MEMÓRIA Disciplina: Sistemas Operacionais Facilitador: Alisson Cleiton [email protected] 06/05/2009 Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.1 Introdução ● A memória principal sempre foi vista como um recurso caro e escasso. ● Ao projetar um SO, uma das maiores preocupações dos projetistas é quanto à economia de uso de memória e à otimização da utilização dos recursos computacionais; ● A gerência de memória é simples nos sistemas monoprogramáveis; ● Nos sistemas multiprogramáveis é um processo crítico, devido a necessidade de maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória principal. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.1 Funções Básicas ● Como programas são armazenados em memória secundárias, por serem meios de armazenamento não voláteis e de baixo custo, há a necessidade de que, cada vez que o processador necessite computar algum desses dados, trazê-los para a memória principal. ● A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e dois demais recursos computacionais. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.1 Funções Básicas Abaixo as principais funções da gerência de memória: ● Maximizar o aproveitamento da memória principal; ● Gerenciar a superutilização da memória; ● Proteger áreas importantes da memória; ● Permitir a troca de dados de forma protegida. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.2 Alocação Contígua Simples ● Utilizada nos primeiros sistemas operacionais. Atualmente, é empregada apenas em alguns sistemas monoprogramáveis. ● Divide a memória principal em duas áreas: uma para o sistema operacional e outra para programas do usuário; ● A memória disponível para os programas do usuário é calculada através da diferença entre a memória total disponível e o espaço dela ocupado pelo sistema operacional; Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.2 Alocação Contígua Simples ● O acesso à memória é livre, inclusive à área do sistema operacional. Alguns sistemas podem implementar um registrador que limita a área acessível da memória por parte do usuário. Caso seja identificada uma tentativa de acesso a uma área protegida, um erro é gerada e a instrução é interrompida. ● Fácil implementação e código reduzido. ● Não permite utilização eficiente dos recursos computacionais, pois apenas um usuário estará presente e, caso seu programa não ocupe todo o espaço disponível na memória, existirá um espaço livre, sem utilização. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Técnica de Overlay ● Enquanto na alocação contígua simples os programas estão limitados ao tamanho da área disponível na memória principal para o usuário, na técnica de Overlay os programas são divididos em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área da memória. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Técnica de Overlay ● A definição das áreas de overlay é feita pelo próprio programador, através de comandos específicos da linguagem de programação. ● O tamanho da área de overlay deve ser igual ou maior ao tamanho do maior módulo. ● Como vantagem, a técnica de overlay possibilita um melhor aproveitamento da memória principal. ● Sua utilização exige cuidado, pois pode trazer implicações tanto na manutenção como no desempenho das aplicações, devido à possibilidade de transferências excessivas dos módulos entre a memória principal e a memória secundária. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Técnica de Overlay Exemplo de Overlay: Um programa que consista em um módulo principal e outros dois módulos independentes, um correspondente ao cadastro e outro, à impressão. Quando o programa é carregado, apenas o módulo principal é introduzido na memória, os demais aguardam em memória secundária. Quando um dos outros módulos for referenciado pelo módulo principal, aquele será carregado na memória principal, na área de overlay. Caso haja uma nova referência a um módulo que já está na área de overlay, ele não será recarregado. Caso a nova referência seja a um módulo que está em memória secundária, ele será carregado na área de overlay, sobrescrevendo o método que lá estava Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.3 Alocação Particionada ● Conforme os sistemas operacionais evoluem, estes têm possibilitado um melhor aproveitamento dos recursos computacionais disponíveis. Nos sistemas monoprogramáveis, o processador permanecia ocioso por grandes períodos e a memória principal era subutilizada. Os sistemas multiprogramáveis são muito mais eficientes no uso do processador, necessitando assim que diversos programas estejam na memória principal ao mesmo tempo e que novas formas de gerência de memória sejam implementadas. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.4 Alocação Particionada Estática ● O tamanho das partições era estabelecido na fase de inicialização do sistema, em função dos programas que executariam no ambiente. ● Sempre que fosse necessário alterar o tamanho de uma partição, o sistema deveria ser reinicializado. Este é o modelo de alocação particionada estática ou fixa. ● A proteção, nesse esquema de alocação de memória, fica por conta de dois registradores que indicam os limites inferior e superior da partição na qual o programa está sendo executado. ● O grande defeito da alocação particionada estática, seja absoluta ou relocável, é o desperdício de espaço dentro das partições. Fragmentação Interna Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.5 Alocação Particionada Dinâmica ● Surge como evolução da alocação particionada estática, permitindo melhor aproveitamento e maior compartilhamento da memória, reduzindo o problema da fragmentação interna. ● Não há partições fixas. Cada programa utiliza uma partição com o espaço necessário. Com isso, eliminouse o problema da fragmentação interna. ● Quando os programas são finalizados, deixam espaços vazios na memória. Estes espaços tendem a se tornar cada vez menores e, assim, não possibilitam a inserção de novos programas na memória principal. Este tipo de problema é chamado de fragmentação externa. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Estratégias para minimizar os efeitos da fragmentação externa ● Conforme os programas terminam, os espaços adjacentes são reunidos, produzindo áreas livres de tamanho maior ● Envolver a relocação de todas as partições ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua. Este mecanismo é conhecido como particionada dinâmica com relocação. alocação Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.6 Estratégias de Alocação de Partição ● Há três estratégias implementadas pelos sistemas operacionais para determinar em qual área livre será carregado um programa para execução. Estas estratégias tentam evitar ou diminuir o problema da fragmentação interna. ● A melhor estratégia adotada depende de uma série de fatores, sendo o mais relevante deles o tamanho dos programas processados no ambiente. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.6.1 Best Fit ● Aloca o programa na partição que melhor se adapta ao seu tamanho, ou seja, aquela que deixa um menor espaço sem utilização. ● Sua grande desvantagem é em função do próprio algoritmo. Como é alocada a partição que deixa a menor área livre, a tendência é que a memória fique, cada vez mais, com pequenas áreas não contíguas, aumentando o problema da fragmentação. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.6.2 Worst Fit ● Aloca o programa na partição que pior se adapta ao seu tamanho, ou seja, aquela que deixará um maior espaço sem utilização. ● Apesar de utilizar as maiores partições, esta técnica deixa espaços livres maiores que permitem que um número maior de programas usem a memória principal, diminuindo o problema da fragmentação. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.6.3 First Fit ● Aloca o programa na primeira partição livre que encontrar com tamanho suficiente para abrigá-lo. ● Ordena a tabela de partições livres em função do seu endereço. ● Como o método tenta utilizar primeiro as áreas de endereços menores, há grandes chances de encontrar grandes partições nos endereços mais altos. ● Das três estratégias, a first fit é a mais rápida, consumindo menos recursos do sistema. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.7 Swapping ● A técnica de swapping foi introduzida para contornar o problema de insuficiência de memória principal. ● O swapping é uma técnica aplicada à gerência de memória para programas que esperem por memória livre para serem executados. Nesta situação, o sistema escolhe um processo residente, que é transferido da memória principal à memória secundária ( swap out ), geralmente em disco. Posteriormente, o processo é carregado de volta à memória principal ( swap in ). Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.7 Swapping ● O conceito de swapping permite um maior compartilhamento da memória principal e, conseqüentemente, maior utilização dos recursos computacionais. ● Em situações críticas, quando há disponível, o sistema pode ficar quase execução de swapping, deixando de tarefas e impedindo a execução residentes. pouca memória que dedicado à realizar outras dos processos Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.8 Memória Virtual ● Memória virtual é uma técnica sofisticada e poderosa de gerência de memória, onde as memórias principal e secundária são combinadas, dando ao usuário a ilusão de existir uma memória muito maior que a capacidade real da memória principal. ● Um programa no ambiente de memória virtual não faz referência a endereços físicos de memória (endereços reais), mas apenas a endereços virtuais. No momento da execução de uma instrução, o endereço virtual referenciado é traduzido para um endereço físico, pois o processador manipula apenas posições da memória principal. O mecanismo de tradução do endereço virtual para endereço físico é denominado mapeamento. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória 8.8 Memória Virtual - Páginação ● A memória virtual por paginação é a técnica de gerência de memória onde o espaço de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo tamanho chamados páginas. 8.8 Memória Virtual - Segmentação ● Memória virtual por segmentação é a técnica de gerência de memória onde o espaço de endereçamento virtual é dividido em blocos de tamanhos diferentes chamados segmentos. Enquanto na paginação existe o problema da fragmentação interna, na segmentação surge o problema da fragmentação externa. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Proteção da Memória ● O sistema operacional deve impedir que um processo tenha acesso ou modifique uma página do sistema sem autorização. ● Um primeiro nível de proteção é inerente ao próprio mecanismo de memória virtual por paginação. Neste esquema, cada processo tem a sua própria tabela de mapeamento e a tradução dos endereços é realizada pelo sistema. A proteção de acesso é realizada individualmente em cada página da memória principal, utilizando-se as entradas das tabelas de mapeamento, onde alguns bits especificam os acessos permitidos. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Compartilhamento de Memória ● Em sistemas que implementam memória virtual, é bastante simples a implementação da reentrância, possibilitando compartilhamento de código entre os diversos processos. Para isso, basta que as entradas das tabelas de mapeamento dos processos apontem para os mesmos frames na memória principal, evitando, assim, várias cópias de um mesmo programa na memória. Apesar de os processos compartilharem as mesmas páginas de código, cada um possui sua própria área de dados em páginas independentes. Sistemas para Internet – 2º Período - Sistemas Operacionais 8. Gerenciamento de Memória Swapping de Memória Virtual ● A técnica de swapping também pode ser aplicada em sistemas com memória virtual, permitindo aumentar o número de processos que compartilham a memória principal e, conseqüentemente, o grau de multiprogramação do sistema. ● Quando existem novos processos para serem executados e não há memória principal livre suficiente para alocação, o sistema utiliza o swapping, selecionando um ou mais processos para saírem da memória e oferecer espaço para novos processos. DESENVOLVIMENTO DE SISTEMAS PARA INTERNET 9. PLATAFORMA WINDOWS PRÓXIMA AULA