GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema...

Post on 25-Oct-2020

0 views 0 download

Transcript of GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema...

Sistemas de Computação

Gerenciamento de memóriaGerenciamento de memória

Sistemas de Computação

Localização de processos

• Um programa fica armazenado em disco como um arquivo executável binário e tem que ser colocado na memória para começar a ser executado

• Os processos podem ser movidos entre a memória e o disco durante sua execução

• Fila de entrada – coleção de processos no disco que estão esperando para serem colocados na memória para poderem ser executados

• Processos podem ser carregados em qualquer endereço da memória

Sistemas de Computação

Mapeamento entre espaços de endereçamento

• Endereços no programa fonte são simbólicos

• Compiladores geram endereços relocáveis para os endereços simbólicos

• O linker ou loader irão transformar este endereços relocáveis em endereços absolutos

Sistemas de Computação

Definição de endereços para instruções e dados

• Tempo de compilação: Ocorre quando o endereço onde o processo irá ser carregado é conhecido. Um código absoluto com os endereços é gerado e caso o endereço mude, o programa tem que ser recompilado

• Tempo de carga: Caso o endereço não seja conhecido, o compilador tem que gerar código relócavel

• Tempo de execução: Caso um processo possa ser movido de um segmento de memória para outro durante a sua execução

Sistemas de Computação

Processamento do programa do usuário

Sistemas de Computação

Espaço lógico versus físico

• O conceito de espaço de endereçamento lógico ligado a um espaço de endereçamento físico é o ponto principal nos mecanismos de gerenciamento de memória

– Endereço lógico– gerado pela CPU: também conhecido como endereço virtual

– Endereço físico – endereço recebido pela memória

• Endereços lógicos (virtuais) diferem dos endereços físicos em tempo de execução

Sistemas de Computação

Unidade de gerenciamento de memória

• Dispositivo de hardware que mapeia endereços virtuais para físicos

• Um valor base armazenado no registrador de relocação é adicionado a cada endereço gerado pelo processo

• O programa do usuário manipula endereços lógicos; nunca vê os endereços reais

• A localização final de uma referência à memóriasó é definida quando a referência é executada.

Sistemas de Computação

Relocação dinâmica utilizando registrador de relocação

Sistemas de Computação

Carregamento dinâmico

• Rotina só é carregada quando ativada

• Melhor utilização do espaço de memória; rotina não utilizada nunca é carregada

• Particularmente útil quando grande quantidade de código é utilizado para casos que ocorrem raramente

• Não precisa de suporte do sistema operacional, mas S.O pode prover rotinas para que o programador possa realizá-lo

Sistemas de Computação

Ligação dinâmica

• A ligação é adiada até o tempo de execução

• Utilizada para otimizar uso de biblioteca de rotinas do sistema

• Pedaço de código denominado stub é utilizado para localizar a rotina necessária residente na memória

• O stub substitui o seu próprio código pelo endereço da rotina e a executa

• O sistema operacional tem que verificar se a rotina já está no espaço de endereçamento de algum processo e se pode ser compartilhada

Sistemas de Computação

Overlays

• Necessário quando o processo é maior que a quantidade de memória que pode ser alocada para ele

• Mantém na memória somente as instruções e dados necessários em um dado momento

• Implementado pelo usuário, não precisa de suporte do sistema operacional

• Usuário programa leitura de arquivos do disco para a memória e força o programa a ir para a posição de memória

• Complexo de utilizar

Sistemas de Computação

Overlays para um montador em doispassos

Sistemas de Computação

Swapping

• Um processo pode ser trocado ( swapped) temporariamente da memória para um outro dispositivo de apoio (disco), e trazido de volta para a memória para continuar a sua execução

• Roll out, roll in – variante do swapping utilizada para algoritmos de escalonamento baseados em prioridade; processo com menos prioridade vai para disco para processo de maior prioridade ser carregado e executado

• Caso a definição dos endereços físicos seja feita em tempo de compilação ou carga, o processo que foi para o disco tem que voltar para o mesmo lugar na memória

