Sistemas Operacionais Gerência de Memória

Propaganda
Universidade Estadual de Mato Grosso do Sul – UEMS
Curso de Computação, Licenciatura
Sistemas Operacionais
Gerência de Memória
Prof. José Gonçalves Dias Neto
[email protected]
Introdução
A memória principal sempre foi vista como um
recurso escasso e caro.
Nos ambientes monoprogramados a gerência
de memória não é muito complexa, já nos
multiprogramados torna-se crítica;
Precisamos sempre desenvolver SO que não
ocupem muito espaço de memória e que
otimizem a utilização de recursos.
Funções básicas da gerência de
memória
Programas ficam dispostos em memória secundária,
mas o processador só executa instruções vindas da
memória principal.
Tempo de acesso da memória secundária é muito
maior do que o acesso a memória principal.
SO deve reduzir o número de instruções de E/S para
não causar perda de desempenho;
A gerência de memória deve tentar manter na memória
principal o maior número de processos residentes;
Mesmo na ausência de espaço livre, o SO deve
permitir a criação e execução de novos processos;
Funções básicas da gerência de
memória
O SO consegue transferir temporariamente
processos da memória principal para a memória
secundária, caso a primeira esteja cheia
(swapping);
Deve-se permitir a execução de programas maiores
do que a memória física disponível;
O SO deve proteger as áreas de memória
ocupadas por cada processos, inclusive as áreas
que o próprio SO reside;
Apesar da proteção, o SO deve permitir áreas de
compartilhamento entre processos.
Alocação Contígua
Implementada nos primeiros SO monoprogramados;
A memória principal é dividida em duas áreas, uma para
o SO e a outra para o programa de usuário;
Aqui o programador deve preocupar-se apenas em não
ultrapassar o espaço de memória disponível;
Nesse esquema o usuário tem acesso a toda a memória
disponível, incluindo a ocupada pelo SO;
Como tentativa de proteção, alguns SO marcam o
espaço ocupado por este através de um registrador;
Alocação Contígua
Overlay
É a divisão do programa em módulos, que permite
a execução independente de cada módulo,
utilizando a mesma área de memória;
Considere:




