capítulo 8: memória principal -...

64
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Capítulo 8: Memória Principal

Upload: phamkien

Post on 15-Oct-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Capítulo 8:Memória Principal

Page 2: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.2 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Capítulo 8: Gerenciamento de memória

Fundamentos

Troca de processos (Swapping)

Alocação de memória contígua

Segmentação

Paginação

Estrutura da tabela de páginas

Exemplo: Arquiteturas Intel 32 and 64-bits Architectures

Exemplo: Arquitetura ARM

Page 3: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.3 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Objetivos

Fornecer uma descrição detalhada de várias maneiras de organizar a memória doc omputador

Discutir várias técnicas de gerenciamento de memória, incluindo paginação e segmentação

Fornecer uma descrição detalhada do Intel Pentium, que suporta segmentação pura e segmentação com paginação

Page 4: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.4 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Fundamentos

O programa deve ser trazido (do disco) para a memória e colocado dentro de um processo para ser executado

A memória principal e os registradores são os únicos meios de armazenamento que a CPU pode acessar diretamente

A unidade de memória só vê um fluxo de endereços + solicitações de leitura ou endereço + dados e solicitações de gravação

O acesso ao registrador ocorre em um clock de CPU (ou menos)

A memória principal pode levar muitos ciclos, causando uma parada (stall)

A memória cache fica entre a memória principal e os registradores da CPU

Uma proteção da memória é necessária para garantir o funcionamento correto das operações do sistema

Page 5: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.5 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Os registradores Base e Limite

Um par de registradores base e limite definem o espaço de endereçamento lógico

A CPU deve checar todo acesso de memória gerado no modo usuário para ter certeza que está entre a base e o limite para esse usuário

Page 6: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.6 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Hardware para a proteção do endereço

Page 7: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.7 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Vinculação de endereços

Programas em disco, prontos para serem trazidos para a memória para serem executados, formam uma fila de entrada

Os endereços são representados de maneiras diferentes em diferentes estágios da vida de um programa:

Endereços de código fonte são geralmente simbólicos

Endereços de código compilados vinculam-se a endereços relocáveis

ou seja, “14 bytes a partir do início deste módulo”

O ligador (linker) ou o carregador (loader) vinculará endereços relocáveis a endereços absolutos

ou seja, 74014

Cada vinculação mapeia um espaço de endereçamento para outro

Page 8: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.8 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Vinculação de instruções e dados a endereços de memória

A vinculação (atribuição) de a instruções e dados para endereços de memória pode acontecer em três fases diferentes:

Tempo de compilação: Se a localização da memória for conhecida a priori, o código absoluto pode ser gerado; deve recompilar o código se a posição inicial mudar.

Tempo de carga: deve gerar código relocável se o local da memória não for conhecido em tempo de compilação.

Tempo de execução: a vinculação (atribuição) é deixada para ser feita somente em tempo de execução se o processo pode se mover durante sua execução de um segmento de memória para outro.

Precisa de suporte de hardware para mapeamento de endereços (ex.: registradores base e limite).

Page 9: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.9 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multistep Processing of a User Program

Page 10: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.10 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

O conceito de um espaço de endereçamento lógico que é vinculado a um espaço de endereçamento físico separado é fundamental para o gerenciamento adequado da 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 tempo de compilação e de endereçamento de carga; endereços lógicos (virtuais) e físicos diferem no esquema de vinculação de endereço de tempo de execução

Espaço de endereço lógico é o conjunto de todos os endereços lógicos gerados por um programa

Espaço de endereço físico é o conjunto de todos os endereços físicos gerados por um programa

Espaço de Endereçamento Lógico vs. Físico

Page 11: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.11 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Unidade de Geranciamento de Memória (MMU)

Em inglês é Memory Management Unit (MMU)

Dispositivo de hardware que, em tempo de execução, mapeia o endereço virtual para o físico

Pode ser utilizado com vários métodos

Para começar, considere um esquema simples em que o valor no registrador de realocação é adicionado a cada endereço gerado por um processo do usuário no momento em que é enviado à memória.

O registrador base agora é chamado de registro de relocação

O MS-DOS no Intel 80x86 usava 4 registradores de relocação

