59
Gerência de Memória Alocação

SO-05 Gerenciamento de Memória e Alocação

Embed Size (px)

DESCRIPTION

Gerenciamento de Memória. Algoritmos de Alocação (Sistemas Operacionais)

Citation preview

Page 1: SO-05 Gerenciamento de Memória e Alocação

Gerência de Memória Alocação

Page 2: SO-05 Gerenciamento de Memória e Alocação

2 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Introdução   Atribuição de Endereços, Carregamento Dinâmico, Ligação

Dinâmica   Espaço de Endereçamento Físico versus Lógico   Alocação Contígua Simples   Overlay   Alocação Particionada   Fragmentação Externa e Interna   Gerência de Memória com Mapeamento de Bits   Gerência de Memória com Listas Ligadas   Algoritmos de Alocação de Partições   Swapping

Page 3: SO-05 Gerenciamento de Memória e Alocação

3 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Memória um dos mais importantes recursos de um computador   necessidade de ser gerenciada

  Programas devem ser colocados dentro de um processo e então carregados em memória para serem executados.

  Input queue – coleção de processos no disco que estão aguardando carregamento em memória para executarem o programa.

  Funções de um Gerente de Memória   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 memória principal e

disco, quando a memória não é grande o suficiente para guardar todos os processos

Page 4: SO-05 Gerenciamento de Memória e Alocação

4 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  A CPU busca instruções da memória de acordo com o valor do contador de instruções (PC) do programa em execução. Essas instruções podem:   buscar novos valores de endereços específicos da memória   armazenar novos valores em posições específicas da memória

  Programas de usuário passam por vários passos antes de começarem a ser executados.

Memória Principal

UC

Registrador PC

Instrução

Parâmetros

Resultado Registrador

UAL

Page 5: SO-05 Gerenciamento de Memória e Alocação

5 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  A maioria dos sistemas permite que os processos de usuários sejam colocados em qualquer parte da memória   assim, embora o espaço de endereçamento comece em 0000, o

endereço inicial de um processo não precisa ser este.

  A ligação de endereços de instruções e de dados para os endereços de memória podem acontecer em 3 estágios diferentes:   Em tempo de compilação

 código absoluto: se o programa vai ser carregado no endereço E, o código gerado pelo compilador inicia-se neste endereço (se for alterado, deve ser recompilado). Ex.: “.COMʼʼ do DOS

Programa Fonte

compilador ou montador

Código Objeto

tempo de compilação

Page 6: SO-05 Gerenciamento de Memória e Alocação

6 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Em tempo de carga   código relocável: quando não se

conhece em tempo de compilação a posição em que o programa será armazenado. Ex.:  Compilador: 14 bytes do

início  Carregador: 74000 + 14

Código Objeto

ligador

Código Relocável

tempo de carga

Cód Obj de outros módulos

carregador

Biblioteca de sistema

Page 7: SO-05 Gerenciamento de Memória e Alocação

7 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Em tempo de execução   se o processo pode ser movido

durante sua execução, a determinação do endereço deve ser atrasada para o tempo de execução

  há a necessidade de suporte de hardware para o mapeamento de endereços (p.ex.: registradores base e limite)

carregador

tempo de execução

Biblioteca de sistema

Código binário

executável

Biblioteca de sistema carregada dinamica-

mente

Page 8: SO-05 Gerenciamento de Memória e Alocação

8 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  O conceito de um espaço de endereçamento lógico que está associado a um espaço de endereçamento físico separado é central ao adequado gerenciamento da memória.   Endereço Lógico – gerado pela CPU; também conhecido como

endereço virtual.   Endereço Físico – endereço visto pela unidade de memória.

  Endereços Lógico e Físico são os mesmo nos esquemas de atribuição de endereços em tempo de compilação e em tempo de carga.

  Endereços Lógico e Físico diferem quando se usa esquema de atribuição de endereços em tempo de execução.

Page 9: SO-05 Gerenciamento de Memória e Alocação

9 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Dispositivo de hardware que mapeia endereços virtuais em endereços físicos.

  Através da MMU, o valor do registrador de relocação é adicionado a todo endereço gerado pelo processo do usuário no instante em queee é enviado à memória.

  O programa do usuário lida com endereços lógicos; ele nunca vê o endereço físico real.

Page 10: SO-05 Gerenciamento de Memória e Alocação

10 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

CPU Memória Principal

14000

+ Endereço

Lógico

MMU Unidade de

Gerenciamento de Memória