Sistemas de Computação

Swapping

• Caso a definição dos endereços físicos seja feita em tempo de execução, o processo que foi para o disco pode voltar para lugar diferente na memória

• O dispositivo de apoio tem que ser um disco rápido com capacidade suficiente para acomodar cópias de todas as imagens de programas de todos usuários e deve prover acesso direto e estas imagens

• Fila de prontos consiste dos processos que estão no dispositivo de apoio e na memória prontos para serem executados

• O dispatcher é acionado e no caso do processo selecionado não estar na memória e não existir espaço livre na memória, um processo é tirado da memória e colocado no disco

Sistemas de Computação

Esquema de swapping

Sistemas de Computação

Swapping

• A troca de contexto em um sistema com swappingé alta

– Ex. 1M bytes devem ser transferidos para um disco que tem taxa de transferência de 5MB/s e tempo de latência médio igual a 8 ms. Tempo total = 208 milisegundos, time slice deve ser substancialmente maior que 416 milisegundos

• A maior parte do tempo é utilizada para realizar a transferência entre a memória e dispositivo de apoio, então deve se fazer a transferência somente das posições de memória que estão sendo realmente utilizadas pelo processo

Sistemas de Computação

Swapping

• Processos que utilizam alocação dinâmica de memória devem informar ao sistema operacional as suas necessidades de memória através de chamadas ao sistema (request memory e release memory)

• Caso um processo vá para o disco e exista uma operação de E/S pendente para ele, podem ocorrer problemas, porque o dispositivo de E/S pode escrever na área de um novo processo que foi colocado no lugar dele

Sistemas de Computação

Swapping

• Soluções: não permitir swapping para processos com E/S pendente ou só permitir acesso pelo dispositivo de E/S a buffer do sistema operacional, que atualiza buffer do processo quando ele estiver na memória

• Mecanismo pouco utilizado e com algumas modificações

• Unix inicia swapping quando sistema muito carregado

– muitos processos no sistema– limite de memória livre é atingido

Sistemas de Computação

Alocação contígua

• Geralmente a memória principal é dividida em duas partições:

– Sistema operacional colocado nos endereços de memória mais baixos (memória baixa) junto com vetor de interrupções

– Processos do usuário ficam na memória mais alta

• Alocação contígua da memória – O sistema operacional tem que ser protegido do acesso dos

processos do usuário, os quais devem ser protegidos de acesso entre eles

– O registrador de relocação contém o valor do menor endereço físico e o registrador de limite contém a faixa de endereçamento lógico - cada endereço lógico tem que ser menor que o registrador limite

Sistemas de Computação

Suporte de hardware para registradoreslimite e de relocação

Sistemas de Computação

Múltiplas partições

• Alocação de múltiplas partições– Hole (buracos)– bloco de memória disponível ; buracos de vários

tamanhos ficam espalhados pela memória– Quando um processo chega no sistema, o sistema procura por um

buraco que tenha uma quantidade de memória livre suficiente para acomodar o processo

– O sistema operacional mantém informações sobre:• partições alocadas • partições livres (buraco)

Sistemas de Computação

Múltiplas partições

OS

process 5

process 8

process 2

OS

process 5

process 2

OS

process 5

process 2

OS

process 5

process 9

process 2

process 9

process 10

Sistemas de Computação

Alocação dinâmica de memória

• Como satisfazer um pedido de tamanho n tendo uma lista de buracos livres ?

– First-fit: Aloca o primeiro buraco da lista que seja grande o suficiente para o processo

– Best-fit: Aloca o menor buraco que seja grande o suficiente para o processo; precisa procurar a lista toda, caso não esteja ordenada. Produz o menor buraco

– Worst-fit: Aloca o maior buraco possível; precisa procurar toda a lista Produz o maior buraco

First-fit e best-fit são melhores que worst-fit em termos de velocidade e utilização de armazenamento

Sistemas de Computação

Fragmentação

• Fragmentação externa – existe a quantidade de memória que o processo precisa, mas não écontígua