O programa do usuário lida com endereços lógicos; nunca vê os endereços físicos reais

A ligação em tempo de execução ocorre quando é feita referência à localização na memória

O endereço lógico é vinculado a endereços físicos

Page 12: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.12 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Relocação Dinâmica usando um registrador de relocação

Page 13: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.13 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Carga Dinâmica

A rotina não é carregada até ser chamada

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

Todas as rotinas são mantidas em disco no formato de carga realocável

Útil quando grandes quantidades de código são necessárias para lidar com casos que ocorrem com pouca frequência

Não é necessário suporte especial do sistema operacional Implementado através do design do programa O sistema operacional pode ajudar fornecendo bibliotecas para

implementar o carregamento dinâmico

Page 14: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.14 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Ligação dinâmica

Ligação estática – as bibliotecas do sistema e o código do programa são combinados pelo carregador dentro da imagem do programa binário

Ligação dinâmica – A Ligação (linking) é postergada até o momento da execução.

Pequenas porções de código, stub, usado para localizar a rotina apropriada da biblioteca residente na memória

Stub sobrepõe ele mesmo com o endereço da rotina e executa a rotina

O sistema operacional verifica se a rotina está no endereço de memória dos processos

Se não estiver no espaço de endereçamento, adiciona ao espaço de endereçamento

A ligação dinâmica é particularmente útil para bibliotecas

Sistema também conhecido como bibliotecas compatilhadas

Considere a aplicabilidade para corrigir bibliotecas do sistema

Versionamento pode ser necesário e útil

Page 15: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.15 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Swapping

Um processo pode ser transferido (swapped) temporariamente da memória principal para uma memória secundária (backing store), para depois ser transferido de volta à memória principal, a fim de que a execução do processo continue.

O espaço total da memória física dos processos pode exceder a memória física.

Memória Secundária – disco rápido grande o suficiente para acomodar copias de

todas as imagens da memória principal para todos os usuários; deve prover acesso direto as imagens da memória.

Roll out, roll in – variação da política de troca de processos usada para algoritmos de escalonamento baseados em prioridade; Processo de baixa prioridade é transferido para a memória secundária para um processo de prioridade mais alta ser carregado e executado.

Maior parte do tempo de troca de processos é tempo de transferência; tempo total de transferência é diretamente proporcional a quantidade de memória transferida.

Sistemas mantém uma ready queue (fila de processos prontos) de processos prontos que mantém imagens no disco

Page 16: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.16 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Swapping (Cont.)

O processo que sofreu swap precisa voltar para os mesmos endereços físicos?

Depende do método de ligação de endereços

Além disso, considere E/S pendente de/para o espaço de memória do processo

Versões modificadas de swap são encontradas em muitos sistemas (por exemplo, UNIX, Linux e Windows)

Trocar normalmente desabilitado

Iniciado se mais do que a quantidade limite de memória estiver alocada

Desativado novamente assim que a demanda de memória for reduzida abaixo do limite

Page 17: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.17 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Visão esquemática de Swapping

Page 18: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.18 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tempo da troca de contexto com Swapping

Se o próximo processo a ser colocado na CPU não está dentro da memória, é necessário adicionar um processo na swap (swap out) e trazer o processo alvo da swap (swap in)

O tempo da troca de contexto pode ser bem grande

Um processo de 100MB ao ser transferido para a swap em disco rígido com a taxa de transferência de 50MB/sec

Tempo de Swap out: 2000 ms

Adicionado ao swap in de um processo de mesmo tamanho

Tempo da troca de contexto total com swap: 4000ms (4 seconds)

Pode reduzir o tempo se reduzir o tamanho da memória trocada – ao saber o quanto de memória realmente está sendo usada

Existem chamadas de sistema para informar o SO o uso de memória via request_memory() e release_memory()

Page 19: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.19 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Context Switch Time and Swapping (Cont.)

Outras restrições no swapping

E/S pendente – não é possível trocar pois a E/S pode ocorrer em um processo incorreto

Ou sempre transferir E/S para o espaço do kernel e, em seguida, para o dispositivo de E/S

Conhecido como buffer duplo, adiciona sobrecarga

A troca padrão não é usada em sistemas operacionais modernos

Mas uma versão modificada comum