Endereço Físico

#346 #14346

Registrador Base

Page 11: SO-05 Gerenciamento de Memória e Alocação

11 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Rotina não é carregada até que ela seja chamada   Melhor utilização do espaço de memória

  Rotinas que não são usadas nunca são carregadas.

  Útil quando grandes quantidades de código são necessárias para manipular casos pouco freqüentes.

  Nenhum suporte especial do S.O. é requerido   Implementado através do projeto do programa.

Page 12: SO-05 Gerenciamento de Memória e Alocação

12 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  A ligação (linking) é adiada até o tempo de execução.   Stub: um pequeno pedaço de código usado para a localização

da rotina dinâmica, residente em memória, apropriada.   O stub substitui a si próprio com o endereço da rotina e a

executa.   É necessário o suporte do S.O. para verificar se a rotina está no

endereço de memória dos processos.   Ligação Dinâmica é particularmente útil para bibliotecas.

 Economia de espaço  Atualização  Controle de concorrência

Page 13: SO-05 Gerenciamento de Memória e Alocação

13 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Toda vez que desejarmos executar um programa (residente em memória secundária), deveremos, de alguma forma, carregá-lo para a memória principal, para que o processador possa referenciar suas instruções e seus dados

  Nos sistemas monoprogramados a gerência da memória não é muito complexa, mas nos sistemas multiprogramados ela se torna crítica

  A seguir apresentaremos os principais esquemas de organização e gerência da memória principal

Page 14: SO-05 Gerenciamento de Memória e Alocação

14 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Implementada nos primeiros SOs e ainda está presente em alguns sistemas monoprogramados

  Esquema mais simples para gerência de memória   A memória principal é dividida em duas partes:

  uma para o Sistema Operacional   outra para o(s) programa(s) do(s) usuário(s)

  SO pode ocupar tanto a parte baixa quanto a parte mais alta da memória, dependendo da localização do vetor de interrupções

Page 15: SO-05 Gerenciamento de Memória e Alocação

15 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Sistema Operacional

em RAM

  No IBM-PC é utilizado o terceiro modelo: nos 8KB mais altos dos 1 MB de endereçamento existe uma ROM com um programa chamado BIOS (Basic Input Output System), correspondente a todos os drivers

Memória Principal

Área para o processo

do usuário

0x00

0xFF Sistema Operacional

em ROM

Memória Principal

Área para o processo

do usuário SO em RAM

Memória Principal

Área para o processo

do usuário

Drivers de dispo- sitivos em ROM

Page 16: SO-05 Gerenciamento de Memória e Alocação

16 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Usuário tem controle sobre toda a memória principal, podendo acessar até a área do SO (caso do DOS)

  PROTEÇÃO: Pode-se implementar um esquema de proteção usando um registrador que delimite as áreas do SO e usuário

Memória Principal Sistema

Operacional Área para o

processo do usuário

Registrador

Page 17: SO-05 Gerenciamento de Memória e Alocação

17 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Sempre que um programa do usuário faz referência a um endereço de memória, o sistema verifica se o endereço está nos seus limites (registrador base e registrador limite). Caso não esteja, o programa de usuário pode ser cancelado e ser gerada uma mensagem de erro

CPU Memória Principal +

Endereço Lógico

MMU

Endereço Físico

Registrador Limite

<

interrupção de software; erro de endereçamento

Registrador Base

Page 18: SO-05 Gerenciamento de Memória e Alocação

18 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Problemas: não permite a utilização eficiente do processador e nem da memória principal, além de limitar o tamanho do programa do usuário

  Em SOs que suportam o conceito de MULTIPROGRAMAÇÃO, é preciso que existam outras formas de organização da memória principal, a fim de suportar vários processos na memória simultaneamente

Área Livre

Memória Principal

Sistema Operacional

Processo do Usuário

Page 19: SO-05 Gerenciamento de Memória e Alocação

19 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Sobreposição (Overlay) (usuário)   O que fazer quando se tem um programa que ocupa mais memória

do que a disponível?   Verifica-se se o programa tem seções que não necessitem

permanecer na memória durante toda a execução  Mantém-se na memória somente aquelas instruções e dados

que são necessários a qualquer hora.   Essas seções, uma vez executadas, podem ser substituídas por

outras   A substituição ocorre pela transferência da seção do disco para a

memória na área de overlay, cobrindo a seção anterior   O programa é inicialmente carregado mais rapidamente, entretanto,

a execução ficará um pouco mais lenta, devido ao tempo extra gasto com a sobreposição