• Fragmentação interna – memória alocada é um pouco maior que a requerida pelo processo; esta diferença é memória interna a uma partição de tamanho fixo que não está sendo utilizada

Sistemas de Computação

Fragmentação

• Redução de fragmentação externa por compactação

– Arruma-se o conteúdo da memória de modo a colocar toda a memória livre junta em um único bloco

– Compactação só é possível caso a relocação seja dinâmica e seja realizada em tempo de execução

Sistemas de Computação

Paginação

• Gerenciamento de memória que permite que o espaço de endereçamento físico não precise ser contíguo

• Divide a memória física em blocos de tamanho fixo denominados frames (tamanho é em potência de 2, entre 512 bytes e 8192 bytes).

• Divide memória lógica em blocos de mesmo tamanho denominadas páginas.

• Gerencia os frames livres

Sistemas de Computação

Paginação

• Para executar um programa de tamanho igual a npáginas, precisa-se encontrar n frames livres e carregar o programa nestes frames

• Possui uma tabela de páginas para traduzir o endereço lógico em físico

• Não ocorre fragmentação externa, mas pode ocorrer interna

Sistemas de Computação

Esquema de tradução de endereço

• O endereço gerado pela CPU é dividido em duas partes:

– Número de página (p) – utilizada como um índice para a tabela de páginas que contém o endereço base de cada página na memória física

– Deslocamento de página (d) – combinada com o endereço base da página para definir o endereço da memória física que será enviado para a unidade de memória

Sistemas de Computação

Arquitetura para tradução de endereços

Sistemas de Computação

Exemplo de paginação

Sistemas de Computação

Exemplo de paginação

Sistemas de Computação

Frames livres

Antes da alocação Depois da alocação

Sistemas de Computação

Implementação da tabela de páginas

• Tabela de páginas é mantida na memória

• Registrador base da tabela de páginas (PTBR) aponta para a tabela de páginas

• Registrador de tamanho de tabela de página (PRLR) indica o tamanho da tabela

• Neste esquema, cada acesso à memória para obter dado ou instrução requer dois acessos à memória: um para acessar a tabela de páginas e outro para obter a instrução ou dado

Sistemas de Computação

Implementação da tabela de páginas

• O problema de acessar a memória duas vezes pode ser resolvido utilizando-se uma memória cache denominada translation look-aside buffers (TLBs)

Sistemas de Computação

Hardware de paginação com TLB

Sistemas de Computação

Tempo efetivo de acesso

• Procura na TLB = unidades de tempo

• Assuma que o ciclo de memória é 1 microsegundo

• Taxa de acerto – percentagem de vezes que o número de página é encontrado na TLB (depende do tamanho da TLB)

• Taxa de acerto =

• Tempo efetivo de acesso (EAT)

EAT = (1 + ) + (2 + )(1 – )

= 2 + –

Sistemas de Computação

Proteção de memória

• Proteção de memória é implementada utilizando-se um bit de proteção para cada frame

• Bit válido-inválido é adicionado a cada entrada da tabela de páginas:

– “válido” indica que a página associada pode estar no espaço de endereçamento lógico do processo e portanto é uma página legal

– “inválido” indica que a página não pode estar no espaço de endereçamento lógico do processo

Sistemas de Computação

Bit válido (v) ou inválido (i) na tabela de páginas

Sistemas de Computação

Estruturação da tabela de páginas

• Paginação hierárquica

• Paginação por hash

• Tabela de página invertida

Sistemas de Computação

Tabelas de páginas hierárquicas

• Divide o espaço lógico de endereçamento em múltiplas tabelas de páginas

• Uma opção simples é dividir a tabela de ´páginas em dois níveis

Sistemas de Computação

Exemplo de paginação em dois níveis

• Um endereço lógico (em uma máquina de 32 bits com tamanho de página de 4K) é dividida em: – um número de pagina consistindo de 20 bits– um deslocamento de página consistindo de 12

bits.

• Com o tabela de página é paginada, o número de página é dividido em: – um número de página de 10 bits – um deslocamento de página de 10 bits

