SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Gerenciamento
de Mémoria
• Disciplina: Organização e Arquitetura de
Computadores
• Curso: Sistema de Informação
• Prof. Wilton Ferreira
• Contato: wiltonof@gmail.com
Gerência de Memória
História

• Historicamente, a memória principal sempre foi vista como um recurso
escasso e caro.
• Uma das maiores preocupações dos projetistas foi desenvolver
sistemas operacionais que não ocupassem muito espaço de memória e,
ao mesmo tempo, otimizassem a utilização dos recursos
computacionais.
• Mesmo atualmente, com a redução de custo e conseqüente aumento
da capacidade da memória principal, seu gerenciamento é um dos
fatores mais importantes no projeto de sistemas operacionais.
• Enquanto nos sistemas monoprogramáveis a gerência da memória não
é muito complexa, nos sistemas multiprogramáveis ela se toma crítica,
devido à necessidade de se maximizar o número de usuários e
aplicações utilizando eficientemente o espaço da memória principal.
Gerência de Memória
Funções Básicas

• Em geral, programas são armazenados em memórias secundárias,
como disco ou fita, por ser um meio não-volátil, abundante e de baixo
custo.
• Como o processador somente executa instruções localizadas na
memória principal, o sistema operacional deve sempre transferir
programas da memória secundária para a memória principal antes de
serem executados.
• Como o tempo de acesso à memória secundária é muito superior ao
tempo de acesso à memória principal, o sistema operacional deve
buscar reduzir o número de operações de E/S à memória secundária,
caso contrário podem ser ocasionados sérios problemas no
desempenho do sistema.
Gerência de Memória
Funções Básicas

• A gerência de memória deve tentar manter na memória principal o
maior número de processos residentes, permitindo maximizar o
compartilhamento do processador e demais recursos computacionais.
• Mesmo na ausência de espaço livre, o sistema deve permitir que novos
processos sejam aceitos e executados.
• Isso é possível através da transferência temporária de processos
residentes na memória principal para a memória secundária, liberando
espaço para novos processos.
• Esse mecanismo é conhecido como swapping, e será detalhado
posteriormente.
• Outra preocupação na gerência de memória é permitir a execução de
programas que sejam maiores que a memória física disponível,
implementada através de técnicas como o overlay e a memória virtual.
Gerência de Memória
Funções Básicas

• Em um ambiente de multiprogramação, o sistema operacional deve
proteger as áreas de memória ocupadas por cada processo, além da
área onde reside o próprio sistema.
• Caso um programa tente realizar algum acesso indevido à memória, o
sistema de alguma forma deve impedi-lo.
• Apesar de a gerência de memória garantir a proteção de áreas da
memória, mecanismos de compartilhamento devem ser oferecidos para
que diferentes processos possam trocar dados de forma protegida.
Gerência de Memória
Alocação Contígua Simples
Memória Principal

Área Livre

SO

RL

Se (Endereço do Programa >= RL [Registrador Limite]) Então
Acesso Normal;
Caso contrário
Exceção;
Gerência de Memória
Alocação Contígua Simples

• A alocação contígua simples foi implementada nos primeiros sistemas
operacionais, porém ainda está presente em alguns sistemas
monoprogramáveis.
• Nesse tipo de organização, a memória principal é subdividida em duas
áreas: uma para o sistema operacional e outra para o programa do
usuário.
• Dessa forma, o programador deve desenvolver suas aplicações
preocupado, apenas, em não ultrapassar o espaço de memória
disponível, ou seja, a diferença entre o tamanho total da memória
principal e a área ocupada pelo sistema operacional.
• Nesse esquema, o usuário tem controle sobre toda a memória principal,
podendo ter acesso a qualquer posição de memória, inclusive a área do
sistema operacional.
Gerência de Memória
Alocação Contígua Simples

• Para proteger o sistema desse tipo de acesso, que pode ser intencional ou
não, alguns sistemas implementam proteção através de um registrador
que delimita as áreas do sistema operacional e do usuário.
• Dessa forma, sempre que um programa faz referência a um endereço na
memória, o sistema verifica se o endereço está dentro dos limites
permitidos.
• Caso não esteja, o programa é cancelado e uma mensagem de erro é
gerada, indicando que houve uma violação no acesso à memória principal.
• Apesar da fácil implementação e do código reduzido, a alocação contígua
simples não permite a utilização eficiente dos recursos computacionais,
pois apenas um usuário pode dispor desses recursos.
• Em relação à memória principal, caso o programa do usuário não a
preencha totalmente existirá um espaço de memória livre sem utilização.
Gerência de Memória
Alocação Contígua Simples

Memória Principal

Área Livre
Memória
sendo
subutilizada

Programa do
Usuário
SO
Gerência de Memória
Alocação Particionada

• Os sistemas operacionais evoluíram no sentido de proporcionar melhor
aproveitamento dos recursos disponíveis.
• Nos sistemas monoprogramáveis, o processador permanece grande
parte do tempo ocioso e a memória principal é subutilizada.
• Os sistemas multiprogramáveis já são muito mais eficientes no uso do
processador, necessitando assim, que diversos programas estejam na
memória principal ao mesmo tempo e que novas formas de gerência da
memória sejam implementadas.
Gerência de Memória

Alocação Particionada Estáticas
• Nos primeiros sistemas multiprogramáveis, a memória era dividida em
pedaços de tamanho fixo, chamados partições.
• O tamanho das partições, estabelecido na fase de inicialização do
sistema, era definido em função do tamanho dos programas que
executariam no ambiente.
• Sempre que fosse necessária a alteração do tamanho de uma partição,
o sistema deveria ser desativado e reinicializado com uma nova
configuração.
• Esse tipo de gerência de memória é conhecido como alocação
particionada estática ou fixa.
Gerência de Memória

Alocação Particionada Estáticas
Tabela de Partições

Memória Principal

Partição

Tamanho

Livre

1

2 KB

Sim/Não

2

5 KB

Sim/Não

3

11 KB

Sim/Não

Programas a serem executados
E

D

