Você está na página 1de 41

SistemasOperacionais

GerenciamentodeMemria
NortonTrevisanRoman MarceloMorandini JUeyama

ApostilabaseadanostrabalhosdeKalinkaCasteloBranco,Antnio CarlosSementille,PaulaPrataenastransparnciasfornecidasnosite decompradolivro"SistemasOperacionaisModernos"

Troca de Processos

Com um sistema em lote, simples e eficiente organizar a memria em parties fixas. Em sistemas de tempo compartilhado:

Pode no existir memria suficiente para conter todos os processos ativos Os processos excedentes so mantidos em disco e trazidos dinamicamente para a memria a fim se serem executados

Troca de Processos

Existem 2 processos gerais que podem ser usados:

A troca de processos (swapping):


Forma mais simples Consiste em trazer totalmente cada processo para a memria, execut-lo durante um tempo e, ento, devolv-lo ao disco Permite que programas possam ser executados mesmo que estejam parcialmente carregados na memria principal.

Memria Virtual:

Swapping

Chaveamento de processos inteiros entre a memria principal e o disco; Swap-out

Da memria para uma regio especial do disco, chamada rea de swap Do disco pra memria

Swap-in

Pode ser utilizado tanto com parties fixas quanto com parties variveis;

Swapping

Operao:

Inicialmente, somente o processo A est na memria Ento B ou criado ou trazido de volta (swap in) memria

Swapping

Operao:

Em seguida, C criado ou trazido de volta (swap in) memria A ento levado ao disco (swap out)

Swapping

Operao:

E D trazido memria (ou iniciado) B ento sai

Swapping

Operao:

E A trazido de volta A agora est em outra poro da memria devemos relocar os endereos As parties so de tamanho varivel

Note que:

Swapping

Problema

A operao de swap pode criar muitos buracos na memria

Problema de fragmentao externa

Soluo: ???

Swapping

Problema

A operao de swap pode criar muitos buracos na memria

Problema de fragmentao externa Mova todos os processos o mais para baixo possvel na memria haver um nico espao vazio acima Consome bastante CPU

Soluo: Compactao de memria:

Swapping Alocando Memria

A alocao de memria muda medida em que


Os processos chegam memria Os processos deixam a memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Swapping Alocando Memria

A Alocao de memria muda medida em que


Os processos chegam memria Os processos deixam a memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Se eles tiverem tamanho fixo, aloque o que ele precisa

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Mas e se o segmento de dados deles cresce com o tempo?


C deve crescer

???

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Mas e se o segmento de dados deles cresce com o tempo?

Se houver um buraco adjacente memria atual do processo, ele pode ser alocado, e o processo cresce nesse buraco

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Mas e se o segmento de dados deles cresce com o tempo?

E se ele for adjacente a outro processo?

???
A deve crescer

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Mas e se o segmento de dados deles cresce com o tempo?

E se ele for adjacente a outro processo?

Ou o movemos a um buraco maior na memria Ou um ou mais processos tero que ser removidos para criar esse buraco

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Alternativamente, podemos alocar memria a mais para cada processo carregado

Reduz o overhead de ter que fazer swap Se ainda assim o processo for para o disco, somente a memria realmente em uso gravada

Swapping Alocando Memria

Quanto de memria devemos alocar a um processo quando ele criado ou trazido a ela?

Se os processos tiverem dois segmentos que crescem (dados e pilha, por exemplo), podemos usar a mesma idia

Nesse caso, a pilha cresce para baixo enquanto que o segmento de dados cresce para cima Swap, como antes

Se ainda assim ficar sem espao:

Swapping
Tcnicas para alocao dinmica de memria

Mapas de Bits (Bitmaps):

Memria dividida em unidades de alocao

Pode conter vrios KB 0 livre 1 ocupado

Cada unidade corresponde a um bit no bitmap:


Tamanho do bitmap depende do tamanho da unidade e do tamanho da memria;


unidades de alocao pequenas bitmap grande; unidades de alocao grandes perda de espao;

Swapping
Tcnicas para alocao dinmica de memria

Mapas de Bits (Bitmaps):

Problema: Quando um novo processo (de k unidades) trazido memria, o gerenciador deve buscar, no bitmap, uma seqncia de k zeros consecutivos operao potencialmente lenta

Swapping
Tcnicas para alocao dinmica de memria

Listas Ligadas:

Manter uma lista ligada de segmentos de memria livres e alocados

Cada segmento ou contm um processo ou um buraco vazio entre dois processos

Memria Representao: lista ordenada por endereo

Swapping
Tcnicas para alocao dinmica de memria

Listas Ligadas:

A lista ordenada por endereo fica fcil de ser atualizada:


Troque P por H na posio correspondente da lista Elimine o n que representava X, atualizando o seguinte e o anterior

Swapping
Tcnicas para alocao dinmica de memria

Existem trs mtodos que podem ser usados para selecionar uma regio para um processo.

Se a lista estiver ordenada por endereo Primeira escolha (First fit):

Os algoritmos de alocao so:

Percorre a lista de segmentos at que encontre um buraco grande o bastante Quebre o buraco em dois pedaos um para o processo e um para a memria no usada Variao: inicie a busca a partir de onde parou, na vez anterior (next fit)

Swapping
Tcnicas para alocao dinmica de memria

Os algoritmos de alocao so:

Melhor escolha (Best fit):

