Buscar

Sistemas Operacionais II - aula03

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 7 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 7 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 I - France Ricardo Marques Gonzaga - UNIGRAN
29
Vimos diversas formas de gerenciamento de memória que foram evoluindo para 
uma melhora na performance de gerenciamento de processos na memória principal e também 
reduzir a fragmentação de espaço na memória principal. Mas podemos perceber também 
que nesses sistemas vistos até agora há uma inefi ciência, pois os processos só podem ser 
executados sempre dependendo se há memória disponível, ou seja, os processos sempre estão 
limitados ao tamanho da memória existente.
Há uma técnica que pode até ter um jeito de resolver tais situações de falta de memória 
Aula 03
MEMÓRIA VIRTUAL
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
30
que é o overlay, mas essa técnica é de difícil implementação e nem sempre essa prática traz 
resultados satisfatórios, ou seja, essa solução nem sempre tem a garantia de bons resultados.
A maneira mais sofi sticada e que traz resultado de sucesso é o uso da técnica de 
memória virtual, pois ela é muito poderosa para gerência de memória. A princípio essa técnica 
é bastante simples, é feita uma junção entre as memórias principal e memória secundária 
que acaba dando a impressão ao usuário de que existe uma memória muito maior que a 
capacidade real da memória principal.
O conceito de memória virtual fundamenta-se em não vincular o 
endereçamento feito pelo programa dos endereços físicos da memória 
principal. (Arquitetura de sistemas operacionais / Francis Berenger 
Machado, Luis Paulo Maia, - 4° Ed. – Rio de Janeiro :LTC, 2007).
A primeira implementação de memória virtual foi realizada no início 
da década de 60, no sistema Atlas, desenvolvido na Universidade de 
Manchester (Kilburn,1962). Posteriormente a IBM introduziria este 
conceito comercialmente na família System/370, em 1972. (Arquitetura 
de sistemas operacionais / Francis Berenger Machado, Luis 
Paulo Maia, - 4° Ed. – Rio de Janeiro :LTC, 2007).
Com a aplicação da memória virtual facilita e muito, pois os processos não fi cam 
totalmente dependentes de memória física disponível, já que agora eles têm o privilégio de 
possuírem endereços associados á memória secundária.
Outro passo em que o uso da técnica de memória virtual está à frente é que com ela 
pode-se permitir um número maior de processos compartilhados na memória principal, pois com 
ela em prática fi cam apenas partes dos processos como residentes. Com a utilização de memória 
virtual o uso do processador fi ca mais efi ciente e pode também fi car menos fragmentada.
Ainda para que a memória virtual tenha um desempenho ainda mais satisfatório, 
algumas funções de gerencia de memória virtual são implementadas diretamente no 
hardware, por isso pode-se considerar uma forte ligação entre a gerência de memória virtual e 
a arquitetura de hardware. Portanto várias especifi cações da arquitetura de hardware têm que 
ser levadas em consideração em relação à memória virtual, uma das principais especifi cações 
é o método de endereçamento do processador.
Nos sistemas de memória virtual existe uma ligação com o hardware de propósito 
especial que é chamado de unidade de gerenciamento de memória (Memory Managent Unit).
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
31
O endereço virtual em um sistema de paginação é representado por um par ordenado 
(p,d), pois o p é o número da página e o d representa o deslocamento dentro da página p no 
qual o item referenciado está localizado.
Temos também a Moldura de página que é quando o sistema transfere uma página 
do armazenamento secundário para a memória principal, o processo pode ser executado se a 
página em que ele estiver referenciando estiver alocada na memória principal. Veja na fi gura 
6 a representação de endereço de memória principal.
Número da Página
p d
Número da Página
Endereço Virtual
v = (p,d)
Figura: 6
A memória virtual por paginação é uma técnica que consiste na divisão de espaço de 
endereçamento de memória virtual e do espaço de endereçamento de memória real em blocos 
de mesmo tamanho que são chamados de páginas.
Todo o mapeamento de endereço é realizado através de tabelas de página, cada 
processo possui a sua própria tabela de páginas. Cada página virtual do processo tem uma 
entrada na tabela, essas tabelas possuem informações de mapeamento para que se possa 
localizar a página real correspondente, observe a fi gura 7.
Figura: 7
Memória Virtual Memória Principal
Memória Secundária
Página virtual O Página real O
Página real 1
Página real R
Página virtual 1
Página virtual 2
Página virtual V
Tabelas de 
páginas
ETP
Assim que o processo é executado, as páginas virtuais são enviadas da memória 
secundária para a memória principal e são alocadas nas páginas reais. Toda vez que um processo 
fi zer referência a um endereço da memória virtual, o mecanismo de mapeamento faz a localização 
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
32
na ETP (Entrada na tabela de página) da tabela do processo, o endereço físico da tabela real. Além 
da informações de localização que estão no sistema de mapeamento de endereço da memória real 
tem-se a informação do bit de validade (valid bit), que indica se a página está ou não na memória 
principal. Se o bit tiver o valor 0, indica que a página virtual não está na memória principal, se o 
bit tiver o valor 1 indica que a página está alocada na memória principal.
Com a memória virtual é possível que seja executado um processo sem que o seu 
código esteja por completo alocado na memória principal. O esquema de busca também faz 
o controle de quando uma página deve ser carregada para a memória.
Paginação por demanda (Demand paging): nesse esquema é páginas dos processos 
somente são carregadas da memória secundária para a memória principal quando realmente há 
a necessidade da determinada página, ou seja, somente quando é chamada a referida página. 
Esse esquema é muito conveniente, pois ele carrega para a memória principal somente as 
páginas que realmente são necessárias para execução. Com isso, é possível que partes que 
não serão utilizadas para a execução não sejam carregadas para memória principal.
Paginação por antecipação (antecipatory paging ou prepaging): nesse esquema são 
carregados páginas além das necessárias para a execução, ou seja, são enviadas páginas além 
da que foi referenciada para a execução, mas são páginas que poderão ser utilizadas ao longo 
do processo. A vantagem desse esquema é que, se pensarmos que um determinado programa 
está armazenado sequencialmente no disco, vai existir uma grande economia de tempo 
na transferência de páginas da memória secundária para a memória principal ao invés de 
carregar uma página de cada vez. Por outro lado, se por acaso o sistema não ocupe algumas 
das páginas carregadas antecipadamente, o sistema terá perdido tempo e ocupado memória 
principal sem necessidade.
Esse esquema de paginação antecipada pode ser aplicado no momento da criação de 
um processo ou na ocorrência de um page fault. Quando um processo é criado, várias páginas 
são criadas na memória secundária que devem ser carregadas para a memória principal, criando 
um grande número de page fault e várias operações de leitura de disco. Com o carregamento 
das páginas para a memória, a taxa de paginação tende a diminuir. 
Caso o sistema carregue várias páginas, a taxa de paginação do processo deverá cair 
imediatamente e fi car estabilizada durante um tempo. Assim sempre que houver um page 
fault, o sistema poderá carregar várias páginas além da página referenciada, na tentativa de 
evitar novos page fault e uma sequência de operações de leitura de disco.
Existem basicamente duas alternativas para política de alocação de páginas: uma é a 
alocação fi xa, a outra é a alocação variável; na fi xa, cada processo tem um limite de páginas 
que podem ser utilizadas durante a execução. Caso o número de páginas seja insufi ciente, uma 
outra página do processo deve ser desativada para que uma nova sejacarregada, esse limite de 
páginas pode ser igual a todos os processos ou esse número pode ser defi nido individualmente.
Pode até parecer justo alocar o mesmo número de páginas para todos os processos, 
mas não se anime, pois pode não parecer uma boa opção. Se nós observarmos, os processos 
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
33
raramente tem as mesmas necessidades, o correto é que seja defi nido o número de páginas no 
momento da criação do processo, pode-se tirar isso com base no tipo da aplicação que será executada.
A política de alocação fi xa é bastante simples, mas ela traz também alguns problemas. 
Caso o número de páginas for pequeno, o processo terá um número elevado de page faults, 
com isso pode-se prejudicar o desempenho de todo o sistema, mas caso esse número de páginas 
for bem maior que o necessário para a execução do processo, cada processo vai ocupar uma 
área maior que o necessário da memória principal, isso pode ocasionar na redução do número 
de processos residentes. Caso isso ocorra, pode ser aplicada a técnica de swapping onde pode 
ser feita a retirada e o carregamento de processos da memória principal.
Já na política de alocação variável, o que ocorre é que o número máximo de páginas 
para o processo pode ser variado durante a sua execução por conta da taxa de paginação e 
da ocupação da memória principal. Com esse tipo de política os processos com um grande 
número de paginação, é possível ampliar o limite máximo de páginas e com isso pode-se 
reduzir o número de page faults. Do mesmo modo em que processo com um baixo número 
de páginas pode ter páginas realocadas para outros processos. A política de alocação variável 
é uma forma muito prática, mas requer uma melhor performance do sistema operacional que 
vai ter que constantemente monitorar o comportamento dos processos.
Existe também a política de substituição de página: pode ocorrer uma falta de 
página para o processo e, nesse caso o sistema operacional precisa selecionar uma página 
que será retirada da memória principal a fi m de liberar espaço para uma outra página. 
Se por ventura a página que foi selecionada para remoção tiver sofrido alguma alteração 
durante o processo, essa página deverá ser novamente gravada no disco com a fi nalidade 
de atualizar o código virtual. Se por certo a página não tiver sofrido nenhuma alteração, 
esse procedimento de gravar novamente a página no disco não é necessário, pois a cópia 
existente é a mesma a ser gravada. Quando há nova página que é carregada na memória 
ela substitui a página antiga, assim a página antiga foi totalmente destruída da memória 
principal. É possível escolher uma página aleatoriamente para ser substituída a cada vez 
que for necessário, mas o sistema terá um desempenho muito melhor obviamente se for 
retirada da memória uma página que estiver sendo pouco usada.
Caso ocorra de uma página que está sendo muito utilizada ser a escolhida para 
ser substituída, é bem possível que logo esta página terá que ser introduzida na memória 
novamente, isso causa custos extras.
O sistema operacional tem a capacidade de identifi car as páginas porque existe um bit em 
cada entrada da tabela de página, chamado de bit de notifi cações (dirty bit ou modify bit). O valor desse 
bit sempre é alterado quando uma página sofre alguma modifi cação.
Esse problema de substituição de páginas ocorre em outros ambientes do sistema computacional 
como por exemplo, na memória cachê com blocos de memória mais recentes. Se a cachê estiver cheia, 
um dos blocos é escolhido para ser retirado; aí que existe uma diferença na substituição da página, a 
diferença está no tempo envolvido, pois, na cachê, a substituição do conteúdo de um bloco de memória 
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
34
é realizada em um tempo reduzido comparando-se com a substituição de páginas. Essa diferença 
de tempo se dá porque há uma falta de bloco (block miss) no cachê; essa troca é satisfeita a 
partir da memória principal, que não tem a demora por conta de tempo de rotação e de latência 
rotacional do disco.
Uma forma que poderia ser perfeita, e que facilitaria e muito na substituição de páginas seria 
a seguinte: quando uma falta de página ocorrer, na memória principal existe um conjunto de páginas, 
e uma dessas páginas que ainda não foram referenciadas será referenciada após pelo menos umas 10, 
100 ou até mesmo 1000 instruções. A solução é rotular um número de instruções que serão executadas 
antes que a página seja referenciada pela primeira vez. Logo uma página com rótulo mais alto deverá 
ser removida, por exemplo. Se houver uma página não vai ser usada durante 7 milhões de instruções e 
outra que não vai ser usada por pelo menos 4 milhões de instrução, se remover a primeira, isso deixará 
por mais tempo possível a falta de tempo.
O problema que impede a utilização desse algoritmo é que, no momento da falta de página, o 
sistema operacional não tem como saber quando cada uma das páginas serão futuramente referenciadas. 
Esse é o melhor algoritmo de substituição, mas infelizmente raramente é implementada. Sua utilização 
somente é possível na segunda execução, usando as informações de referência de páginas recolhidas 
durante a primeira execução.
Já na substituição de páginas FIFO (primeira a entrar, primeira a sair), o esquema de 
substituição funciona da seguinte maneira: quando uma página entra na memória e logo outra 
vai chegar, a que sai é a que está por mais tempo na memória, ou seja, a que entrou primeiro, 
mas também há problema no uso desse método. Na hora do sistema referenciar a página que será 
excluída opta-se pela que esta há mais tempo, e ás vezes essa página vai ser mais utilizada do que 
outra que pode estar está logo atrás. 
Temos também o esquema de FIFO circular, método que utiliza como base o esquema 
FIFO, mas as páginas alocadas na memória fi cam em uma estrutura de lista circular semelhante a um 
relógio onde um ponteiro guarda o endereço da página mais antiga. As páginas possuem um bit onde 
se encontra a sua referência, esse bit mostra se a página foi recentemente referenciada. Assim, quando 
há a necessidade de se fazer uma troca de página, o sistema verifi ca se o bit de referência está com valor 
0 ou 1, onde 0 representa que a página foi selecionada para ser excluída, pois, ela além de ser a mais 
antiga, não foi utilizada recentemente. Em outro caso, se o bit estiver com o valor 1, o bit é desligado e 
o ponteiro é incrementado, essa página além de ser a mais antiga, foi utilizada recentemente.
VIRTUALIZAÇÃO
Muitos exemplos nos mostram como os softwares podem ser 
usados para fazer os recursos parecerem diferentes do que realmente 
são. Isso se chama virtualização. Memórias virtuais parecem ser 
bem maiores que memória física instalada no computador. Máquinas 
virtuais criam a ilusão de que o computador a ser usado para executar 
aplicações realmente bem diferente do hardware. Fonte: (Sistemas 
Operacionais: terceira edição/H.M.Deitel, P.J.Deitel, D.R. 
Choffnes; - São Paulo : Pearson Prentice Hall, 2005).
Sistemas Operacionais I - France Ricardo Marques Gonzaga - UNIGRAN
35
Existem vários tipos de esquemas de substituição de páginas. Alguns selecionam na 
memória principal a página que está há mais tempo alocada na memória; existe aquele que 
seleciona a página menos referenciada; há outros que fazem uma seleção aleatória da página 
que está alocada na memória. Vamos agora saber um pouco a respeito de tamanho de páginas.
Alguns sistemas permitem a confi guração do tamanho da página, assim, ele torna-se 
mais fl exível, mas a escolha do tamanho da página é um fator muito importante quando se 
fala em implementar a memória virtual por paginação. O tamanho de página está diretamente 
ligado á arquitetura de hardware e ela pode variar de acordo com o modelo do processador, 
mas de acordo com Francis Berenger Machado e Luiz Paulo Maia – Arquitetura de Sistemas 
Operacionais – 4° ed;Rio de Janeiro: LTC, 2007, o tamanho pode ser entre 512 e 16 M endereços.
ATIVIDADES 
As atividades referentes a esta aula estão disponibilizadas na ferramenta “Atividades”. 
Após respondê-las, envie-nas por meio do Portfólio- ferramenta do ambiente de aprendizagem 
UNIGRANET. Em caso de dúvidas, utilize as ferramentas apropriadas para se comunicar com 
o professor.

Outros materiais