Sistemas [email protected]
Gerência de Memória
● A memória principal (RAM) é um recurso importante, e deve ser gerenciado com cuidado● Nossos computadores pessoais possuem memória
milhares de vezes maior que a dos maiores supercomputadores da década de 60
● Contudo os programas continuam a ficar maiores, e mais “famintos” por memória
Como o SO realiza este gerenciamento ?
Sistemas [email protected]
Gerência de Memória
● Introdução● Para todo programador o
computador ideal possui memória totalmente disponível aos seus programas, infinitamente grande e rápida, e que não perca nenhum dado, caso ocorra algum bug ou o computador seja acidentalmente desligado
Sistemas [email protected]
Gerência de Memória
● Introdução● Além dos requisitos
anteriores, porque não torna-la barata, ou quase gratuita…
● O fato é que tal memória não existe (mantemos a esperança de que alguém aqui vai descobrir como fabricá-la)…
Sistemas [email protected]
Gerência de Memória
● Introdução● A alternativa realística, ao longo dos anos, tem sido
criar uma hierarquia de memória com– Poucos megabytes de memória extremamente rápida,
muito cara e volátil. (Cache)– Poucos gigabytes de memória com velocidade e preços
médios, mas ainda volátil. (RAM)– Poucos terabytes (ou muitos gigabytes) de memória
lenta, barata e não volátil. (Discos Rígidos)
Sistemas [email protected]
Gerência de Memória
● Introdução● É trabalho do sistema operacional abstrair esta
hierarquia, tornando o uso das diferentes memórias “transparentes” para o usuário
● Duas funções principais do SO estão ligados ao gerenciamento desta hierarquia – Gerenciamento de memória (que estudaremos agora)– Sistemas de arquivos (que estudaremos em breve)
Sistemas [email protected]
Gerência de Memória
● Introdução● O gerenciamento de
memória deve– Manter o controle de quais
partes, de quais memórias, estão livres e ocupadas
– Alocar memória a processos, quando eles necessitarem
– Desalocar a memória, quando eles não precisarem mais
Sistemas [email protected]
Gerência de Memória
● Sistemas sem abstração (ou gerência) de memória● Computadores da década de 60, 70 e o IBM-PC,
com sistema operacional MS-DOS realizavam pouca, ou nenhuma gerência de memória– Cada programa “avistava” todos os registradores, cache
(se houvesse) e memória RAM– Normalmente estes sistemas executavam um programa
por vez, que podia utilizar toda a memória RAM
Sistemas [email protected]
Gerência de Memória
● Sistemas sem abstração (ou gerência) de memória● Atualmente voltamos a ter sistemas com esta
abordagem em tocadores de mídia, eletrodomésticos, celulares simples etc
Sistemas [email protected]
Gerência de Memória
● Espaços de endereçamento● Expor a memória física aos processos possui
algumas desvantagens– Cada processo pode utilizar toda a memória, ocupando
até mesmo a utilizada pelo próprio SO (o que irá resultar em um “travamento”)
– Fica complicado, ou impossível, implementar multiprogramação, essencial nos computadores desktop, servidores, computadores de grande porte etc
Sistemas [email protected]
Gerência de Memória
● Espaços de endereçamento● Para permitir a multiprogramação, dois problemas
devem ser resolvidos– Proteção: garante que processos não irão interferir na
memória utilizada por outros, ou pelo próprio SO– Relocação: permite que um programa possa ser
“carregado” em qualquer local da memória física
Sistemas [email protected]
Gerência de Memória
● Espaços de endereçamento● Criam uma espécie de memória abstrata (ou virtual)
para os processos– São representados por um conjunto de endereços
(virtuais) que cada processo pode utilizar para acessar a sua memória (real)
– Cada processo possui seu próprio espaço de endereçamento, independente do pertencente aos outros processos
Sistemas [email protected]
Gerência de Memória
● Swap● O total de memória RAM necessária para todos os
processos é frequentemente maior que a RAM– A estratégia atual utilizada por sistemas operacionais
como Windows, Linux, Mac OS X, permite que parte de cada processo esteja na memória RAM, e outra em uma partição ou arquivo especial do disco rígido
– A escolha de quais partes de quais processos serão mantidas no disco é de grande importância para o desempenho da máquina
– Esta técnica é conceitualmente chamada de memória virtual, e popularmente de swap
Sistemas [email protected]
Gerência de Memória
Top Related