Sie sind auf Seite 1von 62

Sistemas Operacionais

Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br
Gerenciamento de Memria

n Uma das funes do Sistemas Operacional a gerncia de


recursos;

n Um dos recursos mais concorridos de um computador a


memria;
Gerenciamento de Memria

n Em um mundo ideal a memria seria infinitamente grande,


infinitamente rpida, consumiria pouca energia e seria
barata;

n Infelizmente o mundo ideal no existe;

q Grande HD;
Rpida
q Rpida RAM, Cache;

q Consome pouco Flash;


Consum
Grande o de
q Barata Fitas; Energia

Barata
Gerenciamento de Memria

n Os programas so cada vez mais complexos;

n Sistemas consomem cada vez mais memria;

n Computadores executam cada vez mais mltiplas tarefas


simultaneamente;
Gerenciamento de Memria

n Em ambientes de servidores a demanda por memria cresce


medida que clientes se juntam ao servio;

n Muitas estratgias de escala em servidores se baseiam no


cache de disco em memria primria;
Gerenciamento de Memria

n Hierarquia:
Gerenciamento de Memria

n Hierarquia:

q Nessa pirmide a principal atividade do Sistema Operacional


gerenciar memrias de velocidades e tamanhos diferentes;

q Memrias cache e registradores so tratadas pelo hardware;

q Iremos analisar o uso das memrias primria (RAM) e


secundria (HD/SSD);
Gerenciamento de Memria

n Tipos de Acesso:

q Acesso direto pelo endereo fsico;

q Unidade de Gerenciamento de Memria (MMU);


Gerenciamento de Memria Tipos de Acesso

n Acesso direto pelo endereo fsico:

q A estratgia mais simples;

q Se um programa precisa acessar uma rea de memria


basta informar o endereo que deseja acessar;
Gerenciamento de Memria Tipos de Acesso

n Acesso direto pelo endereo fsico:

q Funciona para sistemas monotarefa;

q Acessar diretamente pode permitir que o processo atual


altere a rea de memria de outro processo;

q Mesmo para ambientes monotarefa, pode ser inseguro j


que o SO tambm no est protegido;

q Como garantir que o programa A no gravar no espao de


B?
Gerenciamento de Memria Tipos de Acesso

n Acesso direto pelo endereo fsico:


Gerenciamento de Memria Tipos de Acesso

n Unidade de Gerenciamento de Memria (MMU):

q Adiciona uma pea de hardware especfica para proteger a


memria;

q Esse hardware comumente conhecido como Memory


Management Unit pode ser adicionado ao processador ou
pode ser externo a ele;
Gerenciamento de Memria Tipos de Acesso

n Unidade de Gerenciamento de Memria (MMU):

q Todos os acessos memria precisam passar por esse


hardware;

q Precisa conhecer as reas que esto alocadas para cada


processo;
Gerenciamento de Memria Tipos de Acesso

n Unidade de Gerenciamento de Memria (MMU):


Gerenciamento de Memria Espao de Endereamento

n o conjunto de endereos que um processo pode usar para


acessar a memria;

n No significa que o processo tem disponvel toda a memria


do espao de endereamento;

n Exemplos:

q Nmeros de telefone so um exemplo de espao de


endereos:
v 3245-2233 ou 3131-4455 ou 3216-2700
v 0000-0000 / 9999-9999

q Endereos IP tambm so:


v 0.0.0.0 / 255.255.255.255
Gerenciamento de Memria Espao de Endereamento

n Problema:

q Para garantir que o processo A no altere dados do processo


B, devemos aloc-los em locais diferentes da memria;
Gerenciamento de Memria Espao de Endereamento

n Os espaos de 2 processos diferentes so separados;

n Isso evitar que um acesso os dados de outro;

n necessrio que algum mecanismo (hardware ou software)


traduza o endereo do espao de endereos para o
endereo real (que o controlador de memria entende);
Gerenciamento de Memria Espao de Endereamento

n Estratgias de implementao:

q Registradores especiais Base e Limite;

q Define-se para cada processo:


v Onde comea o espao de memria alocado para ele;
v Qual o maior endereo que o processo pode acessar;

q Sempre que ocorrer uma troca de contexto os registradores