C

B

A

3 KB

6 KB

1 KB

4 KB

2 KB

Partição 3

11 KB

Partição 2

5 KB

Partição 1

2 KB

SO
Gerência de Memória

Alocação Particionada Estáticas
• Inicialmente, os programas só podiam ser carregados e executados em
apenas uma partição específica, mesmo se outras estivessem disponíveis.
• Essa limitação se devia aos compiladores e montadores que geravam
apenas código absoluto.
• No código absoluto todas as referências a endereços no programa são
posições físicas na memória principal, ou seja, o programa só poderia ser
carregado a partir do endereço de memória especificado no seu próprio
código.
• Se, por exemplo, os programas A e B estivessem sendo executados e a
terceira partição estivesse livre, os programas C e E não poderiam ser
processados.
• A esse tipo de gerência de memória chamou-se alocação particionada
estática absoluta
Gerência de Memória

Alocação Particionada Estáticas Absoluta

Memória Principal

D

Partição 3

11 KB

Partição 2

5 KB

Partição 1

2 KB

6 KB

E

B

3 KB

4 KB

C

A

1 KB

2 KB

SO
Gerência de Memória

Alocação Particionada Estáticas Relocável
• Com a evolução dos compiladores, montadores, linkers e loaders, o
código gerado deixou de ser absoluto e passou a ser relocável.
• No código relocável, todas as referências a endereços no programa são
relativas ao início do código, e não a endereços físicos de memória.
• Desta forma, os programas puderam ser executados a partir de
qualquer partição.
• Quando o programa é carregado, o loader calcula todos os endereços a
partir da posição inicial onde o programa foi alocado.
• Caso os programas A e B terminassem, o programa E poderia ser
executado em qualquer uma das duas partições.
• Esse tipo de gerência de memória é denominado alocação particionada
estática relocável.
Gerência de Memória

Alocação Particionada Estáticas Relocável

Memória Principal

Partição 3
E

D

C

B

6 KB

1 KB

4 KB

2 KB

Partição 2

5 KB

Partição 1

2 KB

A

3 KB

11 KB

SO
Gerência de Memória

Alocação Particionada Estáticas Realocável
• 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.
• 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.
• Nesse esquema de alocação de memória a proteção baseia-se em dois
registradores, que indicam os limites inferior e superior da partição
onde o programa está sendo executado.
• Caso o programa tente acessar uma posição de memória fora dos
limites definidos pelos registradores, ele é interrompido e uma
mensagem de violação de acesso é gerada pelo sistema operacional.
Gerência de Memória

Alocação Particionada Estáticas Realocável

Memória Principal

Partição 3

Se (Endereço do Programa < RLS) .E. (Endereço do Programa >= RLI) Então
Acesso Normal;
Caso contrário
Exceção;

RLS
Partição 2
Partição 1
SO

RLI
Gerência de Memória

Alocação Particionada Estáticas Realocável
• Tanto nos sistemas de alocação absoluta quanto nos de alocação
relocável os programas, normalmente, não preenchem totalmente as
partições onde são carregados.
• Por exemplo, os programas C, A e E não ocupam integralmente o
espaço das partições onde estão alocados, deixando 1 Kb, 3 Kb e 5 Kb
de áreas livres, respectivamente.
• Esse tipo de problema, decorrente da alocação fixa das partições, é
conhecido como fragmentação interna.
Gerência de Memória

Alocação Particionada Estáticas Realocável

Memória Principal
Área Livre
Partição 3
Processo E

Área Livre
Partição 2
Processo A

Partição 1

Área Livre
Processo C

SO

Fragmentação Interna
Gerência de Memória

Alocação Particionada Dinâmico
• A alocação particionada estática, analisada anteriormente, deixou
evidente a necessidade de uma nova forma de gerência da memória
principal, em que o problema da fragmentação interna fosse reduzido
e, conseqüentemente, o grau de compartilhamento da memória
aumentado.
• Na alocação particionada dinâmica, ou variável, foi eliminado o
conceito de partições de tamanho fixo.
• Nesse esquema, cada programa utilizaria o espaço necessário, tornando
essa área sua partição.
• Como os programas utilizam apenas o espaço de que necessitam, no
esquema de alocação particionada dinâmica o problema da
fragmentação interna não ocorre.
Gerência de Memória

Alocação Particionada Dinâmico

Memória Principal

Memória Principal
Área Livre

Processo E

3 KB

Processo D

6 KB

Processo C

1 KB

Processo B

4 KB

Processo A

Área Livre

2 KB

2 KB

18 KB

SO

SO
Gerência de Memória

Alocação Particionada Dinâmico
• A princípio, o problema da fragmentação interna está resolvido, porém
nesse caso existe um problema que não é tão óbvio quanto no esquema
anterior.
• Um diferente tipo de fragmentação começará a ocorrer, quando os
programas forem terminando e deixando espaços cada vez menores na
memória, não permitindo o ingresso de novos programas.
• Isto acontece porque os programas necessitam de endereços contíguos
na memória principal.
• A este tipo de problema dá-se o nome de fragmentação externa.
Gerência de Memória

Alocação Particionada Dinâmico

Memória Principal
Área Livre

Processo E

F

1 KB

Processo B

4 KB

Área Livre

SO

6 KB

Área Livre

3 KB

3 KB

Processo D

x

2 KB

2 KB

Fragmentação Externa
Gerência de Memória

Alocação Particionada Dinâmico
• Existem duas soluções para o problema da fragmentação externa da
memória principal.
• Na primeira solução, conforme os programas terminam apenas os espaços
livres adjacentes são reunidos, produzindo áreas livres de tamanho maior.
• A segunda solução envolve a relocação de todas as partições ocupadas,
eliminando todos os espaços entre elas e criando uma única área livre
contígua.
• Para que esse processo seja possível é necessário que o sistema tenha a
capacidade de mover os diversos programas na memória principal, ou seja,
realizar relocação dinâmica.
• Esse mecanismo de compactação, também conhecido como alocação
particionada dinâmica com relocação (desfragmentação), reduz em muito
o problema da fragmentação, porém a complexidade do seu algoritmo e o
consumo de recursos do sistema, como processador e área em disco,
podem torná-lo inviável.
Gerência de Memória

