Buscar

Aula10_Gerência_de_Memória - parte 2

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Aula 10 
Capítulo 9 – Gerência de Memória 
• 9.1 Conceitos Básicos 
• 9.2 Swapping 
• 9.3 Alocação de memória contígua 
• 9.4 Paginação 
• 9.5 Segmentação 
• 9.6 Segmentação com paginação 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4 Paginação 
• A paginação é um esquema de gerência de memória 
que permite que o espaço de endereços físicos de um 
processo seja não contíguo. 
• A paginação evita o problema de ajustar os trechos de 
memória de tamanhos variados ao armazenamento 
de apoio. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.1 Método básico 
• O método básico para implementar a paginação 
envolve dividir a memória física em blocos de 
tamanho fixo, chamados quadros (frames). 
• E dividir a memória lógica em blocos de mesmo 
tamanho, chamados páginas. 
• Quando um processo tiver de ser executado, suas 
páginas são carregadas em quaisquer quadros de 
memória disponíveis a partir do armazenamento de 
apoio. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.1 Método básico 
• O armazenamento de apoio é dividido em blocos de 
tamanho fixo, que possuem o mesmo tamanho que os 
quadros de memória. 
• É definido uma tabela de página para traduzir 
endereços lógicos em físicos. 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O endereço gerado pela CPU é dividido em: 
• Número de página (p) – usado como um índice para a 
tabela de página, que contém o endereço de base de 
cada página na memória física. 
• Deslocamento de página (d) – combinado com o 
endereço de base para definir o endereço da memória 
física que é enviado para a unidade de memória. 
9.4.1 Método básico 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Hardware de paginação 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Modelo de paginação da memória lógica e 
física 
páginas quadros 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.2 Suporte de hardware 
• Cada SO possui seus próprios métodos para 
armazenar tabelas de página. 
• A maioria aloca uma tabela de páginas para cada 
processo. 
• Um ponteiro para a tabela de página é armazenado 
com outros valores de registrador (como o contador 
de instruções) no bloco de controle de processo 
(BCP). 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.2 Suporte de hardware 
• Quando o despachante é requisitado a iniciar um 
processo, ele precisa recarregar os registradores de 
usuário e definir os valores corretos da tabela de 
página do hardware a partir da tabela de página do 
usuário armazenada. 
– OBS.: Despachante – é o módulo que dá o controle 
da CPU ao processo selecionado pelo escalonador 
de curto prazo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.2 Suporte de hardware 
• A implementação de hardware da tabela de página 
pode ser feita de várias formas. 
• Nos casos mais simples, a tabela de página é 
implementada como um conjunto de registradores 
dedicados. 
• Esses registradores devem ser montados com uma 
lógica de altíssima velocidade, para tornar a tradução 
de endereço de paginação eficiente. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.2 Suporte de hardware 
• O uso desses registradores será satisfatório se a 
tabela for pequena (ex.: 256 entradas). 
• Nos computadores modernos a tabela de páginas é 
muito maior (ex.: 1 milhão de entradas). 
• Como o uso de registradores rápidos para 
implementar a tabela de página não é viável, utiliza-se 
a memória principal onde a tabela de página é 
mantida. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O registrador de base da tabela de página (PTBR) 
aponta para a tabela de página. 
• O registrador de extensão da tabela de página 
(PRLR) indica o tamanho da tabela de página. 
• Nesse esquema, cada acesso a dados/instrução exige 
dois acessos à memória. 
– O problema dos dois acessos à memória pode ser 
resolvido usando um cache de hardware especial de 
pesquisa rápida chamado memória associativa ou 
translation look-aside buffers (TLBs). 
9.4.2 Suporte de hardware 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• A TLB é memória associativa de alta velocidade. 
• Cada entrada da TLB consiste em duas partes: uma 
chave (ou tag) e um valor. 
• Quando a memória associativa recebe um item, ele é 
comparado com todas as chaves simultaneamente. 
Se o item for encontrado, o campo valor 
correspondente é retornado. 
9.4.2 Suporte de hardware 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Hardware de Paginação com TLB 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.3 Proteção 
• A proteção de memória em um ambiente paginado é 
realizada pela proteção dos bits associados com 
cada quadro. 
• Esses bits costumam ser mantidos na tabela de 
páginas e podem definir uma página como sendo de 
leitura/escrita ou somente de leitura. 
• Como todo acesso passa pela tabela de página, ao 
mesmo tempo que o endereço físico está sendo 
calculado, os bits de proteção podem ser verificados 
para checar se existem escritas sendo feitas em uma 
página somente leitura. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.3 Proteção 
• Uma tentativa de escrita em uma página somente de 
leitura causará uma interrupção do hardware para o 
SO (violação de proteção de memória). 
• Podemos criar um hardware para prover proteção 
somente de leitura, leitura/escrita ou somente de 
execução. Ou, fornecer bits de proteção separados 
para cada tipo de acesso. 
• Além do bit de proteção também é definido mais um 
bit que é geralmente anexado a cada entrada na 
tabela de página: um bit válido-inválido. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.3 Proteção 
• Quando esse bit é definido como “válido”, a página 
associada está no espaço de endereços lógicos do 
processo e, portanto, é uma página legal (ou válida). 
• Quando o bit é definido como “inválido”, a página não 
está no espaço de endereços lógicos do processo. 
• Os endereços ilegais são interceptados pelo uso do 
bit “válido-inválido”. 
• O SO define esse bit para cada página, concedendo 
ou rejeitando os acessos à página. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.3 Proteção 
• Quando esse bit é definido como “válido”, a página 
associada está no espaço de endereços lógicos do 
processo e, portanto, é uma página legal (ou válida). 
• Quando o bit é definido como “inválido”, a página não 
está no espaço de endereços lógicos do processo. 
• Os endereços ilegais são interceptados pelo uso do 
bit “válido-inválido”. 
• O SO define esse bit para cada página, concedendo 
ou rejeitando os acessos à página. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Bit Válido (v) ou Inválido (i) em uma Tabela 
de Página 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.4 Estrutura da Tabela de Página 
• Vamos explorar algumas das técnicas mais comuns 
para estruturar a tabela de página: 
– Paginação Hierárquica 
– Tabelas de Página com Hash 
– Tabelas de Página Invertidas 
Sistemas Operacionais com Java 
•A maioria dos sistemas de computação modernos 
suporta um grande espaço de endereçamento lógico 
(232 a 264). 
• Nesse tipo de ambiente, a própria tabela de página se 
torna excessivamente grande. 
• A solução simples para esse problema é dividir a 
tabela de página em partes menores. 
• Uma forma é usar um algoritmo de paginação de dois 
níveis, no qual a tabela de página em si também é 
paginada. 
 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.4.1 Paginação hierárquica 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Esquema de 
