Baixe o app para aproveitar ainda mais
Prévia do material em texto
Gerenciamento de Memória Erinaldo Pereira erinaldo@usp.br Introdução ● Em geral programas são armazenados em memórias secundárias, como disco ou fita, por serem meios não-voláteis, abundantes e de baixo custo. ● Como o processador somente executa instruções localizadas na memória principal, o SO deve sempre transferir programas da memória sencundária para a memória principal, antes de serem executados. ● Como o tempo de acesso à memória secundária é muito superior ao tempo de acesso à memória principal, o SO deve reduzir o número de operações de E/S à memória secundária, caso contrário, sérios problemas no desempenho do sistema podem ser ocasionados Introdução ● A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximar o compartilhamento do processador e demais recursos computacionais. ● Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. Isso é possível por meio da transferência temporária de processos residentes na memória principal para memória secundária, liberando espaço para novos processos. ● Esse mecanismo é conhecido como swapping e será detalhado posteriormente. Introdução ● Outra preocupação na gerência de memória é permitir a execução de programas que sejam maiores que a memória física disponível implementada por meio de técnicas como memória virtual. ● Em um ambiente de multiprogramação, o SO deve proteger as àreas de memória ocupadas por cada processo, além da área onde reside o próprio sistema. Caso um programa tente realizar algum acesso indevido à memória, o sistema deve impedi-lo de alguma forma. ● Apesar de a gerência de memória garantir a proteção de áreas da memória, mecanismos de compartilhamento devem ser orferecidos para que diferentes processos possam trocar dados de forma protegida. Tipos de Alocação ● Contígua Simples a memória principal é subdividida em duas áreas: uma para o SO e outra para o programa do usuário. Memória Principal SO Área para programa Contígua Simples ● Presente em alguns sistemas monoprogramáveis, nesse esquema, o usuário tem o controle sobre toda a memória principal, podendo ter acesso a qualquer posição da memória, inclusive a área do SO. ● Para proteger o sistema desse tipo de acesso, que pode ser intencional ou não, alguns sistemas implementam proteção por meio de um registrador que delimita as áreas do SO e do usuário. ● Dessa forma, sempre que um programa faz referência a um endereço na memória, o sistema verifica se o endereço está dentro dos limites permitidos. Alocação Particionada ● Os Sistemas Operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos disponíveis. ● Os sistemas multiprogramáveis já são muito mais efecientes no uso do processador, necessitando assim que diversos programas estejam, ao mesmo tempo, na memória principal e que novas formas de gerência de memória sejam implementadas. Alocação Particionada Estática ● A memória é dividida em pedaços de tamanho fixo, chamados partições. O tamanho das partições deve ser estabelecido na fase iniciação do sistema e definido em função do tamanho dos programas que executarão no ambiente. Memória Principal SO Partição 1 Partição 2 Partição 3 2 Kb 5 Kb 8 Kb Partições Tamanho 1 2Kb 2 5Kb 3 8Kb Tabela de Partições E D C B A Programas a serem executados 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb3 Kb Alocação Particionda Esatática ● Inicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis. A esse tipo de gerência de memória chamou-se alocação particionada estática absoluta. Memória Principal 6Kb SO Partição 1 Partição 2 Partição 3 2 Kb 5 Kb 8 Kb E D C B A 1Kb 2Kb 3Kb 4Kb Alocação Particionada Estática ● Com a evolução dos compiladores, montadores, linkers e loaders, o código gerado deixou de ser absolutoe passou a ser realocavel. No código realocável, todas as referências a endereços no programa são relativas ao início do código, e não, a endereços físicos de memória. Esse tipo de gerência de memória é denominada alocação particionada estática realocável. SO Partição C Partição A Partição B 2 Kb 5 Kb 8 Kb D E 4Kb 3Kb Alocação Particionada Estática ● Nesse esquema de alocação de memória, a proteção baseia-se em dois registradores que indicam o limite inferior e superior da partição, onde o programa está sendo executado. Caso o programa tente acessar uma posição de memória fora dos limites definidos pelos registradores, ele será interrompido e uma mensagem de violação de acesso será gerada pelo SO. SO End. Inicial End. Final Memória Principal Alocação Particionada Estática ● Tanto nos sistemas de alocação absoluta quantos nos de alocação relocavél, os programas, normalmente, não preenchem totalmente as partições onde são carregados. Esse tipo de problema, decorrente da alocação fixa das partições, é conhecido como fragmentação interna. SO Programa C Programa A Programa E D E 4Kb6Kb 2Kb 3Kb 5Kb Memória Principal Alocação Particionada Dinâmica ● Na alocação particionada dinâmica ou variável, cada programa utiliza um espaço necessário, tornando essa área sua partição. SO Memória Principal A E C B 2Kb 3Kb 1Kb 4Kb 15Kb SO Memória Principal Programa B Programa C Programa E Programa A 5Kb 2Kb 3Kb 1Kb 4Kb Alocação Particionada Dinâmica ● Um tipo diferente de fragmentação comecerá a ocorrer, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitinso o ingresso de novos programas, chamada fragmentação externa. SO Memória Principal 4Kb D Programa C Programa A 3Kb 5Kb 6Kb Alocação Particionada Dinâmica ● Existem duas soluções para o problema da fragmentação externa da memória principal: SO Memória Principal 4Kb Programa C Programa A 3Kb 5Kb SO Memória Principal Programa A 8Kb 5Kb Alocação Particionada Dinâmica ● Solução 2 (Muito custosa) SO Memória Principal 4Kb Programa C Programa A 3Kb 5Kb SO Memória Principal Programa A 12Kb Realocação Programa C Estratégias de alocação de partição ● Os sistemas operacionais implementam basicamente três estratégias para determinar em qual área livre um programa será carregado para execução. Essas estratégias tentam evitar ou diminuir o problema da fragmentação externa. ● A melhor estratégia a ser adotada por um sistema depende de uma série de fatores, sendo mais importante, o tamanho dos programas processados no ambiente. Independentemente do algoritmo utilizado, o sistema possui uma lista de áreas livres, com o endereço e tamanho de cada área. Estratégias de alocação de partição Áreas Livres Tamanho 1 4 Kb 2 5 Kb 3 3 Kb SO Memória Principal 4Kb Programa C Programa A 5Kb 3Kb Área livre 1 Área livre 2 Área livre 3 Best-Fit ● Escolhe a partição em que o programa deixa o menor espaço sem utilização. ● Nesse algoritimo a lista de áreas livres está ordenada por tamanho, diminuindo o tempo de busca por uma área desocupada. ● Uma grande desvantagem desse método é consequência do próprio algoritmo. Como é alocada a partição que deixa a menor área livre, a tendência é, que cada vez mais, a memória fique com pequenas áreas não-contíguas, aumentando o problema da fragmentação.Best-Fit SO Memória Principal Programa C Programa A 5Kb 3Kb 4Kb F 1Kb SO Memória Principal Programa C Programa A 2KbÁrea livre Programa F Best-fit (1) Worst-Fit ● Escolhe a partição em que o programa deixa o maior espaço sem utilização. ● Por utilizar as maiores partições, a técnica de worst-fit deixa maiores espaços livres, permitindo que um maior número de programas utilize a memória diminuindo o problema da fragmentação. Worst-Fit SO Memória Principal Programa C Programa A 5Kb 3Kb 4Kb F 1Kb SO Memória Principal Programa C Programa A 4KbÁrea livre Programa F Worst-fit (2) Best-Fit SO Memória Principal Programa C Programa A 5Kb 3Kb 4Kb F 1Kb SO Memória Principal Programa C Programa A 2KbÁrea livre Programa F Best-fit (1) First-Fit ● Escolhe a primeira partição livre, de tamanho suficiente para carregar o programa. ● Nesse algoritmo, a lista de áreas livres está ordenada de forma crescente por endereços. Como o método tenta primeiro utilizar as áreas livres de endereços mais baixos, existe uma grande chance de se obter uma grande partição livre nos endereços de memória mais alto. ● Nas três estratégias apresentandas qual a mais rápida? first-fit é a mais rápida, consumindo menos recursos do sistema. SO Memória Principal Programa C Programa A 5Kb 3Kb 4Kb F 1Kb SO Memória Principal Programa C Programa A 3KbÁrea livre Programa F First-fit (3) Swapping ● A técnica de swapping foi produzida para contronar o problema da insuficiência de memória principal. ● É uma técnica aplicada à gerência de memória para programas que esperam por memória livre para serem executados. Swapping ● Nessa situação, o sistema escolhe um processo residente que é transferido a memória principal para secundária (swap out). ● Posteriormente, o processo é carregado de volta da memória secundária para principal (swap in) e pode continuar sua execução como se nada tivesse ocorrido. Swapping SO Memória Principal Programa B Programa E H SO Memória Principal Programa C Programa A Área livre Programa F Swa p-ou t Programa A Programa C Programa D Programa F D D Disco Programa B Programa E Swap-in Swapping ● O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar aquele com menor chance de ser executado, para evitar o swapping desnecessário de um processo que será executado logo em seguida. ● O conceito de swapping permite maior compartilhamento da memória principal e, consequentemente, maior utilização dos recursos do sistema operacional. ● Seu maior problema é o elevado custo das oprações de E/S (swap in/out). Dúvidas ? Muito obrigado pela sua atenção Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30
Compartilhar