Alocação Particionada Dinâmico - Desfragmentação
Memória Principal
Área Livre

Memória Principal
2 KB
Área Livre

Processo E

5 KB

Processo E

3 KB

Processo D

6 KB

Processo B

4 KB

3 KB
Desfragmentando

F

x

Processo D

Área Livre

3 KB

6 KB
1 KB

Processo B
Área Livre

SO

4 KB
2 KB

SO
Gerência de Memória

Alocação Particionada Dinâmico - Desfragmentação
Memória Principal
Área Livre

Processo F

3 KB

Processo E

3 KB

Processo D

6 KB

Processo B

F

2 KB

4 KB

3 KB

SO
Gerência de Memória

Estratégias de Alocação de Partição
• Os sistemas operacionais 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.
• A melhor estratégia a ser adotada por um sistema depende de uma
série de fatores, sendo o mais importante o tamanho dos programas
processados no ambiente.
• Independentemente do algoritmo utilizado, o sistema possui uma lista
de áreas livres, com o endereço e tamanho de cada área.
Gerência de Memória

Estratégias de Alocação de Partição
• Best-fit
Na estratégia best-fit é escolhida a partição onde o programa deixa
o menor espaço sem utilização.
Nesse algoritmo, a lista de áreas livres está ordenada por tamanho,
diminuindo o tempo de busca por uma área desocupada.
Uma grande desvantagem desse método é conseqüência do próprio
algoritmo. Como é alocada a partição que deixa a menor área livre,
a tendência é que cada vez mais a memória fique com pequenas
áreas não-contíguas, aumentando o problema da fragmentação.
Gerência de Memória

Estratégias de Alocação de Partição
• Worst-fit
Na estratégia worst-fit é escolhida a partição onde o programa deixa
o maior espaço sem utilização.
Apesar de utilizar as maiores partições, a técnica de worst-fit deixa
espaços livres maiores que permitem a um maior número de
programas utilizar a memória, diminuindo o problema da
fragmentação.
Gerência de Memória

Estratégias de Alocação de Partição
• First-fit
Na estratégia first-fit, a primeira partição livre de tamanho suficiente
para carregar o programa é escolhida.
Nesse algoritmo, a lista de áreas livres está ordenada por endereços
crescentemente.
Como o método tenta primeiro utilizar as áreas livres de endereços
mais baixos, existe uma grande chance de se obter uma grande
partição livre nos endereços de memória mais altos.
Das três estratégias apresentadas, a first-fit é a mais rápida,
consumindo menos recursos do sistema.
Gerência de Memória
Swapping

• Mesmo com o aumento da eficiência da multiprogramação e,
particularmente, da gerência de memória, muitas vezes um programa
não podia ser executado por falta de uma partição livre disponível.
• A técnica de swapping foi introduzida para contornar o problema da
insuficiência de memória principal.
• Em todos os esquemas apresentados anteriormente, um processo
permanecia na memória principal até o final da sua execução, inclusive
nos momentos em que esperava por um evento, como uma operação
de leitura ou gravação.
• O swapping é uma técnica aplicada à gerência de memória para
programas que esperam por memória livre para serem executados.
Gerência de Memória
Swapping

• Nesta situação, o sistema escolhe um processo residente, que é
transferido da memória principal para a memória secundária (swap
out), geralmente o disco.
• Posteriormente, o processo é carregado de volta da memória
secundária para a memória principal (swap in) e pode continuar sua
execução como se nada tivesse ocorrido.
Gerência de Memória
Swapping

Memória Principal

Memória Principal

Área Livre

2 KB

3 KB

Processo F

3 KB

Processo E

3 KB

Processo E

3 KB

Processo D

6 KB

Processo D

6 KB

Área Livre

x

Área Livre

Processo F

G

2 KB

1 KB

Processo G

3 KB

3 KB

Processo B

SO

Swap out

4 KB

SO
Gerência de Memória
Swapping

Memória Principal
Área Livre

Processo B

4 KB

Processo E

3 KB

Processo D

6 KB

Área Livre

1 KB

Processo G

SO

1 KB

3 KB

Swap in
Gerência de Memória
Swapping

• O algoritmo de escolha do processo a ser retirado da memória principal
deve priorizar aquele com menores chances de ser escalonado para
evitar o swapping desnecessário de um processo que será executado
logo em seguida.
• 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 da memória
são ditos não-residentes (outswapped).
Gerência de Memória
Swapping

• Para que a técnica de swapping seja implementada é essencial que o
sistema ofereça um loader que implemente a relocação dinâmica de
programas.
• Um loader relocável que não ofereça esta facilidade permite que um
programa seja colocado em qualquer posição de memória, porém a
relocação é apenas realizada no momento do carregamento.
• No caso do swapping, um programa pode sair e voltar diversas vezes
para a memória, sendo necessário que a relocação seja realizada pelo
loader a cada carregamento.
Gerência de Memória
Swapping

• A relocação dinâmica é realizada através de um registrador especial
denominado registrador de relocação.
• No momento em que o programa é carregado na memória, o
registrador recebe o endereço inicial da posição de memória que o
programa irá ocupar.
• Toda vez que ocorrer uma referência a algum endereço, o endereço
contido na instrução será somado ao conteúdo do registrador, gerando,
assim, o endereço físico.
• Dessa forma, um programa pode ser carregado em qualquer posição de
memória.
Gerência de Memória
Endereçamento Relativo

Endereço Inicial de Partição

Endereço Solicitado (Relativo)

+

Endereço Físico de Memória
Gerência de Memória

Swapping – Consideraçoes Finais
• O conceito de swapping permite um maior compartilhamento da
memória principal e, conseqüentemente, uma maior utilização dos
recursos do sistema computacional.
• Seu maior problema é o elevado custo das operações de entrada/saída
(swap in/out).
• Em momentos em que há pouca memória disponível, o sistema pode
ficar quase que dedicado à realização de swapping, deixando de
executar outras tarefas e impedindo a execução dos demais processos
residentes.
• Esta situação é denominada thrashing, e é considerada um problema
crítico na gerência de memória dos sistemas operacionais.