Faça o swap somente quando a memória livre for extremamente baixa

Page 20: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.20 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Alocação Contígua A memória principal é normalmente divida em duas partes:

Parte residente do sistema operacional, normalmente mantida na parte baixa da memória com o vetor de interrupções.

Processos do usuário mantidos na parte alta da memória.

Registradores de relocação são usados para proteger processos dos usuários uns dos outros, e de alterar os códigos e dados do sistema operacional.

Registrador base contém o valor do menor endereço físico;

Registrador limite contém o tamanho do intervalo dos endereços lógicos – cada endereço lógico deve ser menor que o registrador limite.

MMU mapeia o endereço lógico dinamicamente

Page 21: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.21 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Suporte de Hardware comregistradores de relocação e limite

Page 22: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.22 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Alocação Contígua (Cont.)

Alocação com Diversas Partições

Bloco Livre (Hole) – bloco de memória disponível; blocos de vários tamanhos são espalhados pela memória.

Quando um processo chega, é alocada memória de um bloco livre grande o suficiente para acomodá-lo.

Sistema Operacional mantém informações sobre:a) partições alocadas b) partições livres (holes)

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: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.23 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Multiple-partition allocation

Alocação de Múltiplas Partições

Grau de multiprogramação limitado pelo número de partições

Tamanhos de partição variáveis para eficiência (dimensionados para as necessidades de um determinado processo)

Bloco Livre (Hole) - bloco de memória disponível; blocos livres de vários tamanhos estão espalhados por toda a memória

Quando um processo chega, é alocada memória de um buraco grande o suficiente para acomodá-lo

Saída de processo libera sua partição, partições livres adjacentes combinadas

Sistema operacional mantém informações sobre:

a) partições atribuídas b) partições livres (buraco)

Page 24: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.24 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Armazenamento Dinâmico-Problema de Alocação

Como satisfazer uma requisição de tamanho n com uma lista de blocos livres

First-fit (Primeira): Aloca o primeiro bloco livre que seja grande o suficiente para satisfazer a requisição.

Best-fit (Melhor): Aloca o menor bloco livre que seja grande o suficiente; deve procurar na lista inteira, a menos que esta esteja ordenada por tamanho.

Produz menor bloco livre de sobra

Worst-fit (Pior): Aloca o maior bloco livre; deve também procurar na lista inteira.

Produz maior bloco livre de sobra

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

Page 25: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.25 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Fragmentação

Fragmentação Externa – espaço de memória total existe para satisfazer uma requisição, mas é não contíguo.

Fragmentação Interna – memória alocada pode ser ligeiramente maior que a memória requerida; esta diferença de tamanho é na memória interna a partição, que não está sendo utilizada.

Uma análise do first fit revelou que a cada N blocos alocados, 0,5*N blocos são perdidos por causa da fragmentação

1/3 pode ser inutilizável → regra de 50 por cento

Fragmentação externa é reduzida com compactação

Deslocar os blocos de memória de maneira a colocá-los juntos em um grande bloco.

Compactação é possível somente se relocação é dinâmica, e é feita em tempo de execução.

Problemas de E/S

Trancamento de jobs na memória enquanto ele está envolvido em E/S.

Realizar E/S somente em buffers do SO.

Page 26: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.26 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Paginação

Espaço de endereçamento Lógico de um processo pode ser não contíguo; processo é alocado para a memória física sempre que existir espaço disponível

Divide a memória física em partes de tamanho fixo chamadas de blocos (frames) (tamanho é potência de 2, entre 512 bytes e 8.192 bytes)

Divide memória lógica em partes do mesmo tamanho chamadas de páginas

Mantém controle de todos os blocos livres

Para executar um programa com n páginas, necessita encontrar n blocos livres e carregar o programa

Alterar uma tabela de páginas para traduzir endereços lógicos em físicos

Ainda existe fragmentação Interna

Page 27: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.27 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Esquema de Tradução de Endereços

Endereço gerado pela CPU é divido em:

Número da Página (p) – usada como um índice em uma tabela de páginas que contém o endereço base de cada página na memória física

Deslocamento na Página (d) – combinado com o endereço base para definir o endereço de memória que é enviado a unidade de memória

