Sistemas Operacionais Gerenciamento de memria Prof Diovani Milhorim

  • Slides: 56
Download presentation
Sistemas Operacionais Gerenciamento de memória Prof. Diovani Milhorim

Sistemas Operacionais Gerenciamento de memória Prof. Diovani Milhorim

Gerenciamento de memória n A multiprogramação implica em manter-se vários processos em memória. n

Gerenciamento de memória n A multiprogramação implica em manter-se vários processos em memória. n A memória necessita ser alocada de forma eficiente para permitir o máximo possível de processos n Existem diferentes técnicas para gerência que dependem do hardware do processador. de memória,

Gerenciamento de memória Um sistema de memória possui pelo menos dois níveis: o Memória

Gerenciamento de memória Um sistema de memória possui pelo menos dois níveis: o Memória principal: acessada pela CPU o Memória secundária: discos

Gerenciamento de memória • Programas são armazenados em disco o Executar um programa se

Gerenciamento de memória • Programas são armazenados em disco o Executar um programa se traduz em transferi-lo da memória secundária à memória primária

Gerenciamento de memória • Qualquer sistema operacional tem gerência de memória n Monotarefa: gerência

Gerenciamento de memória • Qualquer sistema operacional tem gerência de memória n Monotarefa: gerência é simples n Multitarefa: complexa • Algoritmos de gerência de memória dependem de facilidades disponíveis pelo hardware da máquina

Gerenciamento de memória Memória lógica e memória física Memória lógica o É aquela que

Gerenciamento de memória Memória lógica e memória física Memória lógica o É aquela que o processo “enxerga” o Endereços lógicos são aqueles manipulados por um processo

Gerenciamento de memória Memória lógica e memória física Memória física n n Implementada pelos

Gerenciamento de memória Memória lógica e memória física Memória física n n Implementada pelos circuitos integrados de memória. Endereços físicos são aqueles que correspondem a uma posição real de memória.

Gerenciamento de memória Endereço lógico versus endereço físico Espaço lógico de um processo é

Gerenciamento de memória Endereço lógico versus endereço físico Espaço lógico de um processo é diferente do espaço físico. n n Endereço lógico: gerado pela CPU (endereço virtual) Endereço físico: endereços enviados para a memória RAM Programas de usuários “vêem” apenas endereços lógicos. Endereços lógicos são transformados em endereços físicos no momento de execução dos processos.

Gerenciamento de memória Unidade de gerência de memória • Memory Management Unit (MMU) •

Gerenciamento de memória Unidade de gerência de memória • Memory Management Unit (MMU) • Hardware que faz o mapeamento entre endereço lógico e endereço físico

Gerenciamento de memória Unidade de gerência de memória

Gerenciamento de memória Unidade de gerência de memória

Gerenciamento de memória Um programa deve ser transformado em um processo para poder ser

Gerenciamento de memória Um programa deve ser transformado em um processo para poder ser executado. n n Alocação de um descritor de processos Alocação de áreas de memória para código, dados e pilha Transformação é feita através de uma série de passos, alguns com a ajuda do próprio programados. n n Compilação, diretivas de compilação e/ou montagem, ligação, etc. . . Amarração de endereços (binding)

Gerenciamento de memória Amarração de endereços (binding) Atribuição de endereços (posições de memória) para

Gerenciamento de memória Amarração de endereços (binding) Atribuição de endereços (posições de memória) para código e dados pode ser feita em três momentos diferentes. n Em tempo de compilação n Em tempo de carga n Em tempo de execução.

Gerenciamento de memória Amarração de endereços (binding)

Gerenciamento de memória Amarração de endereços (binding)

Gerenciamento de memória Amarração de endereços (binding) Atribuição de endereços para instruções e dados

Gerenciamento de memória Amarração de endereços (binding) Atribuição de endereços para instruções e dados pode ser feita em três momentos diferentes: n n n Em tempo de compilação: se a localização da memória é conhecida a priori, código absoluto pode ser gerado; tem que recompilar o código se a alocação inicial mudar Em tempo de carga: deve gerar código relocável se a localização da memória não é conhecida em tempo de compilação Em tempo de execução: a atribuição é adiada até o tempo de execução se o processo puder ser movido durante sua execução de um segmento de memória para outro. Precisa de suporte de hardware para mapear endereços (ex. : registradores base e limite)