Weitere ähnliche Inhalte

Was ist angesagt?

Avarias mais comuns nos computadores
Avarias mais comuns nos computadoresAvarias mais comuns nos computadores
Avarias mais comuns nos computadoresedlander
 
SO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoSO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoEduardo Nicola F. Zagari
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Pepe Rocker
 
Funções e caracteristicas de um so
Funções e caracteristicas de um soFunções e caracteristicas de um so
Funções e caracteristicas de um soMiriamMiguel
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivoscamila_seixas
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoriaaudineisilva1
 
Gerencia de Memoria Virtual
Gerencia de Memoria VirtualGerencia de Memoria Virtual
Gerencia de Memoria VirtualGabriela Almeida
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivosPaulo Fonseca
 
Capítulo 6 Sistemas Operacionais Modernos
Capítulo 6 Sistemas Operacionais ModernosCapítulo 6 Sistemas Operacionais Modernos
Capítulo 6 Sistemas Operacionais ModernosWellington Oliveira
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Faculdade Mater Christi
 
ApresentaçãO Tipos De Memorias
ApresentaçãO  Tipos De MemoriasApresentaçãO  Tipos De Memorias
ApresentaçãO Tipos De Memoriasecompo
 
Sistemas operacionais de redes particionamento de discos ii
Sistemas operacionais de redes   particionamento de discos iiSistemas operacionais de redes   particionamento de discos ii
Sistemas operacionais de redes particionamento de discos iiCarlos Melo
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisLuciano Crecente
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidadeClaudia Costa
 
Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootávelFrancis Torres
 
SO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoSO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoEduardo Nicola F. Zagari
 
Aula 19 instalação de drivers de dispositivos
Aula 19   instalação de drivers de dispositivosAula 19   instalação de drivers de dispositivos
Aula 19 instalação de drivers de dispositivosMarcos Basilio
 

Was ist angesagt? (20)

Avarias mais comuns nos computadores
Avarias mais comuns nos computadoresAvarias mais comuns nos computadores
Avarias mais comuns nos computadores
 
SO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e AlocaçãoSO-05 Gerenciamento de Memória e Alocação
SO-05 Gerenciamento de Memória e Alocação
 
Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)Sistemas Operativos (Operating Systems)
Sistemas Operativos (Operating Systems)
 
Memória virtual
Memória virtualMemória virtual
Memória virtual
 
Funções e caracteristicas de um so
Funções e caracteristicas de um soFunções e caracteristicas de um so
Funções e caracteristicas de um so
 
Aula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivosAula 3: Introdução a sistema de arquivos
Aula 3: Introdução a sistema de arquivos
 
Gerenciamento de Memoria
Gerenciamento de MemoriaGerenciamento de Memoria
Gerenciamento de Memoria
 
Gerencia de Memoria Virtual
Gerencia de Memoria VirtualGerencia de Memoria Virtual
Gerencia de Memoria Virtual
 
Apostila 8 sistema de arquivos
Apostila 8   sistema de arquivosApostila 8   sistema de arquivos
Apostila 8 sistema de arquivos
 
Capítulo 6 Sistemas Operacionais Modernos
Capítulo 6 Sistemas Operacionais ModernosCapítulo 6 Sistemas Operacionais Modernos
Capítulo 6 Sistemas Operacionais Modernos
 
Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)Sistemas de arquivos cap 04 (iii unidade)
Sistemas de arquivos cap 04 (iii unidade)
 
Aula 06-sistemas de-arquivo
Aula 06-sistemas de-arquivoAula 06-sistemas de-arquivo
Aula 06-sistemas de-arquivo
 
ApresentaçãO Tipos De Memorias
ApresentaçãO  Tipos De MemoriasApresentaçãO  Tipos De Memorias
ApresentaçãO Tipos De Memorias
 
Sistemas operacionais de redes particionamento de discos ii
Sistemas operacionais de redes   particionamento de discos iiSistemas operacionais de redes   particionamento de discos ii
Sistemas operacionais de redes particionamento de discos ii
 
Noções básicas de Sistemas Operacionais
Noções básicas de Sistemas OperacionaisNoções básicas de Sistemas Operacionais
Noções básicas de Sistemas Operacionais
 
Memoria cache princípio da localidade
Memoria cache   princípio da localidadeMemoria cache   princípio da localidade
Memoria cache princípio da localidade
 
Formatando o computador
Formatando o computadorFormatando o computador
Formatando o computador
 
Criação do pendrive bootável
Criação do pendrive bootávelCriação do pendrive bootável
Criação do pendrive bootável
 
SO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e SegmentaçãoSO-06 Gerenciamento de Memória: Paginação e Segmentação
SO-06 Gerenciamento de Memória: Paginação e Segmentação
 
Aula 19 instalação de drivers de dispositivos
Aula 19   instalação de drivers de dispositivosAula 19   instalação de drivers de dispositivos
Aula 19 instalação de drivers de dispositivos
 

Andere mochten auch

Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de Memóriaelliando dias
 
Memoria Virtual - Gerenciamento
Memoria Virtual - GerenciamentoMemoria Virtual - Gerenciamento
Memoria Virtual - GerenciamentoErichBraganca
 
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Leinylson Fontinele
 
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...Leinylson Fontinele
 
Gerenciamento de memoria
Gerenciamento de memoriaGerenciamento de memoria
Gerenciamento de memoriaJailson Silva
 
Sistemas Operacionais 13 gerenciamento de memória
Sistemas Operacionais  13   gerenciamento de memóriaSistemas Operacionais  13   gerenciamento de memória
Sistemas Operacionais 13 gerenciamento de memóriaMauro Duarte
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Normas powerpoint esaof
Normas powerpoint esaofNormas powerpoint esaof
Normas powerpoint esaofEduardo Roque
 
