Buscar

Fundamentos de Sistemas Operacionais - Seção 5



Continue navegando


Prévia do material em texto

Fundamentos de 
Sistemas Operacionais 
Seção 5: 
Organização e Gerência 
de Memória. 
Profa. Dra. Maria Teodora Ferreira 
maria.ferreira@bilac.com.br 
Objetivo: 
O aluno deverá entender sobre o 
gerenciamento de memória. 
Introdução 
 A multiprogramação implica em manter-se vários 
processos em memória. 
 A memória necessita ser alocada de forma eficiente 
para permitir o máximo possível de processos. 
 Um sistema de memória possui pelo menos dois níveis: 
 Memória principal: acessada pela CPU. 
 Memória secundária: discos. 
 
 
 
 
Gerência de Memória 
 A gerência de memória deve: 
 Tentar manter na MP (Memória Principal) o maior número 
de processos  maximizar o compartilhamento do 
processador e demais recursos. 
Permitir a execução de programas que sejam maiores que 
a memória física disponível  overlay e memória virtual. 
Proteger as áreas de memória ocupadas por cada 
processo, além da área onde reside o próprio sistema. 
 
 
 
 
 
 
 
Gerência de Memória 
Trazer programas para dentro da MP para ser executados 
pelo processador. 
Dividir dinamicamente a parte “User” da MP de forma que 
acomode vários processos. 
Alocar a memória de forma eficiente (evitar que o 
processador fique ocioso). 
“Rodar” um programa em que seu tamanho seja maior que 
o disponível pela memória real. 
 
 
Funções Básicas 
 O processador somente executa instruções localizadas 
na memória principal. 
 O SO deve transferir programas da memória secundária para a 
memória principal antes de serem executados. 
 O tempo de acesso à memória secundária é muito superior 
ao tempo de acesso à memória principal. 
 O SO deve buscar reduzir o número de operações de E/S à 
memória secundária. 
 
 
Funções Básicas 
Controlar quais partes da memória estão em uso. 
Controlar quais partes estão livres. 
Alocar memória a processos quando estes precisarem. 
Desalocar quando eles não mais necessitarem. 
Gerenciar a troca (swapping) dos processos entre MP e 
disco, quando a memória não é grande o suficiente para 
guardar todos os processos. 
 
 
Alocação de Memória 
Formas de organização dos programas na memória. 
Alocação Contínua Simples 
 A MP é subdividida em duas áreas: uma para o 
SO e outra para o programa de usuário. 
 Programador preocupado em não ultrapassar o 
espaço de memória disponível. 
 O usuário tem controle sobre toda a MP, 
podendo ter acesso a qualquer posição de 
memória, inclusive a área do SO. 
 Não permite a utilização eficiente dos recursos 
computacionais, pois apenas um usuário pode 
dispor desses recursos. 
 
Memória Principal
Sistema
Operacional
Área para
programa
Alocação Contínua Simples 
Memória Principal
Registrador
Sistema
Operacional
Área para
programa
Alguns sistemas implementam 
proteção através de um registrador 
que delimita as áreas do SO e do 
usuário. 
Memória Principal
Sistema
Operacional
Programa
do usuário
Área livre
Em relação a MP, caso o programa 
do usuário não a preencha 
totalmente existirá um espaço de 
memória livre sem utilização. 
Técnica de Overlay 
 Na alocação contínua simples todos os programas estão 
limitados ao tamanho da área de MP disponível para o 
usuário. 
 Solução para limitação da MP devido a alocação contínua 
simples: 
 Dividir o programa em módulos, de forma que seja possível a 
execução independente de cada módulo, utilizando uma 
mesma área de memória  overlay! 
 
Técnica de Overlay 
 Um programa com 3 módulos: 
principal, cadastramento e 
impressão. 
 Cadastramento e impressão são 
módulos independentes. 
 A independência do código 
significa que quando um 
módulo estiver na memória 
para execução o outro não 
precisa necessariamente estar 
presente. 
 
 
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Técnica de Overlay 
 O módulo principal é comum 
aos dois módulos. 
 Deve permanecer na 
memória durante todo o 
tempo da execução do 
programa. 
 A memória (10Kb) é 
insuficiente para carregar 
todo o programa (3Kb+ 
4Kb+4Kb). 
 
 
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Técnica de Overlay 
 A técnica overlay utiliza 
uma área de memória 
comum, onde os 
módulos de 
cadastramento e 
impressão poderão 
compartilhar a mesma 
área de memória  área 
de overlay! 
 
 
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Técnica de Overlay 
 Sempre que um dos dois módulos 