Gerenciamento de memória Registradores de Base e de Limite. Um par de registradores de

Gerenciamento de memória Registradores de Base e de Limite. Um par de registradores de base e de definem o espaço de endereço lógico limite

Gerenciamento de memória

Gerenciamento de memória

Gerenciamento de memória Carregador absoluto versus carregador relocador • • Programador não tem conhecimento

Gerenciamento de memória Carregador absoluto versus carregador relocador • • Programador não tem conhecimento de onde o programa será carregado na memória O endereço só é conhecido no momento da carga Durante a execução do programa sua localização física pode ser alterada. Ex. : procedimento de swapping • • Necessidade de traduzir endereços lógicos a endereços físicos Relocação é a técnica que realiza esta tradução o Via software: carregador relocador o Via hardware: carregador absoluto

Gerenciamento de memória Carregador relocador • • Correção de todas as referências à memória

Gerenciamento de memória Carregador relocador • • Correção de todas as referências à memória de forma a corresponder ao endereço de carga do programa Necessidade de identificar quais endereços devem ser corrigidos o Código relocável o Mapeamento das posições a serem corrigidas é mantida através de tabelas • • Código executável mantém informações de relocação na forma de tabelas. No momento da carga o programa executável é interpretado e os endereços corrigidos.

Gerenciamento de memória Carregador relocador

Gerenciamento de memória Carregador relocador

Gerenciamento de memória Código absoluto - Carregador absoluto • Não realiza correção de endereços

Gerenciamento de memória Código absoluto - Carregador absoluto • Não realiza correção de endereços no momento da carga do programa em memória • Código executável absoluto não necessita manter tabelas de endereços a serem corrigidos • Endereço de carga Fixo pelo programa (programador) Qualquer: Correção pode ser feita automaticamente, de forma transparente, a partir de registradores de base

Gerenciamento de memória Mecanismos básicos de gerência de memória Um programa (processo) para ser

Gerenciamento de memória Mecanismos básicos de gerência de memória Um programa (processo) para ser executado deve estar na memória n Onde deve ser carregado? Problema de alocação de memória A alocação de memória depende de: n Código absoluto versus código relocável n Necessidade de espaço contínuo ou não Necessidade de gerenciamento da memória n Determinação de áreas livres e ocupadas n Racionalizar a ocupação da memória

Gerenciamento de memória

Gerenciamento de memória

Gerenciamento de memória Alocação contígua simples • Sistema mais simples • Memória principal é

Gerenciamento de memória Alocação contígua simples • Sistema mais simples • Memória principal é dividida em duas partições: o Sistema operacional (parte baixa de memória) o Processo de usuário (restante da memória) • Usuário tem controle total da memória podendo inclusive acessar a área do sistema operacional. Ex. : DOS (não confiável)

Gerenciamento de memória n Evolução: inserir proteção através de mecanismos de hardware + software

Gerenciamento de memória n Evolução: inserir proteção através de mecanismos de hardware + software n Registradores de base e de limite o Memory Management Unit (MMU)

Gerenciamento de memória Alocação contígua particionada • Existência de múltiplas partições • Imposta pela

Gerenciamento de memória Alocação contígua particionada • Existência de múltiplas partições • Imposta pela multiprogramação • Filosofia: o Dividir a memória em blocos (partições) o Cada partição pode receber um processo (programa) o Grau de multiprogramação é fornecido pelo número de partições * * Importante: não considerando a existência de swapping

Gerenciamento de memória Alocação contígua particionada • Duas formas básicas: n n Alocação contígua

Gerenciamento de memória Alocação contígua particionada • Duas formas básicas: n n Alocação contígua com partições fixas (estática) Alocação contígua com partições variáveis (dinâmica)

Gerenciamento de memória Alocação contígua particionada • O sistema operacional é responsável pelo controle

Gerenciamento de memória Alocação contígua particionada • O sistema operacional é responsável pelo controle das partições mantendo informações como: o Partições alocadas o Partições livres o Tamanho das partições

Gerenciamento de memória Alocação contígua particionada dinâmica

Gerenciamento de memória Alocação contígua particionada dinâmica

Gerenciamento de memória Alocação contígua particionada fixa • Memória disponível é dividida em partições