Algumas normas para realização de um PowerPoint
Algumas normas para realização de um PowerPointAlgumas normas para realização de um PowerPoint
Algumas normas para realização de um PowerPointJosé Alemão
 

Andere mochten auch (13)

Gerenciamento de Memória
Gerenciamento de MemóriaGerenciamento de Memória
Gerenciamento de Memória
 
Memoria Virtual - Gerenciamento
Memoria Virtual - GerenciamentoMemoria Virtual - Gerenciamento
Memoria Virtual - Gerenciamento
 
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
Introdução à Computação Aula 06 - Sistemas Operacionais (funções básicas de u...
 
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...
Introdução à Computação Aula 05 - Sistemas Operacionais (arquitetura do SO, p...
 
Gerenciamento de memoria
Gerenciamento de memoriaGerenciamento de memoria
Gerenciamento de memoria
 
Sistemas Operacionais 13 gerenciamento de memória
Sistemas Operacionais  13   gerenciamento de memóriaSistemas Operacionais  13   gerenciamento de memória
Sistemas Operacionais 13 gerenciamento de memória
 
POO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em JavaPOO - 03 - Alocação de Memória em Java
POO - 03 - Alocação de Memória em Java
 
SO-08 Sistemas de Arquivos
SO-08 Sistemas de ArquivosSO-08 Sistemas de Arquivos
SO-08 Sistemas de Arquivos
 
Sistemas de Arquivos do Windows
Sistemas de Arquivos do WindowsSistemas de Arquivos do Windows
Sistemas de Arquivos do Windows
 
Sistemas operacionais
Sistemas operacionaisSistemas operacionais
Sistemas operacionais
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Normas powerpoint esaof
Normas powerpoint esaofNormas powerpoint esaof
Normas powerpoint esaof
 
Algumas normas para realização de um PowerPoint
Algumas normas para realização de um PowerPointAlgumas normas para realização de um PowerPoint
Algumas normas para realização de um PowerPoint
 

Ähnlich wie Aula 9 gerenciamento_memoria (1)

12/03/2010 - Sistemas Operacionais Aula3
12/03/2010 - Sistemas Operacionais Aula312/03/2010 - Sistemas Operacionais Aula3
12/03/2010 - Sistemas Operacionais Aula3Universal.org.mx
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisJocelma Rios
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2Paulo Fonseca
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2Paulo Fonseca
 
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdf
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdfSO03 - Sistemas-Operacionais - Gerencia de Memoria.pdf
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdfSilvano Oliveira
 
Resumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosResumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosJoo200
 
Aula 3- Disciplina:Pratica Técnico Profi
Aula 3- Disciplina:Pratica Técnico ProfiAula 3- Disciplina:Pratica Técnico Profi
Aula 3- Disciplina:Pratica Técnico ProfiSaquina1
 
Informática - Aula 3
Informática - Aula 3Informática - Aula 3
Informática - Aula 3IBEST ESCOLA
 
Sistemas operacionais memória no linux
Sistemas operacionais   memória no linuxSistemas operacionais   memória no linux
Sistemas operacionais memória no linuxCarlos Melo
 
Memória Virtual - Aspectos Básicos
Memória Virtual - Aspectos BásicosMemória Virtual - Aspectos Básicos
Memória Virtual - Aspectos Básicosblumenschein
 
Sistemas de Arquivos.pptx
Sistemas de Arquivos.pptxSistemas de Arquivos.pptx
Sistemas de Arquivos.pptxstenio medeiros
 

Ähnlich wie Aula 9 gerenciamento_memoria (1) (20)

Gerência de memória
Gerência de memóriaGerência de memória
Gerência de memória
 
Gestao de Memoria_SLIDE.pptx
Gestao de Memoria_SLIDE.pptxGestao de Memoria_SLIDE.pptx
Gestao de Memoria_SLIDE.pptx
 
12/03/2010 - Sistemas Operacionais Aula3
12/03/2010 - Sistemas Operacionais Aula312/03/2010 - Sistemas Operacionais Aula3
12/03/2010 - Sistemas Operacionais Aula3
 
Arquitetura 8 2
Arquitetura 8 2Arquitetura 8 2
Arquitetura 8 2
 
Aula 5a - Sistemas Operacionais
Aula 5a - Sistemas OperacionaisAula 5a - Sistemas Operacionais
Aula 5a - Sistemas Operacionais
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2
 
Arquitetura 8 1 - 2012.2
Arquitetura 8   1 - 2012.2Arquitetura 8   1 - 2012.2
Arquitetura 8 1 - 2012.2
 
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdf
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdfSO03 - Sistemas-Operacionais - Gerencia de Memoria.pdf
SO03 - Sistemas-Operacionais - Gerencia de Memoria.pdf
 
Arquitetura 8 2
Arquitetura 8 2Arquitetura 8 2
Arquitetura 8 2
 
Resumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicosResumos sobre tecnologias de informação e conceitos basicos
Resumos sobre tecnologias de informação e conceitos basicos
 
Curso openmp
Curso openmpCurso openmp
Curso openmp
 
S.o aula 3132
S.o aula 3132S.o aula 3132
S.o aula 3132
 
S.o aula 2324
S.o aula 2324S.o aula 2324
S.o aula 2324
 
Aula 3- Disciplina:Pratica Técnico Profi
Aula 3- Disciplina:Pratica Técnico ProfiAula 3- Disciplina:Pratica Técnico Profi
Aula 3- Disciplina:Pratica Técnico Profi
 
Informática - Aula 3
Informática - Aula 3Informática - Aula 3
Informática - Aula 3
 
Sistemas operacionais memória no linux
Sistemas operacionais   memória no linuxSistemas operacionais   memória no linux
Sistemas operacionais memória no linux
 
Memória Virtual - Aspectos Básicos
Memória Virtual - Aspectos BásicosMemória Virtual - Aspectos Básicos
Memória Virtual - Aspectos Básicos
 
Trabalho de Tic
Trabalho de TicTrabalho de Tic
Trabalho de Tic
 
Sistemas de Arquivos.pptx
Sistemas de Arquivos.pptxSistemas de Arquivos.pptx
Sistemas de Arquivos.pptx
 
Aula 09 Processadores memórias e armazenamento Operador de microcomputador
Aula 09 Processadores memórias e armazenamento Operador de microcomputadorAula 09 Processadores memórias e armazenamento Operador de microcomputador
Aula 09 Processadores memórias e armazenamento Operador de microcomputador
 

Kürzlich hochgeladen

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 

Kürzlich hochgeladen (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 

Aula 9 gerenciamento_memoria (1)

  • 1. Gerenciamento de Mémoria • Disciplina: Organização e Arquitetura de Computadores • Curso: Sistema de Informação • Prof. Wilton Ferreira • Contato: wiltonof@gmail.com
  • 2. Gerência de Memória História • Historicamente, a memória principal sempre foi vista como um recurso escasso e caro. • Uma das maiores preocupações dos projetistas foi desenvolver sistemas operacionais que não ocupassem muito espaço de memória e, ao mesmo tempo, otimizassem a utilização dos recursos computacionais. • Mesmo atualmente, com a redução de custo e conseqüente aumento da capacidade da memória principal, seu gerenciamento é um dos fatores mais importantes no projeto de sistemas operacionais. • Enquanto nos sistemas monoprogramáveis a gerência da memória não é muito complexa, nos sistemas multiprogramáveis ela se toma crítica, devido à necessidade de se maximizar o número de usuários e aplicações utilizando eficientemente o espaço da memória principal.
  • 3. Gerência de Memória Funções Básicas • Em geral, programas são armazenados em memórias secundárias, como disco ou fita, por ser um meio não-volátil, abundante e de baixo custo. • Como o processador somente executa instruções localizadas na memória principal, o sistema operacional deve sempre transferir programas da memória secundária para a memória principal antes de serem executados. • Como o tempo de acesso à memória secundária é muito superior ao tempo de acesso à memória principal, o sistema operacional deve buscar reduzir o número de operações de E/S à memória secundária, caso contrário podem ser ocasionados sérios problemas no desempenho do sistema.
  • 4. Gerência de Memória Funções Básicas • A gerência de memória deve tentar manter na memória principal o maior número de processos residentes, permitindo maximizar o compartilhamento do processador e demais recursos computacionais. • Mesmo na ausência de espaço livre, o sistema deve permitir que novos processos sejam aceitos e executados. • Isso é possível através da transferência temporária de processos residentes na memória principal para a memória secundária, liberando espaço para novos processos. • Esse mecanismo é conhecido como swapping, e será detalhado posteriormente. • Outra preocupação na gerência de memória é permitir a execução de programas que sejam maiores que a memória física disponível, implementada através de técnicas como o overlay e a memória virtual.
  • 5. Gerência de Memória Funções Básicas • Em um ambiente de multiprogramação, o sistema operacional deve proteger as áreas de memória ocupadas por cada processo, além da área onde reside o próprio sistema. • Caso um programa tente realizar algum acesso indevido à memória, o sistema de alguma forma deve impedi-lo. • Apesar de a gerência de memória garantir a proteção de áreas da memória, mecanismos de compartilhamento devem ser oferecidos para que diferentes processos possam trocar dados de forma protegida.
  • 6. Gerência de Memória Alocação Contígua Simples Memória Principal Área Livre SO RL Se (Endereço do Programa >= RL [Registrador Limite]) Então Acesso Normal; Caso contrário Exceção;
  • 7. Gerência de Memória Alocação Contígua Simples • A alocação contígua simples foi implementada nos primeiros sistemas operacionais, porém ainda está presente em alguns sistemas monoprogramáveis. • Nesse tipo de organização, a memória principal é subdividida em duas áreas: uma para o sistema operacional e outra para o programa do usuário. • Dessa forma, o programador deve desenvolver suas aplicações preocupado, apenas, em não ultrapassar o espaço de memória disponível, ou seja, a diferença entre o tamanho total da memória principal e a área ocupada pelo sistema operacional. • Nesse esquema, o usuário tem controle sobre toda a memória principal, podendo ter acesso a qualquer posição de memória, inclusive a área do sistema operacional.
  • 8. Gerência de Memória Alocação Contígua Simples • Para proteger o sistema desse tipo de acesso, que pode ser intencional ou não, alguns sistemas implementam proteção através de um registrador que delimita as áreas do sistema operacional e do usuário. • Dessa forma, sempre que um programa faz referência a um endereço na memória, o sistema verifica se o endereço está dentro dos limites permitidos. • Caso não esteja, o programa é cancelado e uma mensagem de erro é gerada, indicando que houve uma violação no acesso à memória principal. • Apesar da fácil implementação e do código reduzido, a alocação contígua simples não permite a utilização eficiente dos recursos computacionais, pois apenas um usuário pode dispor desses recursos. • Em relação à memória principal, caso o programa do usuário não a preencha totalmente existirá um espaço de memória livre sem utilização.
  • 9. Gerência de Memória Alocação Contígua Simples Memória Principal Área Livre Memória sendo subutilizada Programa do Usuário SO
  • 10. Gerência de Memória Alocação Particionada • Os sistemas operacionais evoluíram no sentido de proporcionar melhor aproveitamento dos recursos disponíveis. • Nos sistemas monoprogramáveis, o processador permanece grande parte do tempo ocioso e a memória principal é subutilizada. • Os sistemas multiprogramáveis já são muito mais eficientes no uso do processador, necessitando assim, que diversos programas estejam na memória principal ao mesmo tempo e que novas formas de gerência da memória sejam implementadas.
  • 11. Gerência de Memória Alocação Particionada Estáticas • Nos primeiros sistemas multiprogramáveis, a memória era dividida em pedaços de tamanho fixo, chamados partições. • O tamanho das partições, estabelecido na fase de inicialização do sistema, era definido em função do tamanho dos programas que executariam no ambiente. • Sempre que fosse necessária a alteração do tamanho de uma partição, o sistema deveria ser desativado e reinicializado com uma nova configuração. • Esse tipo de gerência de memória é conhecido como alocação particionada estática ou fixa.
  • 12. Gerência de Memória Alocação Particionada Estáticas Tabela de Partições Memória Principal Partição Tamanho Livre 1 2 KB Sim/Não 2 5 KB Sim/Não 3 11 KB Sim/Não Programas a serem executados E D C B A 3 KB 6 KB 1 KB 4 KB 2 KB Partição 3 11 KB Partição 2 5 KB Partição 1 2 KB SO
  • 13. Gerência de Memória Alocação Particionada Estáticas • Inicialmente, os programas só podiam ser carregados e executados em apenas uma partição específica, mesmo se outras estivessem disponíveis. • Essa limitação se devia aos compiladores e montadores que geravam apenas código absoluto. • No código absoluto todas as referências a endereços no programa são posições físicas na memória principal, ou seja, o programa só poderia ser carregado a partir do endereço de memória especificado no seu próprio código. • Se, por exemplo, os programas A e B estivessem sendo executados e a terceira partição estivesse livre, os programas C e E não poderiam ser processados. • A esse tipo de gerência de memória chamou-se alocação particionada estática absoluta
  • 14. Gerência de Memória Alocação Particionada Estáticas Absoluta Memória Principal D Partição 3 11 KB Partição 2 5 KB Partição 1 2 KB 6 KB E B 3 KB 4 KB C A 1 KB 2 KB SO
  • 15. Gerência de Memória Alocação Particionada Estáticas Relocável • Com a evolução dos compiladores, montadores, linkers e loaders, o código gerado deixou de ser absoluto e passou a ser relocável. • No código relocável, todas as referências a endereços no programa são relativas ao início do código, e não a endereços físicos de memória. • Desta forma, os programas puderam ser executados a partir de qualquer partição. • Quando o programa é carregado, o loader calcula todos os endereços a partir da posição inicial onde o programa foi alocado. • Caso os programas A e B terminassem, o programa E poderia ser executado em qualquer uma das duas partições. • Esse tipo de gerência de memória é denominado alocação particionada estática relocável.
  • 16. Gerência de Memória Alocação Particionada Estáticas Relocável Memória Principal Partição 3 E D C B 6 KB 1 KB 4 KB 2 KB Partição 2 5 KB Partição 1 2 KB A 3 KB 11 KB SO
  • 17. Gerência de Memória Alocação Particionada Estáticas Realocável • 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. • 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. • Nesse esquema de alocação de memória a proteção baseia-se em dois registradores, que indicam os limites inferior e superior da partição onde o programa está sendo executado. • Caso o programa tente acessar uma posição de memória fora dos limites definidos pelos registradores, ele é interrompido e uma mensagem de violação de acesso é gerada pelo sistema operacional.
  • 18. Gerência de Memória Alocação Particionada Estáticas Realocável Memória Principal Partição 3 Se (Endereço do Programa < RLS) .E. (Endereço do Programa >= RLI) Então Acesso Normal; Caso contrário Exceção; RLS Partição 2 Partição 1 SO RLI
  • 19. Gerência de Memória Alocação Particionada Estáticas Realocável • Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável os programas, normalmente, não preenchem totalmente as partições onde são carregados. • Por exemplo, os programas C, A e E não ocupam integralmente o espaço das partições onde estão alocados, deixando 1 Kb, 3 Kb e 5 Kb de áreas livres, respectivamente. • Esse tipo de problema, decorrente da alocação fixa das partições, é conhecido como fragmentação interna.
  • 20. Gerência de Memória Alocação Particionada Estáticas Realocável Memória Principal Área Livre Partição 3 Processo E Área Livre Partição 2 Processo A Partição 1 Área Livre Processo C SO Fragmentação Interna
  • 21. Gerência de Memória Alocação Particionada Dinâmico • A alocação particionada estática, analisada anteriormente, deixou evidente a necessidade de uma nova forma de gerência da memória principal, em que o problema da fragmentação interna fosse reduzido e, conseqüentemente, o grau de compartilhamento da memória aumentado. • Na alocação particionada dinâmica, ou variável, foi eliminado o conceito de partições de tamanho fixo. • Nesse esquema, cada programa utilizaria o espaço necessário, tornando essa área sua partição. • Como os programas utilizam apenas o espaço de que necessitam, no esquema de alocação particionada dinâmica o problema da fragmentação interna não ocorre.
  • 22. Gerência de Memória Alocação Particionada Dinâmico Memória Principal Memória Principal Área Livre Processo E 3 KB Processo D 6 KB Processo C 1 KB Processo B 4 KB Processo A Área Livre 2 KB 2 KB 18 KB SO SO
  • 23. Gerência de Memória Alocação Particionada Dinâmico • A princípio, o problema da fragmentação interna está resolvido, porém nesse caso existe um problema que não é tão óbvio quanto no esquema anterior. • Um diferente tipo de fragmentação começará a ocorrer, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas. • Isto acontece porque os programas necessitam de endereços contíguos na memória principal. • A este tipo de problema dá-se o nome de fragmentação externa.
  • 24. Gerência de Memória Alocação Particionada Dinâmico Memória Principal Área Livre Processo E F 1 KB Processo B 4 KB Área Livre SO 6 KB Área Livre 3 KB 3 KB Processo D x 2 KB 2 KB Fragmentação Externa
  • 25. Gerência de Memória Alocação Particionada Dinâmico • Existem duas soluções para o problema da fragmentação externa da memória principal. • Na primeira solução, conforme os programas terminam apenas os espaços livres adjacentes são reunidos, produzindo áreas livres de tamanho maior. • A segunda solução envolve a relocação de todas as partições ocupadas, eliminando todos os espaços entre elas e criando uma única área livre contígua. • Para que esse processo seja possível é necessário que o sistema tenha a capacidade de mover os diversos programas na memória principal, ou seja, realizar relocação dinâmica. • Esse mecanismo de compactação, também conhecido como alocação particionada dinâmica com relocação (desfragmentação), reduz em muito o problema da fragmentação, porém a complexidade do seu algoritmo e o consumo de recursos do sistema, como processador e área em disco, podem torná-lo inviável.
  • 26. Gerência de Memória Alocação Particionada Dinâmico - Desfragmentação Memória Principal Área Livre Memória Principal 2 KB Área Livre Processo E 5 KB Processo E 3 KB Processo D 6 KB Processo B 4 KB 3 KB Desfragmentando F x Processo D Área Livre 3 KB 6 KB 1 KB Processo B Área Livre SO 4 KB 2 KB SO
  • 27. Gerência de Memória Alocação Particionada Dinâmico - Desfragmentação Memória Principal Área Livre Processo F 3 KB Processo E 3 KB Processo D 6 KB Processo B F 2 KB 4 KB 3 KB SO
  • 28. Gerência de Memória Estratégias de Alocação de Partição • Os sistemas operacionais 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. • A melhor estratégia a ser adotada por um sistema depende de uma série de fatores, sendo o mais importante o tamanho dos programas processados no ambiente. • Independentemente do algoritmo utilizado, o sistema possui uma lista de áreas livres, com o endereço e tamanho de cada área.
  • 29. Gerência de Memória Estratégias de Alocação de Partição • Best-fit Na estratégia best-fit é escolhida a partição onde o programa deixa o menor espaço sem utilização. Nesse algoritmo, a lista de áreas livres está ordenada por tamanho, diminuindo o tempo de busca por uma área desocupada. Uma grande desvantagem desse método é conseqüência do próprio algoritmo. Como é alocada a partição que deixa a menor área livre, a tendência é que cada vez mais a memória fique com pequenas áreas não-contíguas, aumentando o problema da fragmentação.
  • 30. Gerência de Memória Estratégias de Alocação de Partição • Worst-fit Na estratégia worst-fit é escolhida a partição onde o programa deixa o maior espaço sem utilização. Apesar de utilizar as maiores partições, a técnica de worst-fit deixa espaços livres maiores que permitem a um maior número de programas utilizar a memória, diminuindo o problema da fragmentação.
  • 31. Gerência de Memória Estratégias de Alocação de Partição • First-fit Na estratégia first-fit, a primeira partição livre de tamanho suficiente para carregar o programa é escolhida. Nesse algoritmo, a lista de áreas livres está ordenada por endereços crescentemente. Como o método tenta primeiro utilizar as áreas livres de endereços mais baixos, existe uma grande chance de se obter uma grande partição livre nos endereços de memória mais altos. Das três estratégias apresentadas, a first-fit é a mais rápida, consumindo menos recursos do sistema.
  • 32. Gerência de Memória Swapping • Mesmo com o aumento da eficiência da multiprogramação e, particularmente, da gerência de memória, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível. • A técnica de swapping foi introduzida para contornar o problema da insuficiência de memória principal. • Em todos os esquemas apresentados anteriormente, um processo permanecia na memória principal até o final da sua execução, inclusive nos momentos em que esperava por um evento, como uma operação de leitura ou gravação. • O swapping é uma técnica aplicada à gerência de memória para programas que esperam por memória livre para serem executados.
  • 33. Gerência de Memória Swapping • Nesta situação, o sistema escolhe um processo residente, que é transferido da memória principal para a memória secundária (swap out), geralmente o disco. • Posteriormente, o processo é carregado de volta da memória secundária para a memória principal (swap in) e pode continuar sua execução como se nada tivesse ocorrido.
  • 34. Gerência de Memória Swapping Memória Principal Memória Principal Área Livre 2 KB 3 KB Processo F 3 KB Processo E 3 KB Processo E 3 KB Processo D 6 KB Processo D 6 KB Área Livre x Área Livre Processo F G 2 KB 1 KB Processo G 3 KB 3 KB Processo B SO Swap out 4 KB SO
  • 35. Gerência de Memória Swapping Memória Principal Área Livre Processo B 4 KB Processo E 3 KB Processo D 6 KB Área Livre 1 KB Processo G SO 1 KB 3 KB Swap in
  • 36. Gerência de Memória Swapping • O algoritmo de escolha do processo a ser retirado da memória principal deve priorizar aquele com menores chances de ser escalonado para evitar o swapping desnecessário de um processo que será executado logo em seguida. • 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 da memória são ditos não-residentes (outswapped).
  • 37. Gerência de Memória Swapping • Para que a técnica de swapping seja implementada é essencial que o sistema ofereça um loader que implemente a relocação dinâmica de programas. • Um loader relocável que não ofereça esta facilidade permite que um programa seja colocado em qualquer posição de memória, porém a relocação é apenas realizada no momento do carregamento. • No caso do swapping, um programa pode sair e voltar diversas vezes para a memória, sendo necessário que a relocação seja realizada pelo loader a cada carregamento.
  • 38. Gerência de Memória Swapping • A relocação dinâmica é realizada através de um registrador especial denominado registrador de relocação. • No momento em que o programa é carregado na memória, o registrador recebe o endereço inicial da posição de memória que o programa irá ocupar. • Toda vez que ocorrer uma referência a algum endereço, o endereço contido na instrução será somado ao conteúdo do registrador, gerando, assim, o endereço físico. • Dessa forma, um programa pode ser carregado em qualquer posição de memória.
  • 39. Gerência de Memória Endereçamento Relativo Endereço Inicial de Partição Endereço Solicitado (Relativo) + Endereço Físico de Memória
  • 40. Gerência de Memória Swapping – Consideraçoes Finais • O conceito de swapping permite um maior compartilhamento da memória principal e, conseqüentemente, uma maior utilização dos recursos do sistema computacional. • Seu maior problema é o elevado custo das operações de entrada/saída (swap in/out). • Em momentos em que há pouca memória disponível, o sistema pode ficar quase que dedicado à realização de swapping, deixando de executar outras tarefas e impedindo a execução dos demais processos residentes. • Esta situação é denominada thrashing, e é considerada um problema crítico na gerência de memória dos sistemas operacionais.