Para um determina espaço de endereçamento lógico 2m e um tamanho de página 2n

número da página deslocamento

p d

m - n n

Page 28: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.28 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura para Tradução de Endereços

Page 29: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.29 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exemplo de Paginação

Page 30: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.30 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exemplo de Paginação

Memória de 32 bytes e páginas de 4 bytes

Page 31: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.31 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Blocos Livres

Antes da Alocação Após a Alocação

Page 32: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.32 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Implementação de Tabela de Páginas

Tabela de Páginas é mantida na memória principal.

Registrador base da tabela de páginas(Page-table base register - PTBR)

aponta para a tabela de páginas

Registrador tamanho da tabela de páginas (Page-table length register – PRLR)

indica quantos endereços ela ocupa

Neste esquema cada acesso a dado/instrução requer dois acessos a memória.

Um para a tabela de páginas e outro para o dado/instrução

O problema pode ser resolvido com o uso de uma memória cache especial, pequena, de acesso rápido, chamada de memória associativa ou translation look-aside buffers (TLBs)

Algumas TLBs armazenam identificadores de espaços de endereço (address-space identifiers - ASIDs) em cada entrada da TLB – identificam cada processo de forma única para prover proteção no espaço de endereçamento daquele processo

Page 33: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.33 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Memória Associativa

Memória Associativa – busca em paralelo

Tradução de Endereços (p, d)

Se p está em um registrador associativo, obtém o no do bloco diretamente

Em caso contrário obtém o no do bloco da tabela de páginas na memória

no da Página no do Bloco

Page 34: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.34 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Hardware de Paginação com TLB

Page 35: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.35 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tempo de Acesso Efetivo

Busca Associativa = unidades de tempo

Assume que o tempo de ciclo de memória é 1 microssegundo

Taxa de Sucesso (Hit ratio) – porcentagem de vezes que um número de página é encontrado nos registradores associativos; razão é relacionada com o número de registradores associativos.

Taxa de Sucesso =

Tempo Médio de Acesso ou Effective Access Time (EAT)

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

= 2 + –

Page 36: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.36 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Proteção de Memória

Proteção de Memória implementada através de bits de proteção associados a cada bloco.

Bit válido-inválido associado para cada entrada na tabela de páginas:

“válido” indica que a página associada está no espaço de endereçamento lógico do processo, e portanto é o acesso é legal.

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

Page 37: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.37 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Bit Valido (v) ou Invalido (i) em uma Tabela de Páginas

Page 38: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.38 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Páginas Compartilhadas

Compartilhamento de Código

Uma cópia de código somente leitura (reentrante) compartilhada entre processos (ex.: editores de texto, compiladores, sistemas de janelas)

Código compartilhado deve aparecer na mesma localização no espaço de endereçamento lógico de todos processos

Códigos e Dados privados

Cada processo mantém uma cópia separada de códigos e dados

As páginas para códigos e dados privados podem aparecer em qualquer endereço no espaço de endereçamento lógico

Page 39: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.39 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exemplo de Páginas Compartilhadas

Page 40: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.40 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Estrutura da Tabela de Páginas

Tabelas de Páginas Hierárquicas

Tabela de Páginas com função Hash (Hashed Page Tables)

Tabela de Página Invertida

Page 41: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.41 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tabelas de Páginas Hierárquicas

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

Uma técnica simples é tabela de páginas em dois níveis

Page 42: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.42 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tabela de páginas em dois níveis

Page 43: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.43 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exempo de Paginação em dois níveis

Um endereço lógico (em máquinas de 32-bit com tamanho de páginas 4K) é divido em: um número de páginas de 20 bits. um deslocamento na página de 12 bits.

Uma vez que a tabela de páginas é paginada, o número da página é dividido em: um número de página de 10-bit. uma posição na página de 10-bit.

Portanto, um endereço lógico é divido como a seguir:

onde p1 é um índice na tabela de páginas externa, e p2 é a posição na página da tabela de páginas externa.

no da página deslocamento

p1 p2 d

10 10 12

Page 44: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.44 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Esquema de Tradução de Endereços

Esquema de tradução de endereços para uma arquitetura paginada em dois níveis de 32-bit

Page 45: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.45 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Esquema de Paginação em três níveis

