Baixe o app para aproveitar ainda mais
Prévia do material em texto
Sistemas Operacionais Prof. Fernando Eryck 2012.2 Redes de Computadores SUMÁRIO � Gerência de Memória Introdução �Memória � Recurso fundamental para operação de um sistema computacional � Programas só executam se estiverem na memória principal � Quanto mais processos residentes na memória principal, melhor será o � Quanto mais processos residentes na memória principal, melhor será o compartilhamento do processador � Dependendo do esquema de gerenciamento, o processo pode ser movimentado entre o disco e a memória durante sua execução. � O S.O não deve ocupar muita memória � A coleção de processos em disco, em espera para serem carregados em memória para execução, forma a fila de entrada. Introdução � Gerenciador de Memória – é a parte do sistema operacional que gerencia a hierarquia (memória cache, RAM (principal) e secundária (disco). �Funções do Gerenciador de Memória;�Funções do Gerenciador de Memória; � Controlar quais unidades da memória estão ou não em uso, para que sejam alocadas quando necessário � Liberar as unidades de memória que foram desocupadas por um processo que finalizou � Tratar do Swapping entre a memória principal e a memória secundária �Transferência temporária de processos residentes na memória principal para a memória secundária (disco). Gerência de Memória �MMU – Unidade de Gerência de Memória: �É um módulo de hardware que faz o mapeamento entre endereços lógicos (end. da memória virtual) e os endereços físicos da memória RAM, ou seja, é um dispositivo que transforma endereços virtuais em endereços físicos. em endereços físicos. �Mem. Lógica – Endereço que o processo “enxerga” �Mem. Física – Implementada pelos circuitos integrados de memória Swapping • Processo deve estar na memória para ser executado • Processo pode ser transferido temporariamente para disco – Deve ser retomado posteriormente à memória para execução • Ex.: escalonador de CPU usando Round-Robin (Circular) – Assim que termina quantum(time slice) de P1, ele ficará em espera por um – Assim que termina quantum(time slice) de P1, ele ficará em espera por um período – Gerenciador de memória • Pode retirar P1 da memória e levá-lo para disco (swap out) • Pode-se carregar P2 do disco para a memória para execução (swap in) – Permuta (swap in/out) gasta bastante tempo (acesso a disco) • Troca de contexto mais cara • Quantum (time-slice) deve ser grande suficiente para melhorar utilização do sistema Swapping Swapping • Permuta de processos • Condições • Assegurar de que o processo a ser permutado está completamente ocioso • Sem pendências de operações de I/O por exemplo• Sem pendências de operações de I/O por exemplo • Processo em espera não está aguardando algum dispositivo ocupado • Execução de operações em buffer do SO Alocação da Memória • A memória principal é dividida em duas porções: • sistema operacional • processos do usuário • É necessário uma alocação eficiente Alocação Contígua Simples • Implementa nos primeiros sistemas operacionais (monoprogramáveis) • Forma mais simples de gerência de memória • Memória dividida em duas partes Memória principal Sistema Operacional • Memória dividida em duas partes – Uma para SO – Outra para processos • Alocação contígua – Cada processo fica em uma única seção contígua de memória Área de Programas do usuário Alocação Contígua Simples • Apesar da simplicidade de implementação e código reduzido, a alocação contígua simples não permite a utilização eficiente do processador e da memória pois apenas um usuário pode utilizar este recurso • Subutilização da memória – caso o programa não a preencha totalmente, existirá um espaço de memória sem – caso o programa não a preencha totalmente, existirá um espaço de memória sem utilização • Fragmentação Memória Principal Sistema Operacional Programa do usuário Área livre Alocação Contígua Simples • Os programas dos usuários estavam limitados ao tamanho da memória principal disponível • Solução: Overlay – Dividir o programa em módulos Memória Principal Cadastramento Sistema Operacional2 Kb – Permitir a execução independente de cada módulo, usando a mesma área de memória – Área de Overlay • Área de memória comum onde módulos compartilham o mesmo espaço Impressão 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 • Multiprogramação – Necessidade do uso da memória por vários usuários simultaneamente • Método simples de alocação – Dividir memória em diversas partições de tamanho fixo– Dividir memória em diversas partições de tamanho fixo – O tamanho de cada partição era estabelecido na inicialização do sistema – Cada partição pode conter um processo • Quando uma partição está livre – Um processo da fila de entrada é selecionado e carregado – Ao terminar execução, processo libera partição Alocação Particionada • Gerenciamento de memória disponível – SO mantém tabela indicando o que está disponível/ocupado – Inicialmente, toda memória para usuário é considerada como um grande bloco livre – À medida que processos chegam, vão para fila de entrada • SO verifica quais processos “cabem” na memória – Após carregado, processo passa a competir pela CPU – Quando terminar, libera memória: SO poderá preenchê-la com outro processo • Processos “grandes” devem aguardar por blocos de memória suficientes para abrigá-los Alocação Particionada Memória Principal Sistema Operacional 2 KbPartição 1Partição Tabela de partições Tamanho 5 Kb 8 Kb 1 2 Kb 2 5 Kb 3 8 Kb Partição 2 Partição 3Programas a serem executados: AE 3 Kb D 6 Kb C 1 Kb B 4 Kb 2 Kb Alocação Particionada Memória Principal Sistema Operacional 1 Programa C Partição Tamanho Livre 1 2 Kb Não 2 3 Área livre Programa B 2 5 Kb Sim 3 8 Kb Não Multiprogramação com Partições Dinâmicas • Elimina a alocação com partições de tamanho fixo • Cada processo utiliza o espaço necessário usando essa área como sua partição • Não ocorre o problema da fragmentação interna• Não ocorre o problema da fragmentação interna • Problema • Espaços cada vez menores podem surgir na memória • Dificuldade para incluir novos programas • Fragmentação externa Fragmentação Externa • Término dos processos deixa espaços que podem ser insuficientes para novos programas • Problema: Pode-se observar no exemplo que Embora haja 12k de espaço livre, o Programa de 6k não poderá ser executado Solução para a Fragmentação Externa • 1ª. Solução • Reunir espaços adjacentes conforme os programas terminam, produzindo áreas livres de tamanho maior Solução para a Fragmentação Externa • 2ª. Solução • Relocação dinâmica de todas as partições ocupadas, eliminando espaços entre elas e criando uma única área livre contígua • Algoritmo complexo que consume recursos do sistema• Algoritmo complexo que consume recursos do sistema Estratégias de Alocação de Partições • O SO mantêm uma lista de área livres e implementam três estratégias para evitar ou diminuir o problema da fragmentação externa, determinando em qual área livre um programa será carregado para execução Estratégia de Alocação Best Fit • Aloca o menor espaço sem utilização que caiba o processo • Lista de áreas de estar ordenada por tamanho • Desvantagem • Cada vez mais memória fica com pequenas áreas não contíguascontíguas Estratégia de Alocação Worst Fit • Aloca o maior espaço existente • Vantagem • Deixa espaços livres maiores, diminuindo o problema da fragmentaçãoEstratégia de Alocação First Fit • Aloca o primeiro intervalo grande o suficiente para carregar o processo • Lista de endereços está ordenada crescentemente por endereços Estratégias de Alocação de Partições • Simulações demonstram que o primeiro-apto e o mais-apto são melhores que o menos-apto – Redução de tempo – Uso de memória – Primeiro-apto em geral é mais rápido– Primeiro-apto em geral é mais rápido • Todos os algoritmos levam à fragmentação externa – À medida de processos são carregados e removidos, a memória é quebrada em pequenos pedaços de espaço livre • Às vezes sobra bastante espaço, mas não contíguo – Dependendo do total de memória e tamanho médio de processo, problema da fragmentação pode ser maior ou menor – Análises estatísticas do primeiro-apto indicam que para N blocos alocados, 0.5*N são perdidos com fragmentação (1/3 da memória) – OBS: Ocorre a fragmentação externa quando existe espaço de memória total para atender a solicitação, mas ele não é contíguo; a memória é fragmentada em um grande número de pequenos intervalos Fragmentação • Fragmentação – Interna: espaço alocado ao processo é maior que solicitado • Alocação ocorre em tamanho múltiplo de um bloco de memória – Tamanho do bloco é definido pelo SO – Externa: espaço livre da memória quebrado em pedaços (externos aos – Externa: espaço livre da memória quebrado em pedaços (externos aos processos) • Solução para fragmentação externa – Compactação: juntar pedaços disponíveis • Nem sempre possível: só se houver relocação dinâmica em tempo de execução • Movimentar processos na memória pode ser caro – Permitir ao processos ter espaço de endereçamento não contíguo • Técnicas de paginação e segmentação
Compartilhar