Page 20: SO-05 Gerenciamento de Memória e Alocação

20 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Área de

Overlay

Rotina de controle

de overlay

Parte fixa do

processo

Armazenamento Primário Armazenamento

Secundário Fase inicial Fase

intermediária Fase final 50K

20K

80K

50K 30K

80K

Page 21: SO-05 Gerenciamento de Memória e Alocação

21 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  O mecanismo de overlay é pouco transparente, pois a definição das áreas de overlay é função do programador (não é do SO), através de comandos específicos da linguagem utilizada.

  Dependendo da definição, pode ocasionar sérias implicações no desempenho das aplicações, devido à transferência excessiva dos módulos entre o disco e a memória

Page 22: SO-05 Gerenciamento de Memória e Alocação

22 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Motivação:   tornar mais fácil programar uma aplicação, dividindo-a em dois ou

mais processos   existência de serviço interativo para vários usuários

simultaneamente (tempo de resposta)   utilização da CPU (existência de processos I/O bound )

  Modelos de Multiprogramação   Modelos Simplista

 Se cada processo gasta 20% de seu tempo na memória usando o processador, então 5 processos alcançam um fator de utilização da CPU de 100%

  E se os 5 processos esperam por E/S simultaneamente?

Page 23: SO-05 Gerenciamento de Memória e Alocação

23 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Modelo Probabilistico  Cada processo gasta p% de seu tempo com E/S  n processos probabilidade de estarem aguardando E/S

simultaneamente: pn

 Exemplo: – 1 MB de memória, SO de 200K, processos de 200K e cada

um gasta 80% do tempo com E/S 4 processos na memória FUCPU ≅ 60%

– Adição de 1 MB de RAM grau de 4 p/ 9 FU ≅87% – Adição de mais 1 MB de RAM grau de multiprogramação

de 9 para 14 FU ≅ 96%

F.U.CPU = 1 - pn

Page 24: SO-05 Gerenciamento de Memória e Alocação

24 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

8 KB Partição 2

  Nos primeiros SOs multiprogramados a memória principal era dividida em pedaços de tamanho fixo (possivelmente distintos), chamados partições

Memória Principal

Sistema Operacional Partição 1

Tabela de partições

Partição 3

Partição Tamanho

  O tamanho das partições era estabelecido na fase de inicialização do sistema (boot), em função dos tamanhos dos programas que iriam ser executados   alteração de tamanho de partição reinicialização

1 2 KB 2 5 KB 3 8 KB

Programas a serem executados

2 KB

5 KB E D C B A 3KB 6KB 1KB 4KB 2KB

Page 25: SO-05 Gerenciamento de Memória e Alocação

25 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  A proteção baseia-se em dois registradores, que indicam os limites inferior e superior da partição onde o programa está sendo executado

  Acessos do processo usuário provocam a comparação com o registrador limite, caso haja invasão, o processo é terminado com uma mensagem de erro.

Partição 2

Memória Principal

Sistema Operacional Partição 1

Partição 3

Endereço inicial Endereço final

Page 26: SO-05 Gerenciamento de Memória e Alocação

26 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  E as chamadas aos serviços do SO ?   Isto é resolvido através da instrução chamada ao supervisor

(supervisor call )

  Modo Usuário:   Execução das instruções disponíveis aos usuários

  Modo Supervisor:   Todas as instruções permitidas (não é feita comparação com o

registrador limite)   A passagem do modo usuário para o modo supervisor ocorre

quando da solicitação de um serviço

Modo Usuário versus Modo Supervisor

Page 27: SO-05 Gerenciamento de Memória e Alocação

27 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Partições Fixas com Filas Múltiplas:   processo é colocado em uma partição determinada. Se estiver ocupada,

aguarda na fila;   ou, processo é colocado na fila da menor partição em que caiba

  Problema: partições não utilizadas

Partição 2

Memória Principal

Sistema Operacional Partição 1

Partição 3

Programas a serem executados

Page 28: SO-05 Gerenciamento de Memória e Alocação

28 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Partições Fixas com Fila Única:   fila única para todas as partições;   processo é colocado na fila da menor partição disponível em que caiba

Partição 2

Memória Principal

Sistema Operacional Partição 1

Partição 3

Programas a serem executados

Page 29: SO-05 Gerenciamento de Memória e Alocação

29 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Problema:   colocação de um programa pequeno em uma partição grande   partições vazias por falta de “clientes”

  Uma tentativa de solução:   correr toda a fila antes de escolher o “cliente”   Problema:

 discrimina pequenos processos