Base e Limite so atualizados;

q Sempre que o processo tenta acessar a memria a CPU ou


MMU checa os limites;
Gerenciamento de Memria Espao de Endereamento

n Estratgias de implementao:
Gerenciamento de Memria Estratgias

n Em um sistema desktop comum h mais memria usada que


memria disponvel;

n comum que executem simultaneamente dezenas a


centenas de processos;

n Se cada processo consome parte da memria como um


sistema com uma quantidade limitada de memria poderia
executar tantos processos?

n Duas estratgias so comuns:

q Swapping;
q Memria Virtual;
Gerenciamento de Memria Estratgias (Swapping)

n a estratgia mais simples para executar vrios processos


que consomem acima do limite fsico da memria RAM
(principal);

n A ideia simples:

q Carregue todos os processos que couberem na memria;

q SWAP OUT Se faltar espao retire um processo da


memria principal (RAM) e copie seu contedo na memria
secundria (HD/SSD);

q SWAP IN Quando o processo for executar traga-o de volta


da memria secundria para a primria;
Gerenciamento de Memria Estratgias (Swapping)

n Exemplos:
Gerenciamento de Memria Estratgias (Swapping)

n Exemplos:
Gerenciamento de Memria Estratgias (Swapping)

n O problema da fragmentao:

q Aps muitas operaes de swap-in e swap-out possvel


que a memria fique fragmentada;

q Se um processo maior sai e d espao para um processo


ligeiramente menor, aquele espao entre 2 processos ser
desperdiado;
Gerenciamento de Memria Estratgias (Swapping)

n O problema da fragmentao:

q Uma estratgia para resolver a fragmentao a


compactao da memria;
Gerenciamento de Memria Estratgias (Swapping)

n O problema da fragmentao:

q Uma estratgia para resolver a fragmentao a


compactao da memria;
Gerenciamento de Memria Estratgias (Compactao)

n Move cada processo para baixo na memria, fazendo com


que ele ocupe os espaos vazios abaixo do seu endereo
base;

n Apesar de otimizar o uso da memria, esta estratgia


normalmente no usada;

n O tempo necessrio para mover todos os processos para o


fim da memria seria muito grande, comparado com o tempo
de troca de contexto;
Gerenciamento de Memria Estratgias (Alocao Dinmica)

n Muitas linguagens permitem que o programador crie


variveis dinamicamente;

n Para que isso funcione o processo precisar de mais espao


de memria do que foi alocado inicialmente;

n A estratgia mais comum para implementar isto usando


uma pilha (stack);

n A medida que o processo solicita memria (cria novas


variveis) estas so alocadas em uma rea pr-reservada
para o crescimento do processo;
Gerenciamento de Memria Estratgias (Alocao Dinmica)

n O que acontece quando um processo excede o tamanho


alocado da sua rea de crescimento?

q Ele precisar ser realocado em uma rea de memria com


espao contnuo que caiba o seu novo tamanho;

q Isso pode levar muito tempo, pois pode ser necessrio fazer
swap-out de outros processos e ainda mover os dados do
processo para uma nova rea de memria;
Gerenciamento de Memria Estratgias (Alocao Dinmica)

n A Pilha:
Gerenciamento de Memria Espao Livre

n Quando usada alocao dinmica o SO precisa saber onde


cada processo est na memria;

n Alm disso o processo precisa saber quais partes da


memria no tem nenhum processo (reas livres);

n preciso saber o tamanho de cada rea livre para que se


possa alocar novos processos medida que eles so
criados;
Gerenciamento de Memria Espao Livre

n medida que os processos so alocados e liberados da


memria, reas livres vo sendo criadas;

n O SO precisa conhecer onde comeam e qual o tamanho


dessas reas;
Gerenciamento de Memria Espao Livre

n Tabela de blocos livres:

q Considere uma memria de 100 bytes;

q Como manter a informao sobre o espao livre e ocupado?

q Essa informao precisa ficar dentro da memria!

q Portanto, precisa ocupar o mnimo de espao possvel;


Gerenciamento de Memria Espao Livre

n Mapa de reas livres:

q Uma estratgia simples para implementar esta tabela de


reas livres o mapa de bits;

q Para cada rea de tamanho X bytes use 1 bit para informar