Gerenciamento de memória Alocação contígua particionada fixa • Memória disponível é dividida em partições de tamanho fixo que podem ser do mesmo tamanho ou não

Gerenciamento de memória Alocação contígua particionada fixa Questões: o Processos podem ser carregados em

Gerenciamento de memória Alocação contígua particionada fixa Questões: o Processos podem ser carregados em qualquer partição? Depende se o código é absoluto ou relocável o Número de processos que podem estar em execução ao mesmo tempo? Sem swapping – igual ao número de partições (máximo) Com swapping – maior que o número de partições o Se o programa é maior que o tamanho da partição? Não executa a menos que se empregue um esquema de overlay

Gerenciamento de memória Técnica de Overlay ● Enquanto na alocação contígua simples os programas

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, deforma que seja possível a execução independente de cada módulo, utilizando uma mesma área da memória

Gerenciamento de memória Técnica de Overlay Exemplo de Overlay: Um programa que consista em

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

Gerenciamento de memória Técnica de Overlay A definição das áreas de overlay é feita

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.

Gerenciamento de memória Alocação contígua particionada fixa Gerenciamento de partições fixas Com código absoluto

Gerenciamento de memória Alocação contígua particionada fixa Gerenciamento de partições fixas Com código absoluto o o Um processo só pode ser carregado na área de memória (partição) para a qual foi compilado Pode haver disputa por uma partição mesmo que tendo outras livres Processo é mantido no escalonador de longo prazo (termo) Empregar swapping

Gerenciamento de memória Alocação contígua particionada fixa Gerenciamento com código relocável n Um processo

Gerenciamento de memória Alocação contígua particionada fixa Gerenciamento com código relocável n Um processo de tamanho menor ou igual ao tamanho da partição pode ser carregado em qualquer partição disponível n Se todas as partições estão ocupadas, duas soluções: - Processo é mantido no escalonador de longo prazo (termo) - Empregar swapping (escalonador a médio prazo)

Gerenciamento de memória Swapping n Processo necessita estar na memória para ser executado n

Gerenciamento de memória Swapping n Processo necessita estar na memória para ser executado n Se não há mais espaço em memória é necessário fazer um rodízio de processos em memória n Um processo pode ser temporariamente movido para fora da memória (backing store) e então trazido de volta para a memória para continuar a execução

Gerenciamento de memória Swapping n Backing store – memória secundária suficientemente grande para armazenar

Gerenciamento de memória Swapping n Backing store – memória secundária suficientemente grande para armazenar cópias de todos os processos de usuários n A maior parte do tempo de swap é tempo de transferência; tempo de swap é proporcional ao tamanho do processo n Existem variantes do sistema de swapping utilizados em sistemas como UNIX, Linux e Windows n Roll out, roll in – swapping variante usado para algoritmos de escalonamento baseados em prioridade; processo de baixa prioridade é movido da memória para que processos de alta prioridade possam ser carregados e executados

Gerenciamento de memória Swapping sistema operacional mantém uma fila de processos que estão prontos

Gerenciamento de memória Swapping sistema operacional mantém uma fila de processos que estão prontos para executar, que possuem imagens da memória em disco

Gerenciamento de memória Alocação contígua particionada fixa Fragmentação Interna • Problema da alocação fixa

Gerenciamento de memória Alocação contígua particionada fixa Fragmentação Interna • Problema da alocação fixa é uso ineficiente da memória principal • Um processo, não importando quão pequeno seja, ocupa uma partição inteira

Gerenciamento de memória Alocação contígua particionada fixa Fragmentação Interna

Gerenciamento de memória Alocação contígua particionada fixa Fragmentação Interna

Gerenciamento de memória Alocação contígua particionada fixa Paliativo para reduzir fragmentação interna n Partições

Gerenciamento de memória Alocação contígua particionada fixa Paliativo para reduzir fragmentação interna n Partições de tamanho diferentes

Gerenciamento de memória Algoritmos para alocação de partições fixas n Se código é absoluto

Gerenciamento de memória Algoritmos para alocação de partições fixas n Se código é absoluto a alocação é determinada na fase de montagem, compilação ou ligação. n Se código é relocável: - Partições de igual tamanho * Não importa qual partição é utilizada - Partições de diferentes tamanhos * Atribui ao processo a menor partição livre capaz de armazena o processo * Processo são atribuídos a partições de forma a minimizar o desperdício de memória (fragmentação interna)