Page 46: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.46 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tabela de Páginas com função Hash

Comum em espaços de endereçamentos > 32 bits

Ao número da página virtual é aplicada uma função hash que gera a localização na tabela de páginas.

Em cada posição da tabela de páginas pode existir um encadeamento de elementos cuja função hash gera a mesma localização.

Números de página virtual são comparados nesse encadeamento procurando por endereço igual.

Se é encontrado, o bloco físico correspondente é obtido.

Page 47: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.47 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tabela de Páginas com função Hash (Cont.)

Page 48: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.48 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tabela de Página Invertida

Uma entrada para cada página real (bloco) de memória

Cada entrada contém o endereço virtual da página armazenada naquele bloco da memória, com informações sobre o processo do qual essa página faz parte

Diminui a quantidade de memória necessária para armazenar cada tabela de páginas, mas aumenta o tempo de pesquisa na tabela em cada referência a uma página

Uso de função hash para limitar a pesquisa a apenas uma — ou no máximo a algumas — entradas na tabela de páginas

Page 49: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.49 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura de Tabela de Página Invertida

Page 50: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.50 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Segmentação

Esquemas de gerenciamento de memória que suportam a visão do usuário da memória

Um programa é uma coleção de segmentos. Um segmento é uma unidade lógica, como por exemplo:

programa principalprocedimentofunçãométodoobjetovariáveis locais, variáveis globaisbloco comumpilhatabela de símbolos vetores

Page 51: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.51 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Visão do Usuário de um Programa

Page 52: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.52 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Visão Lógica da Segmentação

1

3

2

4

1

4

2

3

user space

physical memory space

Page 53: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.53 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura da Segmentação

Endereço lógico consiste de duas partes:

< número do segmento, posição nesse segmento >,

Tabela de Segmentos – mapeia endereços físicos bi-dimensionais; cada entrada na tabela possui:

base – contém o endereço físico inicial no qual o segmento reside na memória

limite – especifica o tamanho do segmento

Registrador Base da Tabela de Segmentos ou Segment-table base register (STBR) aponto para a localização da tabela de segmentos na memória

Registrador de tamanho da tabela de segmentos ou Segment-table length register (STLR) indica o número de segmentos usados por um programa

número de segmento s é legal se s < STLR

Page 54: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.54 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura da Segmentação (Cont.)

Relocação

Dinâmica

Por tabela de segmento

Compartilhamento

Segmentos compartilhados

Mesmo número de segmento

Alocação

First-fit (Primeira)/ Best-fit (Melhor)

Fragmentação Externa

Page 55: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.55 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura da Segmentação(Cont.)

Proteção. Com cada entrada na tabela de segmento é associado:

Bit de validação = 0 segmento ilegal

Privilégios de leitura/escrita/execução

Bits de proteção associados com segmentos; compartilhamento de código ocorre em nível de segmento

Uma vez que segmentos variam em tamanho, alocação de memória é um problema dinâmico

Um exemplo de segmentação é apresentado no diagrama a seguir

Page 56: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.56 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura de Tradução de Endereços

Page 57: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.57 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exemplo de Segmentação

Page 58: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.58 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Exemplo: Intel Pentium

Suporta tanto segmentação quanto segmentação com paginação

CPU gera um endereço lógico Dado a unidade de segmentação

Que produz um endereço linear Endereço linear é dado a unidade de paginação

Que gera um endereço físico na memória principal

Forma de unidades de paginação é equivalente ao MMU

Page 59: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.59 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Tradução de endereços lógicos para físicos no Pentium

Page 60: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.60 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Segmentação no Intel Pentium

Page 61: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.61 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Arquitetura de Paginação do Pentium

Page 62: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.62 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Endereço Linear no Linux

Quebrado (dividido) em quatro partes:

Page 63: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

8.63 Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Paginação em Três Níveis no Linux

Page 64: Capítulo 8: Memória Principal - jeiks.netjeiks.net/wp-content/uploads/2018/03/SO-Slide-08-Silberchatz.pdf · Operating System Concepts – 8th Edition Silberschatz, Galvin and Gagne

Silberschatz, Galvin and Gagne ©2009Operating System Concepts – 8th Edition

Fim do capítulo 8