Prévia do material em texto
Fundamentos de Sistemas Operacionais Seção 5: Organização e Gerência de Memória. Profa. Dra. Maria Teodora Ferreira maria.ferreira@bilac.com.br Objetivo: O aluno deverá entender sobre o gerenciamento de memória. Introdução A multiprogramação implica em manter-se vários processos em memória. A memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos. Um sistema de memória possui pelo menos dois níveis: Memória principal: acessada pela CPU. Memória secundária: discos. Gerência de Memória A gerência de memória deve: Tentar manter na MP (Memória Principal) o maior número de processos maximizar o compartilhamento do processador e demais recursos. Permitir a execução de programas que sejam maiores que a memória física disponível overlay e memória virtual. Proteger as áreas de memória ocupadas por cada processo, além da área onde reside o próprio sistema. Gerência de Memória Trazer programas para dentro da MP para ser executados pelo processador. Dividir dinamicamente a parte “User” da MP de forma que acomode vários processos. Alocar a memória de forma eficiente (evitar que o processador fique ocioso). “Rodar” um programa em que seu tamanho seja maior que o disponível pela memória real. Funções Básicas O processador somente executa instruções localizadas na memória principal. O SO deve transferir programas da memória secundária para a memória principal antes de serem executados. O tempo de acesso à memória secundária é muito superior ao tempo de acesso à memória principal. O SO deve buscar reduzir o número de operações de E/S à memória secundária. Funções Básicas Controlar quais partes da memória estão em uso. Controlar quais partes estão livres. Alocar memória a processos quando estes precisarem. Desalocar quando eles não mais necessitarem. Gerenciar a troca (swapping) dos processos entre MP e disco, quando a memória não é grande o suficiente para guardar todos os processos. Alocação de Memória Formas de organização dos programas na memória. Alocação Contínua Simples A MP é subdividida em duas áreas: uma para o SO e outra para o programa de usuário. Programador preocupado em não ultrapassar o espaço de memória disponível. O usuário tem controle sobre toda a MP, podendo ter acesso a qualquer posição de memória, inclusive a área do SO. Não permite a utilização eficiente dos recursos computacionais, pois apenas um usuário pode dispor desses recursos. Memória Principal Sistema Operacional Área para programa Alocação Contínua Simples Memória Principal Registrador Sistema Operacional Área para programa Alguns sistemas implementam proteção através de um registrador que delimita as áreas do SO e do usuário. Memória Principal Sistema Operacional Programa do usuário Área livre Em relação a MP, caso o programa do usuário não a preencha totalmente existirá um espaço de memória livre sem utilização. Técnica de Overlay Na alocação contínua simples todos os programas estão limitados ao tamanho da área de MP disponível para o usuário. Solução para limitação da MP devido a alocação contínua simples: Dividir o programa em módulos, de forma que seja possível a execução independente de cada módulo, utilizando uma mesma área de memória overlay! Técnica de Overlay Um programa com 3 módulos: principal, cadastramento e impressão. Cadastramento e impressão são módulos independentes. A independência do código significa que quando um módulo estiver na memória para execução o outro não precisa necessariamente estar presente. Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada Técnica de Overlay O módulo principal é comum aos dois módulos. Deve permanecer na memória durante todo o tempo da execução do programa. A memória (10Kb) é insuficiente para carregar todo o programa (3Kb+ 4Kb+4Kb). Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada Técnica de Overlay A técnica overlay utiliza uma área de memória comum, onde os módulos de cadastramento e impressão poderão compartilhar a mesma área de memória área de overlay! Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada Técnica de Overlay Sempre que um dos dois módulos for referenciado pelo módulo principal, o módulo será carregado da memória secundária para a área de overlay. O tamanho de uma área de overlay é estabelecido a partir do tamanho do maior módulo. Vantagem: permite ao programador expandir os limites da MP. Memória Principal Cadastramento Impressão Sistema Operacional2 Kb 3 Kb 4 Kb 4 Kb 2 Kb 2 Kb 1 Kb Módulo principal Área de overlay Área livre Área não utilizada Alocação Particionada Alocação particionada estática. Alocação particionada dinâmica. Estratégias de Alocação de Partição. Alocação Particionada Estática MP dividida em pedaços de tamanho fixo, chamados partições. O tamanho das partições, estabelecido na fase de inicialização do sistema, é definido em função do tamanho dos programas que executariam no ambiente. Alteração do tamanho de uma partição o sistema deve ser desativado e reinicializado com uma nova configuração. Alocação Particionada Estática Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Partição 1Partição Tabela de partições Tamanho 1 2 Kb 2 5 Kb 3 8 Kb Partição 2 Partição 3 Programas a serem executados: AE 3 Kb D 6 Kb C 1 Kb B 4 Kb 2 Kb Alocação Particionada Estática Problemas: Colocação de um programa pequeno em uma partição grande. Partições vazias. Alocação Particionada Estática Absoluta Os processos podem executar em apenas uma das partições, mesmo que outras estejam livres. Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Partição 1 Partição 2 Partição 3 A B D C E 3 Kb 6 Kb 1 Kb 4 Kb 2 Kb Se os processos A e B estivessem executando e a partição 3 estivesse livre, os processos C e E não poderiam ser executados. Alocação Particionada Estática Relocável Os processos sejam carregados em qualquer uma das partições. Se os processos A e B terminarem de executar, o processo E pode ser carregado e executado em qualquer uma das duas partições. Memória Principal Sistema Operacional 2 Kb 5 Kb 8 Kb Programa C Programa A Programa B ED 6 Kb 3 Kb Tabela de Alocação de Partições Para manter o controle sobre quais partições estão alocadas, a gerência de memória mantém uma tabela com: o endereço inicial de cada partição, seu tamanho e se está em uso. Memória PrincipalSistema Operacional 1 2 3 Programa C Área livre Programa B Partição Tamanho Livre 1 2 Kb Não 2 5 Kb Sim 3 8 Kb Não Tabela de Alocação de Partições Memória Principal Sistema Operacional 1 2 3 Programa C Área livre Programa B Partição Tamanho Livre 1 2 Kb Não 2 5 Kb Sim 3 8 Kb Não Sempre que um programa é carregado para a memória, o sistema percorre a tabela, na tentativa de localizar uma partição livre onde o programa possa ser carregado. Tabela de Alocação de Partições A proteção baseia-se em dois registradores, que indicam os limites inferior e superior da partição onde o programa está sendo executado. Fragmentação Interna Os programas normalmente não preenchem totalmente as partições onde são carregados. Problema decorrente da alocação fixa das partições. Memória Principal Sistema Operacional 1 Kb 3 Kb 5 Kb Programa C Programa A Programa E BD 6 Kb 4 Kb Alocação Particionada Dinâmica Visa reduzir o problema da fragmentação interna. Aumentar o grau de compartilhamento da memória. É eliminado o conceito de partições de tamanho fixo. Cada programa utiliza o espaço necessário, tornando essa área sua partição. Alocação Particionada Dinâmica Memória PrincipalMemória Principal Sistema OperacionalSistema Operacional 4 Kb 1 Kb 3 Kb 5 Kb 2 Kb 15 Kb Programa C Programa B Programa A Programa E BA 2 Kb E 3 Kb C 1 Kb 4 Kb Alocação Particionada Dinâmica Problema: Quando os processos forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos processos. Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A D 6 Kb Alocação Particionada Dinâmica Fragmentação Externa O programa não poderá ser carregado para a execução, pois o espaço não está disposto contiguamente. Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A D 6 Kb Alocação Particionada Dinâmica Solução 1: Conforme os programas terminam apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior. Memória PrincipalMemória Principal Sistema OperacionalSistema Operacional 8 Kb 4 Kb 3 Kb 5 Kb5 Kb Programa C Programa APrograma A Caso o programa C (1 Kb) termine, uma área de 8 Kb é criada. Alocação Particionada Dinâmica Solução 2: Relocação de todas as regiões ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua. Memória PrincipalMemória Principal Sistema Operacional Relocação Sistema Operacional 4 Kb 3 Kb 12 Kb 5 Kb Programa C Programa C Programa A Programa A Alocação Particionada Dinâmica Solução 2: É necessário que o sistema tenha a capacidade de mover os diversos programas na MP, ou seja, realizar relocação dinâmica (mecanismo de compactação). Memória PrincipalMemória Principal Sistema Operacional Relocação Sistema Operacional 4 Kb 3 Kb 12 Kb 5 Kb Programa C Programa C Programa A Programa A Estratégias de Alocação de Partição Os SO 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. O sistema possui uma lista de áreas livres, com o endereço e tamanho de cada área. Lista de Áreas Livres Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A Áreas livres Área livre 1 Área livre 2 Área livre 3 Tamanho 1 4 Kb 2 5 Kb 3 3 Kb Algoritmos de Alocação de Partições First – fit. Best – fit. Worst – fit. First - fit A primeira partição livre de tamanho suficiente para carregar o programa é escolhida. Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb Sistema Operacional 3 Kb Programa C Programa A Área livre Programa F Best - fit A melhor partição é escolhida, ou seja, aquela em que o programa deixa menor espaço sem utilização. Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb Sistema Operacional 2 Kb Programa C Programa F Programa A Área livre Worst - fit A pior partição é escolhida, ou seja, aquela em que o programa deixa maior espaço sem utilização. Memória Principal Sistema Operacional 4 Kb 3 Kb 5 Kb Programa C Programa A F 1 Kb Sistema Operacional 4 Kb Programa C Programa A Área livre Programa F Swapping Muitas vezes um programa não pode ser executado por falta de uma partição livre disponível. A técnica swapping foi introduzida para contornar o problema da insuficiência de memória principal. Swapping Memória Principal Memória Principal Sistema Operacional Sistema Operacional Programa A Programa A Programa G Área Livre Swap in Swap out Arquivo de Swap Programa E Programa E Programa B Programa H H B B O SO escolhe um processo residente, que é transferido da MP para a memória secundária (swap out). Posteriormente, o processo é carregado de volta da memória secundária para a MP (swap in). Swapping Os processos retirados da memória estão geralmente no estado de espera, mas ainda existe a possibilidade de um processo no estado de pronto também ser selecionado para swapping. Os processos no estado de espera ou pronto quando fora de memória são ditos não residentes (outswapped). Swapping O conceito de swapping permite: Um maior compartilhamento da MP; Uma maior utilização dos recursos do sistema computacional. Problema: Elevado custo das operações de entrada/saída (swap in/out).