Page 30: SO-05 Gerenciamento de Memória e Alocação

30 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Em sistemas em que os compiladores e montadores geram apenas código absoluto, os processos podem executar em apenas uma das partições, mesmo que outras estejam livres

Partição 2

Memória Principal

Sistema Operacional Partição 1

Partição 3

Programas a serem executados

2 KB

5 KB

8 KB E

D

C

B

A

  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

Page 31: SO-05 Gerenciamento de Memória e Alocação

31 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Com a evolução dos compiladores, linkers e loaders, tornou-se possível a geração de código relocável, permitindo que os processos sejam carregados em qualquer uma das partições

Processo A

Memória Principal

Sistema Operacional Processo C

Processo B

Programas a serem executados

2 KB

5 KB

8 KB E D

  Se os processos A e B terminarem de executar, o processo E pode ser carregado e executado em qualquer uma das duas partições 6KB 3KB

Page 32: SO-05 Gerenciamento de Memória e Alocação

32 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Problema da APE: fragmentação excessiva   Fragmentação é o problema que surge quando pedaços de

memória ficam impedidos de serem utilizados por outros processos.

Processo A

Memória Principal

Sistema Operacional Processo C

Processo E

Programas a serem executados 1 KB

3 KB

3 KB

B D 6KB 4KB

Page 33: SO-05 Gerenciamento de Memória e Alocação

33 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Visa reduzir o problema da fragmentação e, consequentemente, aumentar o grau de compartilhamento da memória

  É eliminado o conceito de partições de tamanho fixo   Na APD, cada processo utiliza o espaço necessário, passando

esse pedaço a ser a sua partição

Processo C

Sistema Operacional Processo B

Processo E

Programas a serem executados

4 KB 1 KB

2 KB A E C B

2KB 3KB 1KB 4KB

Memória Principal

Sistema Operacional

11 KB

Processo A

3 KB

1 KB

Page 34: SO-05 Gerenciamento de Memória e Alocação

34 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Memória Principal

Sistema Operacional 0

400K

2560K

Fila de processos Processo Tamanho Tempo

P1 P2 P3 P4 P5

600K 1000K 300K 700K 500K

10 5 20 8 15

Page 35: SO-05 Gerenciamento de Memória e Alocação

35 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

P2 termina

0 400K

1000K

so so so so so

2560K 2560K 2560K 2560K 2560K

2000K 2300K

0 400K

1000K

2000K 2300K

0 400K

1000K

2000K 2300K

0 400K

1000K

2000K 2300K

0 400K

1000K

2000K 2300K

P1 P1 P1 P5 900K

P2

P3 P3 P3 P3 P3

P4 P4 P4

1700K

aloca a P4

P1 termina 1700K 1700K

aloca a P5

Page 36: SO-05 Gerenciamento de Memória e Alocação

36 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Neste esquema, a fragmentação começa a ocorrer quando os processos forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos processos

Processo C

Sistema Operacional Programa a ser executado 4 KB

1 KB

2 KB 6KB

Memória Principal

Processo A

3 KB

1 KB

D

  Apesar da existência de 8 Kbytes de memória livre, o processo D não poderá ser carregado

Page 37: SO-05 Gerenciamento de Memória e Alocação

37 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Soluções para a fragmentação:   Primeira: aglutinar espaços livres adjacentes em um único espaço

de tamanho maior. No exemplo anterior, caso o processo C termine, teríamos:

Processo C

Sistema Operacional 4 KB 1 KB

2 KB

Memória Principal

Processo A

3 KB

1 KB

Sistema Operacional

8 KB

2 KB Processo A 1 KB

Memória Principal

Page 38: SO-05 Gerenciamento de Memória e Alocação

38 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Como gerenciar? (ver tópico Gerência de Uso da Memória)  Mapa de Bits  Lista de partições ocupadas  Lista de partições livres  Ao término do processo, um “buraco” pode ser:

– adicionado à lista de partições livres (caso a nova partição livre esteja cercada de partições ocupadas)

–  incorporada a uma das partições da lista de partições livres (caso o “buraco” seja adjacente a uma partição livre)

  Não resolve completamente o problema (pode haver buracos pequenos...)

Page 39: SO-05 Gerenciamento de Memória e Alocação

39 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

2 KB Processo A

  Segunda: fazer uma relocação de todas as regiões ocupadas (movimento de todos os processos), eliminando todos os espaços entre elas e criando-se uma única área livre contígua. Este método é conhecido como compactação.