Um programa maior que a memória disponível, com 3
módulos (Principal, Cadastro e impressão);
Cadastro e Impressão são independentes um do outro;
O programador cria uma área de memória que será utilizada
alternadamente entre os módulos independentes;
Esta área deve ser do tamanho capaz de armazenar o
maior módulo;
Overlay
Alocação Particionada
Nos sistemas monoprogramados o processador
permanece muito tempo ocioso e a memória
principal subutilizada;
Os sistemas multiprogramados permitem que
diversos programas estejam residentes em
memória principal ao mesmo tempo;
Existem duas técnicas de alocação particionada,
a estática e a dinâmica;
Alocação Particionada Estática
Nos primeiros sistemas multiprogramados, a memória era
divida em partições de tamanho fixo;
O tamanho das partições era definido durante o boot do
sistema;
Sempre que necessitasse alterar o tamanho das partições, o
SO deveria ser desativado e reiniciado;
Inicialmente os programas só podiam ser carregados e
executados em uma partição específica devido conter o
código absoluto (endereços físicos de memória).
Neste caso não sendo possível a utilização de outra área de
memória pelo programa, mesmo que esta estivesse vazia;
Alocação Particionada Estática
Alocação Particionada Estática
Absoluta
Alocação Particionada Estática
Com a evolução dos compiladores, o código
deixou de ser absoluto passando a ser
relocável;
Todas as referências a endereços são para com o
inicio do código e não a endereços físicos de
memória;
No momento do carregamento, o SO calcula os
espaços de memória segundo o inicio do código,
permitindo que programas reaproveitem áreas
de memória vazias deixadas por programas já
desalocados.
Alocação Particionada Estática
Relocável
Alocação Particionada Estática
A gerência de memória mantém uma tabela com
dados referentes a cada partição (endereço inicial, tamanho e status);
Antes de carregar um programa para a memória,
o SO percorre a tabela buscando áreas livres;
Alocação Particionada Estática
Alocação Particionada Estática
A proteção das partições baseiase em dois registradores que
armazena o endereço inicial e o
endereço final da partição.
Alocação Particionada Estática
Independente da alocação particionada estática
ser absoluta ou estática, ainda assim os
programas deixam áreas de memória livres que
não podem ser utilizadas;
Isso ocorre que raramente um programa ocupara
toda a área de memória disponível na partição;
Este problema é denominado Fragmentação Interna
Alocação Particionada Estática
Alocação Particionada Dinâmica
Veio para sanar o problema da fragmentação
interna e aumentar o grau de compartilhamento
de memória principal;
Eliminou o conceito de partições de tamanho fixo;
Cada programa utiliza o espeço de memória
necessário, fazendo deste a sua partição;
Com isso o problema da fragmentação interna é
resolvido.
Alocação Particionada Dinâmica
Alocação Particionada Dinâmica
O problema é que na medida que programas
sejam desalocados e outros sejam alocados em
seus lugares, provavelmente ocorrerá a sobra
de espaços cada vez menores de memória livre;
Isso não permitirá o ingresso de novos programas.
A este novo problema é dado o nome de
fragmentação externa.
Fragmentação Externa
Alocação Particionada Dinâmica
Solução 1: Reunir os espaços de memória livres adjacentes
Alocação Particionada Dinâmica
Solução 2: Realocar todas as partições ocupadas, eliminando os
espaços entre elas. (alto custo computacional)
Estratégias de Alocação de Partição
Existem 3 (três) abordagens utilizadas pelos SO
modernos para decidir em qual espaço de
memória alocar o programas:
•
•
•
Best-fit
Worst-fit
First-fit
Independente da abordagem adotada, o sistema
mantém uma lista das áreas livres, com
endereço e tamanho de cada uma
Estratégias de Alocação de Partição
Estratégias de Alocação de Partição
Best-fit: (Melhor partição)
O critério é escolher a partição em que o programa deixe o menor espaço sem
utilização;
Ordena a lista de partições por tamanho;
Tende a aumenta a fragmentação;
Worst-fit: (Pior partição)
Escolhe a maior partição possível;
Tende a diminuir a incidência de fragmentação;
First-fit: (primeira partição)
Escolhe a primeira partição da lista com tamanho suficiente para armazenar o
programa;
Ordena crescentemente a lista de partições segundo seu endereço;
Considerada a estratégia mais rápida e com menor consumo de recursos;
Swapping
Muitas vezes um programa não pode ser
executado por falta de partição de memória
disponível;
O sistema escolhe um processo residente em
memória principal e o transfere para a memória
secundária (geralmente HD); (swap out)
Posteriormente o processo transferido retorna a
memória principal; (swap in)
O problema é: Qual processo escolher?
Swapping
Swapping
O algoritmo de swapping deve tentar transferir sempre
o processo com menor probabilidade de executar;
Geralmente são transferidos os processos em estado
de bloqueado (espera), mas também pode ocorrer
com processo no estado de pronto;
Vantagem:
Aumento do compartilhamento da memória principal;
Desvantagem:
Alto custo das operações de E/S;
Exercícios
1- Considere um sistema computacional com
40Kb de memória principal e que utilize um
sistema operacional de 10Kb que implemente
alocação contígua de memória. Qual a
taxa de subutilização de memória principal para
um programa que ocupe 20Kb de memória?
(responda em percentual)
Exercícios
2- Suponha um sistema computacional com 64Kb
de memória principal e que utilize um sistema
operacional de 14Kb que implemente alocação contígua de memória.
Considere também um programa de 90Kb, formado
por um módulo principal de 20Kb e três módulos
independentes de 10Kb, 20Kb e 30 Kb. como o
programa poderia ser executado em memória
utilizando apenas a técnica de overlay?
Exercícios
3- Suponha um sistema computacional com 128KB de
memória principal e que utilize um sistema
operacional de 64Kb que implementa alocação particionada estática relocável. Considere
também que o sistema foi inicializado com três
partições: P1 (8KB), P2 (24KB) e P3 (32 KB). Calcule
a fragmentação interna da memória principal após a
carga de três programas PA, PB, PC:
a) P1← PA(6KB), P2← PB(20KB), P3← PC(28KB)
b) P1← PA(4KB), P2← PB(16KB), P3← PC(26KB)
c) P1← PA(8KB), P2← PB(24KB), P3← PC(32KB)
Exercícios
4 – Um sistema utiliza alocação particionada dinâmica
como mecanismo de gerência de memória. O sistema
operacional aloca uma área de memória total de 50Kb e
possui, inicialmente, os programas dispostos a seguir
PROGRAMA A
5kB
PROGRAMA B
3kB
LIVRE
10kB
PROGRAMA C
6kB
LIVRE
26kB
Realize as operações a seguir sequencialmente mostrando o
estado da memória após cada uma delas. Resolva a questão
utilizando as estratégias best-fit, worst-fit, first-fit
a) Alocar uma área para o programa D que possui 6Kb
b) Liberar a área do programa A;
c) Alocar uma área para o programa E que possui 4Kb;
Download