Gerenciamento de memória Algoritmos para alocação de partições fixas

Gerenciamento de memória Algoritmos para alocação de partições fixas

Gerenciamento de memória Alocação particionada dinâmica • Objetivo é eliminar a fragmentação interna •

Gerenciamento de memória Alocação particionada dinâmica • Objetivo é eliminar a fragmentação interna • Processos alocam memória de acordo com suas necessidades • Partições são em número e tamanho variáveis

Gerenciamento de memória Alocação particionada dinâmica

Gerenciamento de memória Alocação particionada dinâmica

Gerenciamento de memória Alocação particionada dinâmica Fragmentação externa • A execução de processos pode

Gerenciamento de memória Alocação particionada dinâmica Fragmentação externa • A execução de processos pode criar pedaços livres de memória • Pode haver memória disponível, mas não contígua

Gerenciamento de memória Alocação particionada dinâmica Fragmentação externa

Gerenciamento de memória Alocação particionada dinâmica Fragmentação externa

Gerenciamento de memória Alocação particionada dinâmica Soluções possíveis fragmentação externa n n n Reunir

Gerenciamento de memória Alocação particionada dinâmica Soluções possíveis fragmentação externa n n n Reunir espaços adjacentes de memória Empregar compactação Relocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua Desvantagem: Consumo do processador Acesso a disco Acionado somente quando ocorre fragmentação Necessidade de código relocável

Gerenciamento de memória Alocação particionada dinâmica Gerenciamento de partições dinâmicas • Determinar qual área

Gerenciamento de memória Alocação particionada dinâmica Gerenciamento de partições dinâmicas • Determinar qual área de memória livre será alocada a um processo • Sistema operacional mantém uma lista de lacunas o Pedaços de espaços livres em memória • Necessidade de percorrer a lista de lacunas sempre que um processo é criado

Gerenciamento de memória Alocação particionada dinâmica Algoritmos para alocação contígua dinâmica n n Best

Gerenciamento de memória Alocação particionada dinâmica Algoritmos para alocação contígua dinâmica n n Best fit Minimizar tam_processo - tam_bloco o Deixar espaços livres os menores possíveis Worst fit Maximizar tam_processo - tam_bloco o Deixar espaços livres os maiores possíveis First fit tam_bloco > tam_processo Circular fit Variação do first-fit

Gerenciamento de memória Algoritmo alocação particionada dinâmica

Gerenciamento de memória Algoritmo alocação particionada dinâmica

Gerenciamento de memória Algoritmo alocação particionada dinâmica Desvantagem de partições variáveis n Tende a

Gerenciamento de memória Algoritmo alocação particionada dinâmica Desvantagem de partições variáveis n Tende a criar lacunas de memória livres que individualmente podem não ser suficientes para acomodar um processo n Pode haver memória livre, mas não contígua Fragmentação externa

Gerenciamento de memória Algoritmo alocação particionada dinâmica Desvantagem de partições variáveis

Gerenciamento de memória Algoritmo alocação particionada dinâmica Desvantagem de partições variáveis

Gerenciamento de memória Soluções possíveis para fragmentação externa n n Reunir espaços adjacentes de

Gerenciamento de memória Soluções possíveis para fragmentação externa n n Reunir espaços adjacentes de memória Empregar compactação Relocar as partições de forma a eliminar os espaços entre elas e criando uma área contígua o Desvantagem: Consumo do processador Acesso a disco Acionado somente quando ocorre fragmentação Necessidade de código relocável

Gerenciamento de memória Problemas com alocação particionada o Necessidade de uma área contígua de

Gerenciamento de memória Problemas com alocação particionada o Necessidade de uma área contígua de memória (tamanho do processo) o Fragmentação interna (partições fixas) ou externa (partições variáveis)

Gerenciamento de memória n n Nova abordagem é considerar a existência de um espaço

Gerenciamento de memória n n Nova abordagem é considerar a existência de um espaço de endereçamento lógico e de um espaço de endereçamento físico O espaço de endereçamento físico não precisa ser contíguo o Necessita “mapear” o espaço lógico no espaço físico Dois métodos básicos: • Paginação • Segmentação