Processo C

Sistema Operacional 4 KB 1 KB

2 KB

Memória Principal

Processo A

3 KB

1 KB

Sistema Operacional

8 KB

1 KB

Memória Principal

Processo C

Page 40: SO-05 Gerenciamento de Memória e Alocação

40 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Problemas:  Consumo de recursos (grande quantidade de área em disco e

de tempo de processador consumido em sua implementação)  Sistema necessita parar (pode ser desastroso para sistemas de

tempo real)

Page 41: SO-05 Gerenciamento de Memória e Alocação

41 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

0 300K

1000K

so

2100K

1500K

1900K

P1 P2

P3

P4

500K 600K

1200K

400K

300K

200K Configuração

inicial

0 300K

800K

so

2100K

P1 P2 P3

P4

500K 600K

1200K

900K

600K transferidos

0 300K so

2100K

P1 P2

P3

P4

500K 600K

1200K

900K

400K transferidos

1000K

0 300K so

2100K

P1 P2

P3

P4

500K 600K

900K

200K transferidos

1500K

1900K

Modos de Compactação

Page 42: SO-05 Gerenciamento de Memória e Alocação

42 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Fragmentação Externa:   existe memória suficiente para satisfazer uma requisição, mas ela não

é contínua  Estatisticamente, de cada N blocos alocados, N/2 blocos são

perdidos devido à fragmentação (33%)   Fragmentação Interna:

  memória interna a uma partição, mas que não é usada. Ex.:

requisição de 18462 bytes

  Uma solução para fragmentação externa é compactação

Memória Principal

Sistema Operacional Processo 1

Processo 43

18464 bytes

Page 43: SO-05 Gerenciamento de Memória e Alocação

43 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Memória subdividida em unidades de alocação   A cada unidade de alocação 1 bit no mapa

  Se bit é 0, esta parte da memória está livre   Se bit é 1, está ocupada

  Tamanho da unidade de alocação versus tamanho do mapa   Se a unidade de alocação for de 4 bytes a parte da memória gasta

com este mapa é de apenas 3%   Se a unidade for maior tamanho do mapa é menor, mas aumenta o

desperdício de memória (fragmentação interna)   Desvantagem: para encontrar k unidades de alocação livres

percorrer mapa inteiro procurando k bits iguais a zero muito lento!

Page 44: SO-05 Gerenciamento de Memória e Alocação

44 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

(a) Parte da memória (b) Mapa de bits correspondente (c) Lista ligada correspondente

Page 45: SO-05 Gerenciamento de Memória e Alocação

45 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Lista ligada de segmentos alocados e de segmentos livres   Ordenação por endereços

  rápida atualização quando do término/remoção da memória   Possíveis combinações para a conclusão de um processo X:

  Com listas duplamente encadeadas a tarefa é ainda mais simples!

B A X A X

B A A após o término

de X fica B X X

B

Page 46: SO-05 Gerenciamento de Memória e Alocação

46 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Como atender uma requisição de tamanho n a partir de uma lista de buracos livres?   Estratégias de alocação de memória para escolher o ponto em que

deve ser carregado um processo recém criado ou que veio do disco por troca (swapped in)

  Listas separadas para processos e buracos:  mais rápido na busca por buracos  mais lento na liberação de memória  variante: os próprios buracos podem ser usados para implementar

a lista de partições livres   First-fit:

  A lista de partições livres é percorrida e a primeira partição suficientemente grande para o pedido é escolhida

  A lista pode ser mantida em ordem aleatória ou ordenada em ordem crescente de endereço  rápido

Page 47: SO-05 Gerenciamento de Memória e Alocação

47 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Processo C

Sistema Operacional 3 KB

Memória Principal

Processo A

4 KB

2 KB 1 KB

F Processo C

2 KB

Memória Principal

Processo A

Processo F Sistema Operacional

Page 48: SO-05 Gerenciamento de Memória e Alocação

48 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Next-fit:   Idêntico ao First-fit com a diferença que a busca se inicia a partir do

último ponto em que encontrou um buraco  desempenho ligeiramente mais lento que o First-fit

  Best-fit:   A lista de partições livres é percorrida e a menor partição

suficientemente grande para o pedido é escolhida   A lista é ordenada em ordem crescente de tamanho

 lento se a lista não estiver ordenada (teria que percorrer a lista inteira)

 desempenho ruim devido a muitos buracos pequenos (fragmentação externa)