Busca a lista inteira, at o fim, e toma o menor buraco que seja adequado No quebra buracos grandes que poderiam ser teis mais tarde Problema: permite o surgimento de buracos minsculos Sempre tome o maior buraco disponvel Reduz a chance de buracos minsculos e inteis

Pior escolha (worst fit):


Swapping
Tcnicas para alocao dinmica de memria
Dois processos, P e Q, so alocados nessa ordem:

Sentido em que a memria percorrida

reas livres iniciais

Melhor Escolha

Pior Escolha

Primeira Escolha

Swapping
Tcnicas para alocao dinmica de memria
Dois processos, P e Q, so alocados nessa ordem:

Sentido em que a memria percorrida

reas livres iniciais

Melhor Escolha

Pior Escolha

Primeira Escolha

Swapping
Tcnicas para alocao dinmica de memria
Dois processos, P e Q, so alocados nessa ordem:

Sentido em que a memria percorrida

reas livres iniciais

Melhor Escolha

Pior Escolha

Primeira Escolha

Swapping
Tcnicas para alocao dinmica de memria
Dois processos, P e Q, so alocados nessa ordem:

Sentido em que a memria percorrida

reas livres iniciais

Melhor Escolha

Pior Escolha

Primeira Escolha

Swapping
Tcnicas para alocao dinmica de memria

Os algoritmos de alocao so:

Quick fit

Mantm listas separadas para alguns dos tamanhos mais comumente requisitados

Uma para cada tamanho Encontrar os vizinhos ao buraco que ele deixou, para unio

Problema quando processo desalocado:

Swapping
Tcnicas para alocao dinmica de memria

Algoritmos de alocao:

Todos podem ser melhorados se mantivermos buracos e processos em listas separadas


H ganho de desempenho Ainda assim, quando um processo retirado da memria, mesclar buracos de alta complexidade. Mais suscetvel a fragmentao

Swapping
Tcnicas para alocao dinmica de memria

Principais Conseqncias dos algoritmos:

Melhor escolha: deixa o menor resto, porm aps um longo processamento poder deixar buracos muito pequenos para serem teis. Pior escolha: deixa o maior espao aps cada alocao, mas tende a espalhar as pores no utilizadas sobre reas no contnuas de memria e, portanto, pode tornar difcil alocar grandes jobs. Primeira escolha: tende a ser um meio termo entre a melhor e a pior escolha, com a caracterstica adicional de fazer com que os espaos vazios migrem para o final da memria.

Memria Virtual

O tamanho da memria cresce rapidamente


O tamanho do software cresce muito mais rpido H necessidade de rodar programas grandes demais para a memria Ex:

Programas fazem referncia memria

MOV REG,1000

No necessariamente esse o endereo real.

Memria Virtual

Os endereos fsicos (reais) podem ser gerados de muitas maneiras:


Mapeamento direto Usando registradores base etc

Endereos referenciados pelos programas so chamados de virtuais

Na ausncia de memria virtual, o endereo virtual bate com o fsico Com memria virtual, tratado pela MMU

Memria Virtual

Espao de Endereamento Fsico de um processo:

Formado por todos os endereos fsicos/reais aceitos pela memria principal (RAM);

Espao de Endereamento Virtual de um processo:

Formado por todos os endereos virtuais que esse processo pode gerar;

Memria Virtual

Um processo em Memria Virtual faz referncia a endereos virtuais e no a endereo reais de memria RAM; No momento da execuo de uma instruo, o endereo virtual traduzido para um endereo real, pois a CPU manipula apenas endereos reais da memria RAM MAPEAMENTO;

Memria Virtual

A MMU mapeia o endereo virtual memria fsica

Memria Virtual

Memria virtual ento uma tcnica para troca de processos na memria

Programas maiores que a memria eram divididos em pedaos menores chamados overlays

Soluo adotada nos anos 60

Quando um programa iniciava, tudo que carregado na memria o gerenciador de overlay

Imediatamente carrega e roda o overlay 0

Vantagem: expanso da memria principal; Desvantagem: custo muito alto;

Memria Virtual

Memria virtual uma tcnica para troca de processos na memria

Sistema operacional era responsvel por:

Realizar o chaveamento desses pedaos entre a memria principal e o disco;

Cabia ao programador dividir o programa em overlays;

Memria Virtual automatiza a diviso em overlays

Cada programa tem seu prprio espao de endereos, que quebrado em pores as pginas

Memria Virtual

Pginas:

Quando o programa referencia uma parte de seu endereo que est na memria, o hardware faz o mapeamento na hora Se, contudo, essa parte no estiver na memria:

O S.O. traz do disco o pedao que falta Executa novamente a instruo que falhou Enquanto isso, o escalonador pode colocar outro processo para rodar

Memria virtual semelhante ao swap

Swap aloca espao para todo o processo, MV no

Memria Virtual

Tcnicas de MV:

Paginao:

Blocos de tamanho fixo (endereos contnuos) chamados de pginas; SO mantm uma fila de todas as pginas; Endereos Virtuais formam o espao de endereamento virtual; O espao de endereamento virtual dividido em pginas virtuais; Mapeamento entre endereos reais e virtuais (MMU);

Memria Virtual

Tcnicas de MV:

Segmentao:

Blocos de tamanho arbitrrio chamados segmentos;

Arquitetura (hardware) tem que possibilitar a implementao tanto da paginao quanto da segmentao;