for referenciado pelo módulo 
principal, o módulo será carregado 
da memória secundária para a área 
de overlay. 
 O tamanho de uma área de overlay 
é estabelecido a partir do tamanho 
do maior módulo. 
 Vantagem: permite ao programador 
expandir os limites da MP. 
 
 
 
Memória Principal
Cadastramento
Impressão
Sistema Operacional2 Kb
3 Kb
4 Kb
4 Kb
2 Kb
2 Kb
1 Kb
Módulo principal
Área de overlay
Área livre
Área não
utilizada
Alocação Particionada 
 Alocação particionada estática. 
 
 Alocação particionada dinâmica. 
 
 Estratégias de Alocação de Partição. 
 
 
Alocação Particionada Estática 
 MP dividida em pedaços de tamanho fixo, chamados 
partições. 
 O tamanho das partições, estabelecido na fase de 
inicialização do sistema, é definido em função do tamanho 
dos programas que executariam no ambiente. 
 Alteração do tamanho de uma partição  o sistema deve 
ser desativado e reinicializado com uma nova 
configuração. 
 
 
 
Alocação Particionada Estática 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Partição 1Partição
Tabela de partições
Tamanho
1 2 Kb
2 5 Kb
3 8 Kb
Partição 2
Partição 3
Programas a serem executados:
AE
3 Kb
D
6 Kb
C
1 Kb
B
4 Kb 2 Kb
Alocação Particionada Estática 
Problemas: 
Colocação de um programa pequeno em uma partição 
grande. 
Partições vazias. 
 
Alocação Particionada 
Estática Absoluta 
 Os processos podem executar em apenas uma das 
partições, mesmo que outras estejam livres. 
 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Partição 1
Partição 2
Partição 3
A
B
D
C
E
3 Kb
6 Kb
1 Kb
4 Kb
2 Kb
Se os processos A e B 
estivessem executando e a 
partição 3 estivesse livre, os 
processos C e E não 
poderiam ser executados. 
Alocação Particionada 
Estática Relocável 
 Os processos sejam carregados em qualquer uma das 
partições. 
Se os processos A e B 
terminarem de executar, o 
processo E pode ser 
carregado e executado em 
qualquer uma das duas 
partições. 
Memória Principal
Sistema Operacional
2 Kb
5 Kb
8 Kb
Programa C
Programa A
Programa B
ED
6 Kb 3 Kb
Tabela de Alocação 
de Partições 
Para manter o controle 
sobre quais partições 
estão alocadas, a gerência 
de memória mantém uma 
tabela com: 
 o endereço inicial de cada 
partição, 
 seu tamanho e 
 se está em uso. 
Memória PrincipalSistema Operacional
1
2
3
Programa C
Área livre
Programa B
Partição Tamanho Livre
1 2 Kb Não
2 5 Kb Sim
3 8 Kb Não
Tabela de Alocação 
de Partições 
Memória Principal
Sistema Operacional
1
2
3
Programa C
Área livre
Programa B
Partição Tamanho Livre
1 2 Kb Não
2 5 Kb Sim
3 8 Kb Não
Sempre que um programa é carregado para 
a memória, o sistema percorre a tabela, na 
tentativa de localizar uma partição livre 
onde o programa possa ser carregado. 
Tabela de Alocação 
de Partições 
A proteção baseia-se 
em dois registradores, 
que indicam os limites 
inferior e superior da 
partição onde o 
programa está sendo 
executado. 
Fragmentação Interna 
 Os programas 
normalmente não 
preenchem totalmente as 
partições onde são 
carregados. 
 Problema decorrente da 
alocação fixa das 
partições. 
Memória Principal
Sistema Operacional
1 Kb
3 Kb
5 Kb
Programa C
Programa A
Programa E
BD
6 Kb 4 Kb
Alocação Particionada Dinâmica 
 Visa reduzir o problema da fragmentação interna. 
 
 Aumentar o grau de compartilhamento da memória. 
 
 É eliminado o conceito de partições de tamanho fixo. 
 
 Cada programa utiliza o espaço necessário, tornando 