se est ocupada(1) ou livre(0);

q O consumo de espao para o mapa fixo e proporcional ao


tamanho da memria;

q Quanto maior X, maior o possvel desperdcio de memria;

q Quanto menor X, maior o espao ocupado pelo mapa;

q O tempo para achar uma rea livre de um determinado


tamanho pode ser muito grande;
Gerenciamento de Memria Espao Livre

n Mapa de bits:
Gerenciamento de Memria Espao Livre

n Lista ligada de espaos livres:

q Manter uma lista contendo quais os espaos que esto livres


e quais esto ocupados e o seu tamanho;

q Na lista teremos tambm o tamanho do espao livre:


v Isso pode melhorar o tempo para achar um espao livre
de tamanho determinado;

q O tamanho da lista depende do nmero de processos;


Gerenciamento de Memria Espao Livre

n Lista ligada de espaos livres:


Gerenciamento de Memria Espao Livre

n Escolha do local:

q Uma vez que temos uma lista de locais possveis para alocar
um processo, como escolher?

q Algumas alternativas:

v First Fit (Primeiro que encaixe);

v Best Fit (Melhor encaixe);

v Worst Fit (Pior encaixe);


Gerenciamento de Memria Espao Livre

n Escolha do local:

q First Fit (Primeiro que encaixe);


v Ir alocar o processo no primeiro espao livre da lista;
Gerenciamento de Memria Espao Livre

n Escolha do local:

q Best Fit (Melhor encaixe);


v Ir percorrer toda a lista para encontrar o espao que
desperdiar o mnimo possvel;
Gerenciamento de Memria Espao Livre

n Escolha do local:

q Worst Fit (Pior encaixe);


v Ir percorrer toda a lista para encontrar o espao que
desperdiar o mximo possvel, esse espao
desperdiado pode ser depois alocado para outro
processo;
Gerenciamento de Memria Memria Virtual

n Vrios programas so executados simultaneamente em um


sistema desktop comum;

n Cada um desses programas ocupar muito mais memria a


cada nova verso;

n A soma dos espaos necessrios para esses programas


excede o limite fsico da memria;

n Vimos que uma estratgia para otimizar o uso de memria


o Swap;
Gerenciamento de Memria Memria Virtual

n Apesar de ser uma estratgia vlida o swap sofre com a


lentido da memria secundria;

n HDs modernos em 2016 chegam a 200MB/s de


leitura/escrita, enquanto a memria RAM padro nos
computadores atuais DDR3 pode chegar a 12800 MB/s;

n Ler um bloco de 1GB da memria levaria menos de 1s,


enquanto o mesmo bloco no disco levaria mais de 5
segundos;
Gerenciamento de Memria Memria Virtual

n Uma alternativa swap a memria virtual;

n A ideia :

q Dividir o programa em blocos (chamadas de pginas);

q Carregar na memria principal apenas as pginas


necessrias naquele momento para cada programa;

q Sem um programa precisar acessar um bloco que no est


na memria, o SO avisado e carrega a nova pgina;
Gerenciamento de Memria Memria Virtual
Gerenciamento de Memria Memria Virtual

n Paginao:

q uma melhoria da estratgia de registrador base e limite;

q Com a paginao podemos agora carregar apenas uma


parte do processo;

q Quando o processo acessar a rea de memria que no est


mapeada, uma Page Fault gerada e o SO entra em ao;
Gerenciamento de Memria Memria Virtual

n Paginao:
Gerenciamento de Memria Memria Virtual

n Paginao:
Gerenciamento de Memria Memria Virtual

n Paginao:

q Os endereos que so acessados pelo processo so


chamados de endereos virtuais, enquanto os endereos
reais da memria so chamados de endereos fsicos;

q O que a MMU faz ser responsvel pela traduo de


endereos virtuais para endereos fsicos;

q O espao que um processo pode alocar na memria virtual


chamado pgina e na memria fsica este chamado page
frame ou estrutura de pgina;
Gerenciamento de Memria Memria Virtual

n Paginao:
Gerenciamento de Memria Memria Virtual

n O nmero de pginas limitado apenas pela capacidade de


endereamento do processador;

n Exemplo:

