Gerência de Memória: Memória Principal
Upcoming SlideShare
Loading in...5
×
 

Gerência de Memória: Memória Principal

on

  • 1,849 views

Fornecer uma descrição detalhada sobre várias formas de organizar o hardware de memória

Fornecer uma descrição detalhada sobre várias formas de organizar o hardware de memória

Discutir técnicas de gerência de memória, incluindo paginação e segmentação

Statistics

Views

Total Views
1,849
Views on SlideShare
1,849
Embed Views
0

Actions

Likes
0
Downloads
120
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Gerência de Memória: Memória Principal Gerência de Memória: Memória Principal Presentation Transcript

  • Sistemas Operacionais I Gerência de Memória: Memória Principal Prof. Alexandre Duarte : http://alexandrend.com Centro de Informática | Universidade Federal da Paraíba Estes slides são baseados no material que acompanha o livro Operating Systems Concepts de Silberschatz, Galvin and Gagne
  • Objetivos  Fornecer uma descriç ão detalhada sobre várias formas de organizar o hardware de memó ria  Discutir técnicas de gerência de memó ria, incluindo paginaç ão e segmentaç ão
  • Antecedentes  Os programas precisam ser trazidos para a memó ria principal para poderem ser executados (criaç ão de um processo)  Memó ria principal e registrados são as únicas unidades de armazenamento acessadas diretamente pela CPU  O acesso a um registrador é feito em um (ou menos) ciclos de CPU  Acessos à memó ria principal podem levar mais ciclos  A memó ria cache se situa entre a memó ria principal e os registradores  Mecanismos de proteç ão de memó ria são necessários para garantir a operaç ão correta
  • Registradores de base e limite  Um par de registradores (base e limite) definem um espaç o de endereç amento ló gico
  • Vinculando instruções e dados à memória  Tempo de compilaç ão: Se a localizaç ão de memó ria for conhecida a priori, o compilador pode gerar có digo absoluto; requer recompilaç ão caso a localizaç ão mude  Tempo de carga: Requer a geraç ão de có digo relocável se a localizaç ão de memó ria não for conhecida em tempo de compilaç ão  Tempo de execuç ão: A vinculaç ão é adiada até o momento da execuç ão caso o processo possa ser movido de um segmento de memó ria para outro durante a execuç ão. Requer suporte de hardware para mapas de endereç amento
  • Etapas do processamento de um programa do usuário
  • Endereçamento Lógico x Físico  O conceito de espaç o de endereç amento ló gico, que é vinculado a um espaç o de endereç amento físico separado é crucial para a gerência de memó ria  Endereç o ló gico: gerado pela CPU, também conhecido como endereç o virtual  Endereç o físico: endereço visto pela unidade de memó ria  Endereç os ló gicos e físicos são os mesmos em esquemas de vinculaç ão de endereç os em tempo de compilaç ão ou tempo de carga e são diferentes em esquemas de vinculaç ão de endereç os em tempo de execuç ão
  • Unidade de Gerência de Memória (MMU)  Dispositivo de hardware que mapeia um endereç o virtual em um endereç o físico  Na MMU, o valor de um registrador de relocaç ão é somado a todo endereç o gerado por um processo do usuário no momento em que ele é enviado a memó ria  O programa lida apenas com endereç os ló gicos; ele nunca vêos endereç os físicos reais
  • Uso do registrador de relocação
  • Carregamento dinâmico  Uma rotina não é carregada até ser invocada  Melhor utilizaç ão do espaç o de memó ria; rotinas não utilizadas nunca são carregadas  Útil quando grandes quantidade de có digo são necessárias para lidar com casos infrequentes  Não requer nenhum suporte especial do sistema operacional
  • Ligação dinâmica  A ligaç ão é adiada até o momento da execuç ão  Um pequeno pedaç o de có digo (stub) é utilizado para localizar a rotina apropriada em uma biblioteca residente na memó ria  O stub substitui a si pró prio com o endereç o da rotina e a executa  O sistema operacional é necessário para verificar se a rotina estáno espaç o de endereç amento do processo  Ligaç ão dinâmica é particularmente útil para bibliotecas compartilhadas
  • Swapping  Um processo pode ser removido temporariamente da memó ria para um armazenamento secundário e depois trazido de volta para continuar sua execuç ão  Armazenamento secundário – disco rápido, grande o suficiente para armazenar copias dos programas em memó ria de todos os usuários; precisa fornecer acesso direto a essas có pias de memó ria  Roll out, roll in – variante de swapping, utilizada em algoritmos de escalonamento com prioridade; processos de baixa prioridade são removidos para que processos de mais alta prioridade possam ser carregados e executados  A maior parte do tempo de swap é gasto transferindo dados  Versões modificadas de um esquema de swapping são encontradas em praticamente todos os sistemas operacionais
  • Visão esquemática de swapping
  • Alocação contínua  A memó ria principal é geralmente dividida em duas partições:  Sistema operacional residente, geralmente na memó ria baixa, junto com o vetor de interrupç ões  Processos do usuário na parte alta da memó ria  Registradores de relocação são utilizados para proteger os processos dos usuários uns dos outros e também para evitar alterações em dados e có digos do sistema operacional  O registrador base contem o menor endereç o de memó ria permitido  O registrado de limite define o tamanho do espaç o de endereç amento – cada endereç o ló gico deve ser menor que o registrador de limite  A MMU mapeia os endereç os ló gicos dinamicamente
  • Suporte de hardware para relocação e limite
  • Alocação contínua  Alocaç ão com múltiplas partiç ões  Buraco – bloco de memó ria disponível; buracos de vários tamanhos são espalhados na memó ria  Quando um processo é criado ele é alocado em um buraco grande o suficiente para suas necessidades de memó ria  O sistema operacional mantem informaç ões sobre: a) partiç ões alocadas b) partiç ões livres (buracos) SO processo 5 processo 8 processo 2 SO processo 5 processo 2 SO processo 5 processo 2 SO processo 5 processo 9 processo 2 processo 9 processo 10
  • O problema da alocação dinâmica de espaço  First-fit: Aloca o primeiro buraco que for grande o suficiente  Best-fit: Alocar o menor buraco que for grande o suficiente; precisa pesquisar a lista inteira a menos que esteja ordenada por tamanho  Produz o menor buraco remanescente  Worst-fit: Aloca o maior buraco; também precisa percorrer toda a slista  Produz o maior buraco remanescente First-fit e best-fit são melhores que o worst-fit em termos de velocidade e utilizaç ão do espaç o!
  • Fragmentação  Fragmentaç ão externa – exige memó ria suficiente para atender uma requisiç ão mas ela não é contigua  Fragmentaç ão interna – a memó ria alocada pode ser levemente maior que a memó ria requisitada; esta diferenç a de memó ria faz parte da partiç ão mas não é utilizada  Reduzir fragmentaç ão utilizando compactaç ão  Ordena o conteúdo da memó ria em uma localidade para juntar todo o espaço livre em um grande bloco  Compactação só é possível com relocação dinâmica
  • Paginação  O espaç o de endereç amento ló gico de um processo pode ser não-contínuo; o processo recebe memó ria física na medida em que ela se torna disponível  A memó ria física é dividida em blocos de tamanho fixo chamados quadros (o tamanho é uma potência 2, entre 512 bytes e 8,192 bytes)  A memó ria ló gica é dividida também em blocos do mesmo tamanho chamados páginas  Para executar um programa de n páginas é preciso encontrar n quadros para carregar o programa  Uma tabela de paginaç ão é utilizada para traduzir endereç os ló gicos em endereç os físicos
  • Esquema de tradução de endereços  Os endereç os gerados pela CPU são divididos em duas partes:  Número da página (p) – utilizado como índice na tabela de paginaç ão que contem o endereç o base de cada página na memó ria física  Deslocamento (d) – combinado com o endereç o base define o endereç o físico a ser enviado para a unidade de memó ria  Para um determinado espaç o de endereç amento com 2m bits e páginas de tamanho 2n
  • Hardware de paginação
  • Modelo de paginação de memórias lógica e física
  • Exemplo de paginação Memó ria de 32-bytes com páginas de 4 bytes
  • Quadros livres Antes da alocaç ão Apó s alocaç ão
  • Implementação da tabela de paginação  Tabela de paginaç ão é mantida na memó ria principal  Page-table base register (PTBR) aponta para a base  Page-table length register (PRLR) indica o tamanho  Neste esquema, cada acesso a dados ou instruç ões requer dois acessos à memó ria. Um para a tabela de paginaç ão e outro para o dado/instruç ão  Este problema de dois acessos pode ser amenizado utilizando um cache de hardware especial chamado translation look-aside buffers (TLBs)
  •  Busca paralela Traduç ão de endereç o (p, d)  Se p estána memó ria associativa o valor de f é obtido  Se não, obter o valor de f da tabela de paginaç ão na memó ria Memória associativa Page # Frame #
  • Paginação utilizando TLBs
  • Tempo efetivo de acesso  Busca associativa = ε unidades de tempo  Assumir que um ciclo de memó ria dura 1 microssegundo  Taxa de acerto – porcentagem das vezes em que o número de uma página é encontrado no TLB; Taxa de acerto = α  Tempo efetivo de acesso (EAT) EAT = (1 + ε) α + (2 + ε)(1 – α) = 2 + ε – α
  • Proteção de memória  O mecanismo de proteç ão de memó ria associa um bit de proteç ão a cada quadro  Um bit Válido-inválido anexado a cada entrada na tabela de paginaç ão:  “válido” indica que a página associada estáno espaç o de endereç amento ló gico do processo  “inválido” indica que a página não estáno espaç o de endereç amento ló gico do processo
  • O bit Válido (v) ou Inválido (i) na tabela de paginação
  • Páginas compartilhadas  Có digo compartilhado  Uma có pia apenas de leitura do có digo compartilhada entre vários processos  O có digo compartilhado precisa aparecer no mesmo local no espaç o de endereç amento ló gico de todos os processos  Có digo e dados privados  Cada processo mantém uma có pia separada dos dados e có digo  As páginas para o có digo privado podem aparecer em qualquer lugar no espaç o de endereç amento ló gico
  • Exemplo do uso de páginas compartilhadas
  • Estrutura da tabela de paginação  Paginaç ão hierárquica  Tabelas de paginaç ão com hash  Tabela de paginaç ão invertida
  • Tabela de paginação hierárquica  Quebra o espaç o de endereç amento ló gico em múltiplas tabelas de paginaç ão  Uma técnica simples é paginaç ão em dois níveis
  • Paginação em dois níveis
  •  Espaç o de endereç amento ló gico (máquina de 32-bit com páginas de 4K) é divido em :  Um número de página de 20 bits  Um deslocamento na página de 12 bits  Uma vez que a tabela de paginaç ão é também paginada, o número da página é também dividido em duas partes:  Um número de página de 10 bits  Um deslocamento na página de 10 bits  Portanto, os endereç os ló gicos são construídos da seguinte forma: onde pi é o índice na tabela de paginaç ão externa e p2 é o deslocamento dentro da página da tabela de paginaç ão externa Exemplo de paginação em dois níveis
  • Esquema de tradução de endereço
  • Paginação em três níveis
  • Tabelas de paginação com hash  Comum em espaç o de endereç amento com mais de 32 bits  O número da página virtual é submetido a uma funç ão hash e o resultado aponta para uma entrada na tabela de paginaç ão  Cada entrada na tabela de paginação contem uma lista de elementos cujo hash apontou para a mesma localidade (colisões)  O número da página virtual é então comparado com os valores nessa lista para localizar o quadro na memó ria física
  • Tabela de paginação com hash
  • Tabela de paginação invertida  Uma entrada para cada quadro na memó ria principal  As entradas da tabela são os endereç os das páginas virtuais armazenadas nessas localizaç ão de memó ria, com informaç ão sobre o processo proprietário  Diminui a quantidade de memó ria necessária para armazenar a tabela de paginaç ão mas aumenta o tempo necessário para consultar a tabela  Usar hash para limitar a busca a uma, ou pelo menos, a umas poucas entradas
  • Arquitetura de uma tabela de paginação invertida
  • Segmentação  Esquema de gerência de memó ria que reflete a visão que o usuário tem da memó ria  Um programa é uma coleç ão de segmentos  Um segmento representa uma unidade ló gica, como: Programa principal Procedimento Funç ão Método Objeto Variáveis locais Variáveis globais Pilha Tabela de símbolos
  • Visão do usuário sobre um programa
  • Arquitetura de segmentação  O espaço de endereçamento ló gico consiste em uma tupla: <número do segmento, deslocamento>,  Tabela de segmentos – mapeia os endereços virtuais em endereços físicos; cada entrada tem:  base – contem o endereç o inicial do segmento na memó ria  limite – especifica o tamanho do segmento  Segment-table base register (STBR) aponta para a base da tabela de segmentação na memó ria  Segment-table length register (STLR) indica o número de segmentos utilizados por um programa; o número de segmento s é legal se s < STLR
  • Arquitetura de segmentação  Proteç ão  A cada entrada na tabela de segmentação associamos:  Bit de validade = 0 ⇒ segmento ilegal  Privilégios de leitura/escrita/execuç ão  Bits de proteç ão associados a segmentos; compartilhamento de có digo ocorre no nível dos segmentos  Uma vez que o tamanho dos segmentos varia, alocaç ão de memó ria passa a ser uma problema de alocaç ão dinâmica de armazenamento
  • Hardware para segmentação
  • Exemplo do uso de segmentação