Sistemas Operacionais Aula 13 Gerência de Memória Prof.: Edilberto M. Silva http://www.edilms.eti.br Baseado no material disponibilizado por: SO - Prof. Edilberto Silva Prof. José Juan Espantoso
Sumário Introdução Funções básicas Alocação contígua simples Técnica de overlay Alocação Particionada Alocação Particionada Estática Alocação Particionada Dinâmica Estratégias de Alocação de Partição Swapping SO - Prof. Edilberto Silva 2
Introdução Memória: local onde se pode armazenar (temporária ou permanentemente) um determinado conteúdo. Memória de curto prazo (Volátil) é aquela que precisa ser constantemente alimentada, senão perderá as informações armazenadas nela. Exemplos: Memória Principal, Registradores e Cache. Memória de longo prazo (Não Volátil) é aquela que não necessita de alimentação constante para guardar as informações nela armazenadas. Exemplos: Discos Flexíveis e Rígidos, CD-ROM e Fitas. SO - Prof. Edilberto Silva 3
Introdução Códigos e Memórias UCP Fluxo de dados Memória Principal Código de Processo Fluxo de dados Memória Secundária Código de Programa SO - Prof. Edilberto Silva 4
Introdução Códigos e Memórias: Processos somente executam em memória principal; Programas podem estar guardados em memória secundária até sua execução; O próprio sistema operacional (ou parte dele) necessita executar na memória principal. O SO gerencia toda a utilização da memória, além da migração de programas da memória principal para a secundária e vice-versa. SO - Prof. Edilberto Silva 5
Introdução Questões Típicas de Gerência de Memória: Onde colocar um novo processo sem destruir um outro que já está atualmente na memória? Como impedir que um processo em execução altere os dados de outro? O que acontece se um processo precisa ser executado, mas não há espaço na memória? Se um processo que não está na memória tem de ser executado, mas a memória está cheia, o que se pode remover da memória? SO - Prof. Edilberto Silva 6
Funções Básicas Manter o maior número de processos na memória Maximizar o compartilhamento da UCP e demais recursos Swapping Execução de programas maiores que memória disponível Proteção Compartilhamento SO - Prof. Edilberto Silva 7
Gerência de Memória Gerência de Memória: Os sistemas de gerência de memória podem ser divididos em duas grandes categorias; Aqueles que movem os processos entre a Memória Principal e disco (Swapping e Paginação); E aqueles que não movimentam os processos entre tais dispositivos de armazenamento. SO - Prof. Edilberto Silva 8
Alocação Contígua Simples Essa alocação foi implementada nos primeiros sistemas operacionais desenvolvidos; Nesse tipo de organização a memória principal é dividida em duas partes: uma para o sistema operacional e outra para o programa do usuário; Dessa forma, o programador deve desenvolver suas aplicações, preocupado, apenas em não ultrapassar o espaço de memória disponível; Nesse esquema o usuário tem controle sobre toda a memória principal, podendo acessar qualquer posição de memória; SO - Prof. Edilberto Silva 9
Alocação Contígua Simples Proteção M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l R e g i s t r a d o r Á r e a p a r a p r o g r a m a SO - Prof. Edilberto Silva 10
Alocação Contígua Simples Apesar de sua fácil implementação a alocação contígua simples não permite a utilização eficiente do processador e da memória; Em relação à memória, caso o programa do usuário não a preencha, existirá um espaço de memória sem utilização; Por outro lado, caso o programa fosse maior que a memória disponível esse não poderia ser executado; A solução encontrada foi dividir o programa em partes (módulos), de forma que pudessem executar independentemente uma da outra, utilizando uma mesma área de memória; Essa técnica é chamada de overlay (sobreposição); Suponha, por exemplo, um programa que tenha três módulos: um principal, um de cadastramento e outro de impressão, sendo os módulos de cadastramento e impressão independentes; SO - Prof. Edilberto Silva 11
Subutilização da memória Alocação Contígua Simples M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l P r o g r a m a d o u s u á r i o Á r e a l i v r e SO - Prof. Edilberto Silva 12
Técnica de Overlay Técnica de Overlay M e m ó r i a P r i n c i p a l 2 K b S i s t e m a O p e r a c i o n a l C a d a s t r a m e n t o 3 K b M ó d u l o p r i n c i p a l 4 K b 4 K b Á r e a d e o v e r l a y I m p r e s s ã o 1 K b Á r e a l i v r e 2 K b Á r e a n ã o u t i l i z a d a 2 K b SO - Prof. Edilberto Silva 13
Alocação Contígua Simples Apesar de executar apenas um programa aplicativo na memória, outros programas (ou partes deles) podem também habitar a memória; Os próprios sistemas operacionais consistem de programas residentes e transientes. Os programas residentes sempre estão presentes na memória. Os programas transientes só estão presentes na memória quando chamados (necessário). SO - Prof. Edilberto Silva 14
Alocação Particionada Existem alguns métodos que visam particionar a memória de maneira eficiente e segura. Dentre esses: Partições Fixas ou estáticas: tanto em sistemas monoprogramados quanto em multiprogramados, uma abordagem simples para gerenciamento de memória envolve a divisão da memória em regiões de tamanho fixo, denominadas partições. O SO manipula uma tabela que contém informações a respeito das partições (tabela de partições). Uma vez determinado o tamanho da partição, ele não poderá ser alterado. SO - Prof. Edilberto Silva 15
Alocação Particionada Estática Alocação Particionada Estática M e m ó r i a P r i n c i p a l T a b e l a d e p a r t i ç õ e s S i s t e m a O p e r a c i o n a l P a r t i ç ã o T a m a n h o P a r t i ç ã o 1 2 K b 1 2 K b 2 5 K b 3 8 K b P a r t i ç ã o 2 5 K b P r o g r a m a s a s e r e m e x e c u t a d o s : P a r t i ç ã o 3 8 K b E D C B A 3 K b 6 K b 1 K b 4 K b 2 K b SO - Prof. Edilberto Silva 16
Alocação Particionada Estática Alocação Particionada Estática Absoluta M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l C A P a r t i ç ã o 1 2 K b 1 K b 2 K b E B P a r t i ç ã o 2 5 K b 3 K b 4 K b D P a r t i ç ã o 3 8 K b 6 K b SO - Prof. Edilberto Silva 17
Alocação Particionada Estática Alocação Particionada Estática Relocável M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l P r o g r a m a C 2 K b D E P r o g r a m a A 5 K b 6 K b 3 K b P r o g r a m a B 8 K b SO - Prof. Edilberto Silva 18
Alocação Particionada Estática Tabela de Alocação de Partições M e m ó r i a P r i n c i p a l P a r t i ç ã o T a m a n h o L i v r e S i s t e m a O p e r a c i o n a l 1 2 K b N ã o 1 P r o g r a m a C 2 5 K b S i m 3 8 K b N ã o 2 Á r e a l i v r e 3 P r o g r a m a B SO - Prof. Edilberto Silva 19
Alocação Particionada Estática - Sempre que um programa é carregado para a memória, o SO examina a tabela de partições e se há uma entrada indicando uma partição vazia, o SO armazena nela o código do processo; O SO também deve alterar a entrada na tabela para refletir a modificação das novas partições ocupadas. Isso deve acontecer tanto quando o processo inicia, quanto quando o processo termina seu processamento. SO - Prof. Edilberto Silva 20
Alocação Particionada Estática Proteção M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l E n d e r e ç o i n i c i a l E n d e r e ç o f i n a l SO - Prof. Edilberto Silva 21
Alocação Particionada Estática Proteção Registradores de Limites: maneira de verificar se as referências à memória são válidas ou não; São utilizados dois registradores que contêm os endereços superior e inferior (limites) da área alocada para um determinado processo; A idéia é que valores maiores do que o conteúdo do registrador superior ou menores que o conteúdo do registrador inferior sejam inválidos. SO - Prof. Edilberto Silva 22
Alocação Particionada Estática Proteção (Considerações): Um endereço inválido causa um Trap (interrupção) que transfere o controle para uma rotina de manipulação especial; É melhor armazenar os valores dos limites nos registradores da CPU do que na memória, pois isso reduz o tempo necessário para executar cada instrução. Referências extras à memória fazem o processo ser executado mais lentamente. Caso a proteção não seja implementada de maneira eficaz, pode ocorrer o colapso do sistema (system crash). SO - Prof. Edilberto Silva 23
Fragmentação Interna Alocação Particionada Estática M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l P r o g r a m a C 1 K b D B P r o g r a m a A 6 K b 4 K b 3 K b P r o g r a m a E 5 K b SO - Prof. Edilberto Silva 24
Alocação Particionada Estática Partições muito grandes podem criar muito desperdício de memória, provocando a chamada fragmentação interna de memória. Uma alternativa é criar partições que não possuam tamanhos fixos, e sim variáveis; Alternativa: Partições Dinâmicas! SO - Prof. Edilberto Silva 25
Alocação Particionada Dinâmica - Organização onde não se definem as partições antecipadamente; O SO as define dinamicamente, com base nas necessidades dos processos correntes. O SO cria uma partição cujo tamanho corresponde exatamente às necessidades de memória do processo; Não há fragmentação interna; Cada programa utiliza o espaço de que necessita, passando esse pedaço a ser sua partição; Aumenta a complexidade da tabela de gerenciamento da memória; A tabela não possui mais um número fixo de entradas, variando de acordo com o número de partições. SO - Prof. Edilberto Silva 26
Alocação Particionada Dinâmica Alocação Particionada Dinâmica M e m ó r i a P r i n c i p a l M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l S i s t e m a O p e r a c i o n a l P r o g r a m a B 4 K b P r o g r a m a C 1 K b A E C B 1 5 K b P r o g r a m a E 3 K b 2 K b 3 K b 1 K b 4 K b P r o g r a m a A 2 K b 5 K b SO - Prof. Edilberto Silva 27
Estratégias de Alocação Estratégias para Escolha da Partição: Essas estratégias tentam evitar, ou diminuir o problema da fragmentação antes que ele ocorra; Os sistemas operacionais adotam basicamente três estratégias para determinar em qual área livre um programa será carregado para execução: Best-fit Worst-fit First-fit A melhor estratégia depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados; SO - Prof. Edilberto Silva 28
Estratégias de Alocação Estratégias para Escolha da Partição: Best-fit: esse mecanismo escolhe a melhor partição, ou seja, aquela em que o programa deixa o menor espaço sem utilização; Worst-fit: esse mecanismo escolhe a pior partição, ou seja, aquela em que o programa deixa o maior espaço sem utilização; First-fit: esse mecanismo escolhe a primeira partição livre, de tamanho suficiente para carregar o programa; SO - Prof. Edilberto Silva 29
Estratégias de Alocação Best-fit S i s t e m a O p e r a c i o n a l 4 K b M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l P r o g r a m a C ( a ) B e s t - f i t P r o g r a m P r o g r a m a C a A F 1 K b 5 K b P r o g r a m a F Á r e a l i v r e 2 K b P r o g r a m a A 3 K b SO - Prof. Edilberto Silva 30
Estratégias de Alocação Worst-fit M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l S i s t e m a O p e r a c i o n a l 4 K b F 1 K b 5 K b P r o g r a m a C ( b ) W o r s t - f i t P r o g r a m a C P r o g r a m a F Á r e a l i v r e 4 K b P r o g r a m a A P r o g r a m a A 3 K b SO - Prof. Edilberto Silva 31
Estratégias de Alocação First-fit M e m ó r i a P r i n c i p a l S i s t e m a O p e r a c i o n a l 4 K b S i s t e m a O p e r a c i o n a l P r o g r a m a F P r o g r a m a C Á r e a l i v r e 3 K b ( c ) F i r s t - f i t F 1 K b 5 K b P r o g r a m a C P r o g r a m a A 3 K b P r o g r a m a A SO - Prof. Edilberto Silva 32
Swapping Mesmo com o aumento da eficiência da multiprogramação e, particularmente, da gerência de memória, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível; O swapping é uma técnica aplicada à gerência de memória, para programas que esperam por memória livre para serem processados; Nessa situação, o sistema escolhe um programa residente, que é levado da memória para o disco (swap out), retornando posteriormente para a memória principal (swap in), como se nada tivesse ocorrido. SO - Prof. Edilberto Silva 33
Visão esquemática do swapping SO - Prof. Edilberto Silva 34
Swapping Um dos problemas gerados pelo swapping é a relocação dos programas; O loader permite que um programa seja colocado em qualquer posição da memória, porém a relocação é realizada no momento do carregamento; No caso de um programa que saia e volte muitas vezes para a memória é necessário que a relocação seja realizada pelo loader a cada carregamento; A melhor solução para esse problema é uma implementação no hardware dos computadores para permitir que a relocação seja realizada durante a execução do programa; SO - Prof. Edilberto Silva 35
Swapping Esse tipo de mecanismo é denominado relocação dinâmica e é realizada através de um registrador especial, denominado registrador de relocação; No momento em que o programa é carregado na memória, o registrador recebe o endereço inicial da região de memória que o programa irá ocupar; Toda vez que ocorrer uma referência a algum endereço, o endereço contido na instrução será somado ao conteúdo do registrador; Dessa forma, um programa pode ser carregado em qualquer região da memória. SO - Prof. Edilberto Silva 36
Swapping Relocação Dinâmica R e g i s t r a d o r d e R e l o c a ç ã o I n s t r u ç ã o E n d e r e ç o i n c i a l d a p a r t i ç ã o C ó d i g o d e o p e r a ç ã o E n d e r e ç o E n d e r e ç o d e m e m ó r i a SO - Prof. Edilberto Silva 37