Buscar

Aula11_Memória_Virtual

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 40 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 40 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 40 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 10 – Memória Virtual 
• 10.1 Aspectos básicos 
• 10.2 Paginação sob Demanda 
• 10.4 Substituição de página 
• 10.5 Alocação de quadros 
• 10.6 Thrashing 
Sistemas Operacionais com Java 
10.1 Aspectos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• A memória virtual é uma técnica que permite a 
execução de processos que podem não estar 
inteiramente na memória. 
• Vantagens: 
– Um programa não ficaria limitado pela quantidade de 
memória física disponível; 
– Mais programas poderiam ser executados ao mesmo 
tempo, aumentando a utilização da CPU; 
– Menos operações de I/O seriam necessárias para 
carregar ou fazer a movimentação de programa de 
usuário para a memória, executando rapidamente. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Memória Virtual que é 
Maior do que a Memória Física 
Sistemas Operacionais com Java 
10.1 Aspectos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• A memória virtual é a separação da memória lógica do 
usuário da memória física. 
• A memória virtual é implementada por intermédio da 
técnica de paginação sob demanda e também em um 
sistema com segmentação. 
• Paginação sob demanda é similar a um sistema com 
troca de processos (swapping). 
Sistemas Operacionais com Java 
10.2 Paginação sob Demanda 
Silberschatz, Galvin e Gagne (c) 2003 
• Os processos são armazenados na memória 
secundária (disco). 
• Quando um processo vai ser executado, ele é copiado 
para a memória. 
• Entretanto, em vez de copiar o processo todo na 
memória, usamos um mecanismo de cópia tardia: 
uma página nunca é copiada para a memória a 
menos que ela seja requerida. 
Sistemas Operacionais com Java 
10.2 Paginação sob Demanda 
Silberschatz, Galvin e Gagne (c) 2003 
• Como um processo é visto como uma sequência de 
páginas, e não como um grande espaço de 
endereçamento contíguo, o uso do termo troca é, 
nesse caso, tecnicamente incorreto. 
• Na troca de processos há a manipulação de 
processos inteiros, ao passo que um paginador 
manipula páginas de um processo. 
Sistemas Operacionais com Java 
10.2.1 Conceitos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• Quando um processo vai ser carregado da memória, o 
paginador imagina quais páginas serão usadas antes 
que o processo seja descarregado novamente. 
• Em vez de carregar o processo inteiro, o paginador 
leva apenas as páginas necessárias para a memória. 
• Evitando a leitura de páginas que não serão 
utilizadas, diminuindo o tempo de troca e a 
quantidade de memória física necessária. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Transferência de uma Memória 
Paginada para o Espaço Contíguo 
Sistemas Operacionais com Java 
10.2.1 Conceitos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• Precisamos de um suporte de hardware para fazer a 
distinção entre as páginas que estão na memória e as 
que estão no disco. 
• Pode ser utilizado nesse caso o esquema do bit 
válido-inválido. 
• Nesse caso o bit válido significa que a página 
associada está na memória e é legal. O bit inválido 
significa que a página não é válida, ou é válida mas 
está no disco. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Tabela de página quando algumas 
páginas não estão na memória principal 
Sistemas Operacionais com Java 
10.2.1 Conceitos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• Marcar uma página como inválida não terá efeito se o 
processo nunca tentar acessar essa página. Pois 
carregamos todas e apenas as páginas que são de 
fato necessárias, aquelas que estão residentes na 
memória. 
• Mas o que acontece se o processo tenta usar uma 
página que não foi carregada na memória? 
• Causa uma interrupção de falta de página (page fault 
trap). 
Sistemas Operacionais com Java 
10.2.1 Conceitos Básicos 
Silberschatz, Galvin e Gagne (c) 2003 
• O hardware da paginação, ao traduzir o endereço 
através da tabela de página, observará que o bit 
inválido está ativo, irá gerar uma exceção para o SO. 
• Essa exceção é resultado da falha do SO, que é 
preciso ser corrigido através de um procedimento para 
tratar essa falta de página. E esse procedimento é 
simples. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Etapas no tratamento de uma 
falha de página 
Sistemas Operacionais com Java 
10.4 Substituição de Página 
Silberschatz, Galvin e Gagne (c) 2003 
• A substituição de páginas consiste no seguinte: 
quando não existe nenhum quadro livre, encontramos 
um que não está sendo usado no momento e o 
liberamos. 
• Podemos liberar um quadro gravando seu conteúdo 
no espaço de swap e alterar a tabela de página para 
indicar que a página não está mais na memória. E 
usar o quadro livre para armazenar a página na qual 
ocorreu a falta no processo. 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Necessidade de Substituição 
de Página 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• A substituição de página gera as seguinte tarefas: 
– Localizar a posição da página desejada no disco; 
– Encontrar um quadro livre: 
• Se houver um quadro livre, use-o. 
• Se não houver um quadro livre, use um algoritmo de 
substituição de página para selecionar um quadro vítima. 
• Envie o quadro vítima para o disco; mude as tabelas de 
página e quadro de acordo. 
– Ler a página desejada para o quadro (recém -) liberado; 
mudar as tabelas de página e quadro. 
– Reiniciar o processo do usuário. 
10.4.1 Substituição de página básica 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Quando nenhum quadro estiver livre, duas 
transferências de página uma descarga e uma carga 
são necessárias. 
• Essa situação dobra o tempo de serviço de falta de 
página e aumenta o tempo efetivo de acesso 
proporcionalmente. 
10.4.1 Substituição de página básica 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
Substituição de Página 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Para implementar a paginação sob demanda, é 
preciso resolver dois problemas: 
– É necessário definir um algoritmo de alocação de 
quadro; 
– E um algoritmo de substituição de páginas. 
10.4.1 Substituição de página básica 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• É o algoritmo mais simples; 
• Associa a cada página o instante em que a página foi 
levada para a memória; 
• Para substituir uma página, a página mais antiga é 
escolhida; 
• Pode-se criar uma fila FIFO para manter todas as 
páginas na memória. E para substituir basta 
selecionar a que estiver no início da fila. 
10.4.2 Substituição de página FIFO 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Fácil de entender e programar, mas seu desempenho 
nem sempre é bom; 
• A página substituída pode ser um módulo de 
inicialização que foi usado há muito tempo e não é 
mais necessário; 
• Por outro lado, ela pode conter uma variável muito 
usada que foi inicializada cedo e está em uso 
constante. 
10.4.2 Substituição de página FIFO 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
10.4.2 Substituição de página FIFO 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Tem a menor taxa de falta de página possível paraum 
número fixo de quadros; 
• Substituir a página que não será usada pelo período 
mais longo. 
• É difícil de implementar, pois requer conhecimento 
futuro da string de referência. 
10.4.3 Algoritmo de substituição ótimo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
10.4.3 Algoritmo de substituição ótimo 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Substitui a página que não foi usada por mais 
tempo; 
• Associa a cada página a data que essa página foi 
usada pela última vez; 
• Quando é necessário substituir uma página, o 
algoritmo LRU seleciona a página que não foi usada 
pelo maior período de tempo. 
10.4.4 Algoritmo de substituição LRU 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
10.4.4 Algoritmo de substituição LRU 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Como alocamos a quantidade fixa de memória livre 
entre os vários processos? 
• Se tivermos 93 quadros livres e dois processos, 
quantos quadros cada processo obterá? 
• O caso mais simples de memória virtual é o sistema 
monousuário. 
10.5 Alocação de quadros 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Existem várias formas de resolver esse problema de 
maneira simples. 
• A estratégia básica é clara: o processo de usuário 
recebe qualquer quadro livre. 
• O problema difere quando a paginação por demanda 
é combinada com a multiprogramação, que aloca dois 
ou mais processos na memória ao mesmo tempo. 
10.5 Alocação de quadros 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Não é possível alocar mais do que o número total de 
quadros disponíveis. 
• Mas existe também um número mínimo de quadros 
que pode ser alocado. A medida que o número de 
quadros alocados para cada processo diminui, a taxa 
de falta de página aumenta, tornando a execução do 
processo mais lenta. 
10.5.1 Quantidade mínima de quadros 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Lembre-se de que, quando ocorre uma falta de página 
antes que a execução de uma instrução esteja 
concluída, a instrução deverá ser reiniciada, por isso é 
preciso ter quadros suficiente. 
• O número mínimo de quadros por processo é definido 
pela arquitetura, enquanto o número máximo é 
definido pela quantidade de memória física disponível. 
10.5.1 Quantidade mínima de quadros 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• A forma mais fácil de dividir m quadros em n 
processos é dar a todos uma parcela igual de m/n 
quadros. O esquema é chamado de alocação igual. 
• Mas existem processos que precisam de diferentes 
quantidades de memória e para resolver esse 
problema, pode-se usar a alocação proporcional. 
10.5.2 Algoritmos de alocação 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Outro fator importante na forma em que os quadros 
são alocados aos vários processos é a substituição de 
página. 
• Com vários processos competindo por quadros, é 
possível classificar os algoritmos de substituição de 
páginas em duas amplas categorias: substituição 
global e substituição local. 
10.5.3 Alocação global versus local 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Substituição Global – permite que um processo 
selecione um quadro de substituição do conjunto de 
todos os quadros, mesmo se esse quadro estiver 
alocando no momento a algum outro processo. 
• Um processo pode tirar um quadro de outro. 
10.5.3 Alocação global versus local 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Substituição local – requer que cada processo 
selecione somente a partir de seu próprio conjunto de 
quadros alocados. 
• Com uma estratégia de substituição local, o número 
de quadros alocados para um processo não muda. 
• Com a substituição global, pode acontecer de um 
processo selecionar apenas quadros alocados a 
outros processos, aumentando assim o n° de quadros 
alocados a ele. 
10.5.3 Alocação global versus local 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Thrashing de um processo é quando ele está 
consumindo mais tempo em substituição de páginas 
do que na execução de seu código. 
• Fornecer um número suficiente de quadros para cada 
processo, de modo a evitar a paginação excessiva, 
pode requerer a troca e o escalonamento de 
processos. 
10.6 Thrashing 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O SO monitora a utilização de CPU. 
– Se a utilização de CPU for muito baixa, aumenta o grau 
de multiprogramação introduzindo um novo processo 
sistema. 
• Um algoritmo de substituição de páginas global é 
usado. 
– Se um processo entra em uma nova fase de execução 
que precise de mais quadros. Ele começa a gerar faltas 
de páginas e retira quadros de outros processos. 
Entretanto, esses processos precisam dessas páginas 
e acabam falhando, pegando quadros de outros 
processos. 
10.6.1 Causa do Thrashing 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Esses processos com faltas de página devem utilizar 
o dispositivo de paginação para carregar e 
descarregar páginas. 
• À medida que elas entram na fila para o dispositivo de 
paginação, a fila de processos prontos vai 
esvaziando. 
• Enquanto os processos esperam pelo dispositivo de 
paginação, a utilização de CPU diminui. 
10.6.1 Causa do Thrashing 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• O escalonador de CPU vê a redução da utilização de 
CPU e aumenta o grau de multiprogramação como 
resultado disso. 
• E começa a falta de página novamente. 
10.6.1 Causa do Thrashing 
Sistemas Operacionais com Java 
Silberschatz, Galvin e Gagne (c) 2003 
• Podemos limitar os efeitos do thrashing usando o 
algoritmo de substituição local (ou por prioridade). 
• Com a substituição local, se um processo entrar em 
thrashing, ele não poderá roubar quadros de outro 
processo e fazer com que este também entre em 
thrashing. 
• As páginas são substituídas com relação ao processo 
do qual fazem parte. 
10.6.1 Causa do Thrashing 
Sistemas Operacionais com Java 
Referências 
• Capítulo 10 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