q Se temos um processador de 32 bits este poder ter at 232


pginas;

q Cada pgina pode ter qualquer tamanho;

q Lembre-se que quanto maior o tamanho da pgina, maior o


desperdcio de espao;

q Quanto menor o tamanho da pgina, mais complexa a


tarefa de mapear estas pginas;

q Tamanhos de pginas podem variar de acordo com a


arquitetura do computador de 512 bytes a 64 Kbytes;
Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Vimos que a paginao permite carregar partes de um


processo na memria, em rea no contnuas;

n Vimos que a MMU responsvel por traduzir endereos


lgicos em endereos fsicos;

n Vimos que quando uma pgina no est na memria


principal ocorre uma page fault;

n Quando a memria est cheia e uma nova pgina precisa ser


carregada, uma pgina na memria principal precisa ir para
o disco;

n Veremos como o SO escolhe a pgina que ir para o disco;


Gerenciamento de Memria Algoritmos de Substituio de Pginas

n O algoritmo perfeito:

q O melhor algoritmo de substituio de pgina aquele em


que:
v A pgina retirada da memria para o disco seja a pgina
que est mais longe de ser usada novamente;

q Exemplo:
v Se temos na memria as pginas A, B, C e D;
v Veremos quando no futuro cada uma ser usada:
| A=10 | B=5 | C=8 | D=20 |
v Retiramos a que ser usada o mais distante possvel no
futuro, a pgina D;
Gerenciamento de Memria Algoritmos de Substituio de Pginas

n O algoritmo perfeito:

q Infelizmente ainda no podemos prever o futuro;

q Portanto este algoritmo como descrito, no pode ser


implementado na prtica;

q Precisaremos de alternativas, que so:


v NRU;
v FIFO;
v FIFO com segunda chance;
v Relgio;
v Menos recentemente usado;
Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Estatsticas das pginas:

q Para que o SO saiba quanto e quanto uma pgina foi usada,


necessrio armazenar informao sobre seu uso;

q A maneira mais simples, e que muitos hardwares


implementam o uso de 2 bits para cada pgina:
v Bit Read indica se a pgina foi lida por um processo;
v Bit Modified indica que a pgina foi modificada por um
processo;

q Uma vez setados para 1 esses bits ficam em 1 at


receberem o reset do SO;
Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Algoritmo NRU No Recentemente Usado:

q A ideia central deste algoritmo dividir as pginas em 4


classes, de acordo com os bits R e M;

q Retirar uma pgina qualquer que esteja na menor classe


possvel;
Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Algoritmo FIFO First In First Out:

q A ideia simples, retire a pgina mais antiga para colocar a


nova;

q A primeira pgina a entrar na memria ser a primeira a sair;

q um algoritmo de implementao rpida;

q O problema : este algoritmo pode substituir uma pgina


muito lida;

q Este problema impede o uso desse algoritmo nesta forma;


Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Algoritmo FIFO com segunda chance:

q uma alterao simples do FIFO, mas que permite que uma


pgina muito usada no seja retirada imediatamente;

q A diferena :

v Ao selecionar a pgina a ser retirada se o bit R estiver


setado, significa que ela foi referenciada recentemente;

v Neste caso no retirar esta pgina apenas a coloca no


fim da fila e reseta o bit R;

q Esse uma variao mais aplicvel do algoritmo FIFO;


Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Algoritmo Relgio:

q Uma espcie de Round-Robin para as pginas em memria;

q Se R = 0, remove a pgina;

q Se R = 1, zera R e avana o ponteiro;


Gerenciamento de Memria Algoritmos de Substituio de Pginas

n Algoritmo LRU Menos Recentemente Usado:

q necessrio manter um contador de tempo geral;

q Sempre que uma pgina acessada grava-se nela a hora


em que foi usada;

q Quando ocorrer uma page fault o SO percorre as pginas


procurando a que foi usada a mais tempo atrs;

q Essa ser substituda;


Atividade Laboratrio Simulador Sosim (Pg 191)

n Espao de Endereamento Virtual;

n Swapping;
Obrigado!

Sistemas Operacionais
Prof. MSc. Jos Hermano Cavalcanti Filho

jose.cavalcanti@ifpb.edu.br

http://www.ifpb.edu.br