Page 49: SO-05 Gerenciamento de Memória e Alocação

49 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Processo C

Sistema Operacional 3 KB

Memória Principal

Processo A

4 KB

2 KB 1 KB

F Processo C

1 KB

Memória Principal

Processo A Processo F

Sistema Operacional

Page 50: SO-05 Gerenciamento de Memória e Alocação

50 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Worst-fit:   A lista de partições livres é percorrida e a maior partição

suficientemente grande para o pedido é escolhida   A lista é ordenada em ordem decrescente de tamanho

 diminui um pouco o problema da fragmentação   Quick-fit:

  Listas separadas para alguns tamanhos mais comuns especificados (por exemplo, uma fila para 2K, outra para 4K, outra para 8K, etc)  busca por buraco rápida  entretanto, a liberação de memória é lenta (reagrupar buracos e

modificá-los de fila)

Page 51: SO-05 Gerenciamento de Memória e Alocação

51 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

Processo A

Processo F Processo C

Sistema Operacional 3 KB

Memória Principal

Processo A

4 KB

2 KB 1 KB

F Processo C

3 KB

Memória Principal

Sistema Operacional

Page 52: SO-05 Gerenciamento de Memória e Alocação

52 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Mesmo com o aumento da eficiência da multiprogramação e da gerência de memória, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível

  Em todos os esquemas apresentados anteriormente, um programa permanecia na memória principal até o final de sua execução, inclusive nos momentos em que esperava por um evento, como uma operação de E/S

  Uma solução é a técnica de swapping, cujo objetivo é o de liberar espaço na RAM para que outros processos possam ser carregados e executados   Backing store – disco rápido e grande o suficiente para acomodar

cópias de todas as imagens de memória para todos os usuários   Versões modificadas de swapping são encontradas em vários

sistemas (p.ex., UNIX, Linux e Windows).

Page 53: SO-05 Gerenciamento de Memória e Alocação

53 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Neste esquema, o SO escolhe um programa residente na memória principal, levando-o da memória para o disco (swap out)

Processo A

Memória Principal

Sistema Operacional Processo C

Processo B

H 4 KB

A Processo G

Page 54: SO-05 Gerenciamento de Memória e Alocação

54 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Posteriormente, o processo retorna para a memória principal (swap in), como se nada tivesse ocorrido

Processo H

Memória Principal

Sistema Operacional Processo C

A Swap in Processo G

Page 55: SO-05 Gerenciamento de Memória e Alocação

55 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Mapeamento de espaço lógico em espaço físico de endereçamento, em tempo de carregamento, torna ineficiente recarregar o processo em outra região física diferente da do primeiro carregamento

  Solução:   Introdução de hardware que faça o mapeamento durante a

execução do processo: interceptador de endereços lógicos que soma um valor base aos mesmos, produzindo o endereço físico

  Não há mais necessidade da tabela de endereços relocáveis

Page 56: SO-05 Gerenciamento de Memória e Alocação

56 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Relocação Estática:   Mapeamento em tempo de carregamento

  Relocação Dinâmica:   Mapeamento durante a execução

  Endereço Lógico = Endereço Virtual   É o valor de um deslocamento em relação ao início do programa

Page 57: SO-05 Gerenciamento de Memória e Alocação

57 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Exemplo de hardware para mapeamento   Contém o endereço físico onde foi carregado o início do programa

Registrador Base Instrução

+

Operação End. Lógico

Endereço Físico = Endereço Real (disponível na memória)

Page 58: SO-05 Gerenciamento de Memória e Alocação

58 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Proteção em relocação dinâmica   Consiste em comparar o endereço físico com o comprimento do

programa   Instrução de chamada ao supervisor

  Separação entre dados e instruções   Permite o compartilhamento de instruções por dois ou mais

processos   Permite duplicar o tamanho máximo do espaço lógico   Exige a duplicação do hardware necessário para relocação e

proteção

Page 59: SO-05 Gerenciamento de Memória e Alocação

59 Gerência de Memória - Alocação Eduardo Nicola F. Zagari

  Garantir espaço em disco sempre que algum processo é swapped out

  Os algoritmos para gerenciar o espaço alocado em disco para swapping são os mesmos de gerência da memória principal

  Em alguns sistemas, isto é feito somente no momento da criação do processo e tal espaço permanece reservado

  A única diferença é que a quantidade de espaço reservado no disco deve ser um múltiplo do tamanho dos blocos do disco