Sistemas de Computação

Exemplo de paginação em dois níveis

• Formato do endereço lógico:

onde p1 é um índice para a tabela de página mais externa e p2 é o deslocamento na página da tabela mais externa

número de página deslocamento de página

p1 p2 d

10 10 12

Sistemas de Computação

Esquema de tabela de páginas em dois níveis

Sistemas de Computação

Esquema de tradução de endereços

Sistemas de Computação

Tabelas de páginas com hash

• Comum em espaço de endereçamento > 32 bits.

• O número da página virtual é mapeado por hashing na tabela de páginas.

• A entrada da tabela de páginas pode conter uma cadeia de elementos que estão mapeados na mesma entrada

• ´Procura-se nesta cadeia pelo número da página virtual desejada e caso ela seja encontrada, obtém-se o frame físico correspondente

Sistemas de Computação

Tabela de páginas com hashing

Sistemas de Computação

Tabela de páginas invertida

• Uma entrada para cada página real da memória

• Cada entrada contém, para um determinado endereço real, o endereço virtual da página que está ali armazenada, com informações do processo que a possui

• Diminui a memória necessária para armazenar cada tabela de páginas, mas aumenta o tempo necessário para a procura na tabela quando ocorre uma referência de página

• Utiliza-se tabelas hash para limitar a procura para uma ou poucas entradas na tabela de páginas

Sistemas de Computação

Arquitetura de tabela de páginas invertida

Sistemas de Computação

Páginas compartilhadas

• Código compartilhado– Uma cópia de código somente-leitura (reentrante) é compartilhada

entre processos (editores de texto, compiladores, sistemas de janelas)

– Código compartilhado deve aparecer no mesmo local no espaço de endereçamento lógico de todos os processos

• Códigos e dados privados– Cada processo mantém uma cópia separada do código e dos dados – As páginas para o código e dados privados podem aparecer em

qualquer local do espaço de endereçamento lógico

Sistemas de Computação

Exemplo de páginas compartilhadas

Sistemas de Computação

Segmentação

• Esquema de gerenciamento de memória que suporta uma visão da memória física mais próxima à do usuário

• Um programa é uma coleção de segmentos. Um segmento é uma unidade lógica, tal como um programa principal, procedimento, método, objeto, variáveis locais e globais, blocos comuns, pilha, tabela de símbolos, arrays

Sistemas de Computação

Visão do usuário de um programa

Sistemas de Computação

Visão lógica da segmentação

1

3

2

4

1

4

2

3

espaço do usuário espaço de memória física

Sistemas de Computação

Arquitetura de segmentação

• Um endereço lógico consiste da tupla: <número-segmento, deslocamento>

• Tabela de segmentos – mapeia endereços físicos de duas dimensões

• Cada entrada na tabela possui:– base – contém o endereço físico inicial onde o segmento reside na

memória – limite – especifica o tamanho do segmento

Sistemas de Computação

Arquitetura de segmentação

• Registrador base de segmento de tabela (STBR)aponta para a localização do segmento na memória

• Registrador de tamanho do segmento da tabela (STLR) indica o tamanho do segmento

Sistemas de Computação

Arquitetura de segmentação

• Relocação– dinâmica– realizada por tabela de segmentação

• Compartilhamento– segmentos compartilhados– mesmo número de segmento

• Alocação– first fit/best fit– fragmentação externa

Sistemas de Computação

Arquitetura de segmentação

• Proteção é fornecida com associação a cada entrada da tabela de segmentos das seguintes informações:

– bit de validação = 0 segmento ilegal– privilégios read/write/execute

• Bits de proteção são associadas com segmentos; compartilhamento de código ocorre no nível de segmento

• Como os segmentos variam em tamanho, a alocação de memória é um problema de alocação dinâmica de memória

Sistemas de Computação

Hardware para segmentação

Sistemas de Computação

Exemplo de segmentação

Sistemas de Computação

Compartilhamento de segmentos

Sistemas de Computação

Tradução de endereços no Intel 30386