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

61
Sistemas de Computação Gerenciamento de memória

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

Page 1: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Gerenciamento de memóriaGerenciamento de memória

Page 2: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 3: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 4: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 5: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Processamento do programa do usuário

Page 6: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 7: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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.

Page 8: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

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

Page 9: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 10: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 11: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 12: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Overlays para um montador em doispassos

Page 13: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 14: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 15: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Esquema de swapping

Page 16: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 17: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 18: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 19: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 20: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Suporte de hardware para registradoreslimite e de relocação

Page 21: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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)

Page 22: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 23: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 24: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 25: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 26: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 27: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 28: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 29: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Arquitetura para tradução de endereços

Page 30: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Exemplo de paginação

Page 31: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Exemplo de paginação

Page 32: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Frames livres

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

Page 33: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 34: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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)

Page 35: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Hardware de paginação com TLB

Page 36: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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 + –

Page 37: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 38: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

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

Page 39: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Estruturação da tabela de páginas

• Paginação hierárquica

• Paginação por hash

• Tabela de página invertida

Page 40: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 41: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 42: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 43: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

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

Page 44: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Esquema de tradução de endereços

Page 45: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 46: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Tabela de páginas com hashing

Page 47: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 48: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Arquitetura de tabela de páginas invertida

Page 49: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 50: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Exemplo de páginas compartilhadas

Page 51: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 52: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Visão do usuário de um programa

Page 53: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 54: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 55: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 56: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 57: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

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

Page 58: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Hardware para segmentação

Page 59: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Exemplo de segmentação

Page 60: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Compartilhamento de segmentos

Page 61: GerenciamentoGerenciamento de de memmem óóriariasimone/sistemascomp/contaulas/12_GERM.pdfEsquema de tradu ç ão de endere ç o • O endere ç o gerado pela CPU é dividido em duas

Sistemas de Computação

Tradução de endereços no Intel 30386