essa área sua partição. 
 
 
 
 
 
 
Alocação Particionada Dinâmica 
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
4 Kb
1 Kb
3 Kb
5 Kb
2 Kb
15 Kb
Programa C
Programa B
Programa A
Programa E
BA
2 Kb
E
3 Kb
C
1 Kb 4 Kb
Alocação Particionada Dinâmica 
Problema: 
Quando os processos forem 
terminando e deixando 
espaços cada vez menores 
na memória, não permitindo o 
ingresso de novos processos. 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
D
6 Kb
Alocação Particionada Dinâmica 
Fragmentação Externa 
O programa não poderá ser 
carregado para a execução, 
pois o espaço não está 
disposto contiguamente. 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
D
6 Kb
Alocação Particionada Dinâmica 
Solução 1: 
 Conforme os 
programas terminam 
apenas os espaços 
livres adjacentes são 
reunidos, produzindo 
áreas livres de 
tamanho maior. 
 
Memória PrincipalMemória Principal
Sistema OperacionalSistema Operacional
8 Kb
4 Kb
3 Kb
5 Kb5 Kb
Programa C
Programa APrograma A
Caso o programa C (1 Kb) termine, uma 
área de 8 Kb é criada. 
Alocação Particionada Dinâmica 
Solução 2: 
 Relocação de todas 
as regiões ocupadas, 
eliminando todos os 
espaços entre elas e 
criando uma única 
área livre contígua. 
 
 
Memória PrincipalMemória Principal
Sistema Operacional
Relocação
Sistema Operacional
4 Kb
3 Kb
12 Kb
5 Kb
Programa C
Programa C
Programa A
Programa A
Alocação Particionada Dinâmica 
Solução 2: 
 É necessário que o 
sistema tenha a 
capacidade de mover 
os diversos programas 
na MP, ou seja, realizar 
relocação dinâmica 
(mecanismo de 
compactação). 
 
Memória PrincipalMemória Principal
Sistema Operacional
Relocação
Sistema Operacional
4 Kb
3 Kb
12 Kb
5 Kb
Programa C
Programa C
Programa A
Programa A
Estratégias de Alocação 
de Partição 
 Os SO implementam, basicamente, três estratégias 
para determinar em qual área livre um programa será 
carregado para execução. 
 Essas estratégias tentam evitar ou diminuir o problema 
da fragmentação externa. 
 O sistema possui uma lista de áreas livres, com o 
endereço e tamanho de cada área. 
Lista de Áreas Livres 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
Áreas livres
Área livre 1
Área livre 2
Área livre 3
Tamanho
1 4 Kb
2 5 Kb
3 3 Kb
Algoritmos de Alocação 
de Partições 
 First – fit. 
 
 Best – fit. 
 
 Worst – fit. 
 
 
 
 
 
First - fit 
 A primeira partição livre de tamanho suficiente para 
carregar o programa é escolhida. 
 
 
 
 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
3 Kb
Programa C
Programa A
Área livre
Programa F
Best - fit 
 A melhor partição é escolhida, ou seja, aquela em que o 
programa deixa menor espaço sem utilização. 
 
 
 
 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
2 Kb
Programa C
Programa F
Programa A
Área livre
Worst - fit 
 A pior partição é escolhida, ou seja, aquela em que o 
programa deixa maior espaço sem utilização. 
 
 
 
 
 
Memória Principal
Sistema Operacional
4 Kb
3 Kb
5 Kb
Programa C
Programa A
F
1 Kb
Sistema Operacional
4 Kb
Programa C
Programa A
Área livre
Programa F
Swapping 
 Muitas vezes um programa não pode ser executado por 
falta de uma partição livre disponível. 
 
 A técnica swapping foi introduzida para contornar o 
problema da insuficiência de memória principal. 
 
 
 
 
 
 
 
Swapping 
Memória Principal
Memória Principal
Sistema
Operacional
Sistema
Operacional
Programa A
Programa A
Programa G
Área Livre
Swap in
Swap out
Arquivo
de Swap
Programa E
Programa E
Programa B
Programa H
H
B
B
O SO escolhe um processo 
residente, que é transferido 
da MP para a memória 
secundária (swap out). 
Posteriormente, o processo 
é carregado de volta da 
memória secundária para a 
MP (swap in). 
Swapping 
 Os processos retirados da memória estão geralmente no 
estado de espera, 
 mas ainda existe a possibilidade de um processo no estado 
de pronto também ser selecionado para swapping. 
 
 Os processos no estado de espera ou pronto quando 
fora de memória são ditos não residentes (outswapped). 
 
 
 
 
 
 
 
 
 
Swapping 
O conceito de swapping permite: 
Um maior compartilhamento da MP; 
Uma maior utilização dos recursos do sistema 
computacional. 
Problema: 
Elevado custo das operações de entrada/saída (swap 
in/out).