Tabela de Página de Dois Níveis 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Exemplo de Paginação em Dois Níveis 
• Assim, um endereço lógico é representado da 
seguinte forma: 
 
 
 
 
 
 
Onde p1 é um índice para a tabela de página mais 
externa e p2 é o deslocamento dentro da página da 
tabela de página mais interna. 
Número de página Deslocamento de página 
p1 p2 d 
10 10 12 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.4.2 Tabelas de Página com Hash 
• Uma técnica comum para tratar de espaços de 
endereço maiores que 32 bits é usar uma tabela de 
página com hash, com o valor de hash sendo o 
número da página virtual. 
• Cada entrada na tabela de hash contém uma lista 
encadeada de elementos que se dirigem para o 
mesmo local. 
• Os números de página virtuais são comparados nessa 
lista à procura de uma ocorrência. Se uma for 
encontrada, o quadro físico correspondente é 
extraído. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Tabela de Página com Hash 
Sistemas Operacionais com Java 
• Uma tabela de página invertida tem uma entrada para 
cada página real (ou quadro) de memória. 
• Cada entrada consiste no endereço virtual da página 
armazenada nesse local da memória real, com 
informações sobre o processo que possui essa 
página. 
• Assim, somente uma tabela de página está no 
sistema, e ela tem apenas uma entrada para cada 
página da memória física. 
 
 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.4 Tabela de Página Invertida 
 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Arquitetura da 
Tabela de Página Invertida 
pid – identificador do espaço de endereços 
p – número da página 
Se for encontrada uma 
combinação, na entrada i, 
então o endereço físico <i, 
deslocamento> é gerado. 
Se nenhuma combinação 
for encontrada, então foi 
realizado um acesso a 
endereço ilegal. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.5 Páginas Compartilhadas 
• Outra vantagem da paginação é a possibilidade de 
compartilhar o código comum. 
• Código compartilhado 
– Uma cópia do código somente leitura (reentrante) 
compartilhada entre os processos (por exemplo, 
editores de texto, compiladores, sistemas de janela). 
– O código compartilhado precisa aparecer no mesmo 
local no espaço de endereçamento lógico de todos os 
processos. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
9.4.5 Páginas Compartilhadas 
• Código 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 lugar no espaço de 
endereçamento lógico. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Exemplo de Páginas Compartilhadas 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Um aspecto importante da gerência de memória que 
se tornou inevitável com a paginação é a separação 
da visão de usuário da memória e a memória física 
real. 
• A visão de usuário da memória não é igual à memória 
física real. 
• A visão de usuário é mapeada na memória física. 
• O mapeamento permite a diferenciação entre 
memória lógica e física. 
9.5 Segmentação 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Visão de um programa pelo Usuário 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O mecanismo de segmentação possibilita a visão da 
memória pelo usuário. 
• Um espaço de endereçamento lógico é uma coleção 
de segmentos. Cada segmento tem um nome e um 
tamanho. 
• Os endereços especificam o nome do segmento e o 
deslocamento dentro do segmento. 
• O usuário especifica, portanto, cada endereço por 
duas quantidades: um nome de segmento e um 
deslocamento. 
9.5.1 Método básico 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• É necessário um mapeamento da memória pois temos 
endereço bidimensional em uma memória física 
unidimensional. E isso é feito pela tabela de 
segmentos. 
• Cada entrada na tabela de segmentos possui uma 
base de segmento e um limite de segmento. 
• A base de segmento contém o endereço físico inicial 
no qual reside o segmento na memória, enquanto o 
limite de segmento especifica o tamanho do 
segmento. 
9.5.2 Hardware 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Um endereço lógico consiste em duas partes: um 
número de segmento, s, e um deslocamento dentro 
desse segmento, d. 
• O número do segmento (s) é usado como índice para 
a tabela de segmentos. 
• O deslocamento d do endereço lógico precisa estar 
entre 0 e o limite do segmento. Se não estiver, 
interceptamos para o SO. 
 
9.5.2 Hardware 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Hardware de Segmentação 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Uma vantagem em particular da segmentação é a 
associação da proteção aos segmentos. 
• Como os segmentos representam uma parte do 
programa definida semanticamente, é provável que 
todas as entradas no segmento sejam usadas da 
mesma maneira. 
• Alguns segmentos são instruções, enquanto outros 
segmentos são dados. 
9.5.3 Proteção e compartilhamento 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O hardware de mapeamento de memória verificará os 
bits de proteção associados a cada entrada da tabela 
de segmento para evitar acessos ilegais à memória, 
como: 
– Tentativas de escrever em um segmento apenas de 
leitura. 
– Usar um segmento apenas de execução como dados. 
9.5.3 Proteção e compartilhamento 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Outra vantagem de segmentação envolve o 
compartilhamento de código ou dados. 
• Cada processo possui uma tabela de segmento 
associada, que o despachante utiliza para definir a 
tabela de segmentos de hardware quando esse 
processo for dado à CPU. 
• O compartilhamento ocorre no nível do segmento. 
• Por exemplo, considere o uso de um editor de texto 
em um sistema de tempo compartilhado. 
9.5.3 Proteção e compartilhamento 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Outra vantagem de segmentação envolve o 
compartilhamento de código ou dados. 
• Cada processo possui uma tabela de segmento 
associada, que o despachante utiliza para definir a 
tabela de segmentos de hardware quando esse 
processo for dado à CPU. 
• O compartilhamento ocorre no nível do segmento. 
9.5.3 Proteção e compartilhamento 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Por exemplo: Considere o uso de um editor de texto 
em um sistema de tempo compartilhado. 
– Um editor de texto completo poderia ser muito grande,composto de muitos segmentos. 
– Esses segmentos podem ser compartilhados entre 
todos os usuários, limitando a memória física 
necessária para dar suporte às tarefas de edição. 
– Em vez de n cópias do editor, só precisamos de uma 
cópia. 
9.5.3 Proteção e compartilhamento 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Tanto a paginação quanto a segmentação têm suas 
vantagens e desvantagens. 
• A segmentação oferece muitas vantagens no 
gerenciamento de memória, já que o sistema pode 
armazenar somente os segmentos necessários na 
memória. 
• A opção de segmentos de tamanhos variados também 
é útil, já que um processo pode variar em tamanho 
dependendo do que ele está fazendo. 
9.6 Segmentação com paginação 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Podemos criar pequenos segmentos para partes 
simples de um processo, e segmento maiores para 
partes mais complexas. 
• Mas para melhorar esse esquema criamos um 
endereço virtual para segmentação com paginação 
onde temos o nº do segmento, nº relativo da página 
em um segmento e o deslocamento (dentro da 
página). 
9.6 Segmentação com paginação 
Sistemas Operacionais com Java 
Referências 
• Capítulo 9 da referência abaixo: 
– SILBERSCHATZ, ABRAHAM; GAGNE, GREG; 
GALVIN, PETER BAES. Sistemas operacionais: 
com java. . Rio de Janeiro: Elsevier, 2004. 
 
Silberschatz, Galvin e Gagne (c) 2003

Outros materiais