gerencia de memoria (1)

107
1 Gerenciamento de Memória Fernando Morse morse @oi.com. br

Upload: guilherme-soares

Post on 04-Aug-2015

37 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Gerencia de Memoria (1)

1

Gerenciamento de Memória

Fernando Morse

[email protected]

Page 2: Gerencia de Memoria (1)

2

Gerenciamento de Memória

Introdução

Enquanto em um sistema monoprogramável, o gerenciamento de memória não é tão complicado, num sistema multiprogramado, esta tarefa se torna crítica.

É preciso gerenciar diversas aplicações compartilhando a mesma memória física.

O sistema operacional carrega os programas localizados no disco para a memória antes de executá-los.

Como o acesso a disco (operação de IO) é muito mais demorada que um acesso à memória, o S.O. deve procurar manter o maior número de dados e programas na memória principal.

Page 3: Gerencia de Memoria (1)

3

Gerenciamento de Memória

Funções Básicas

Manter o maior número de processos na memória

SwappingSwapping quando a memória acabar

Execução de programas maiores que memória disponível

Proteção contra acessos indevidos

Compartilhamento entre processos e threadsthreads.

Page 4: Gerencia de Memoria (1)

4

Gerenciamento de Memória

Alocação de Memória

Page 5: Gerencia de Memoria (1)

5

Gerenciamento de Memória

Alocação de Memória

Quando se fala em alocação de memória, estamos falando, na verdade, de como interfacear seu programa com o sistema operacional, pois efetivamente quem lhe dará memória é o sistema operacional.

Page 6: Gerencia de Memoria (1)

6

Gerenciamento de Memória

Técnicas

Alocação Contígua Simples Alocação Contígua Overlay Alocação Particionada Swapping Memória Virtual Paginação Segmentação

Page 7: Gerencia de Memoria (1)

7

Gerenciamento de Memória

Alocação Contígua Simples

Page 8: Gerencia de Memoria (1)

8

Gerenciamento de Memória

Alocação Contígua Simples

– A alocação contígua simples foi implementada nos primeiros sistemas operacionais desenvolvidos.

– A memória principal é dividida em duas partes: uma para o Sistema Operacional e outra para o Programa do Usuário.

 

Page 9: Gerencia de Memoria (1)

9

Gerenciamento de Memória

Alocação Contígua Simples

– O programador deve desenvolver suas aplicações preocupado-se , apenas, em não ultrapassar o espaço de memória disponível.

– O usuário tem controle sobre toda a memória principal, podendo acessar qualquer posição de memória, inclusive para alterar o Sistema Operacional.  

– Alguns sistemas implementam proteção através de um registrador, que delimita as áreas do Sistema Operacional e do usuário.

  

Page 10: Gerencia de Memoria (1)

10

Gerenciamento de Memória

Alocação Contígua Simples

– Dessa forma, sempre que um programa de usuário faz referência a um endereço na memória, o sistema verifica se o endereço está nos seus limites.

– Apesar de sua fácil implementação e código reduzido, a alocação contígua simples não permite a utilização eficiente do processador.  

Page 11: Gerencia de Memoria (1)

11

Gerenciamento de Memória

Alocação Contígua Simples

– Proteção – há um registrador para não deixar o programa acessar uma área do S.O.

Page 12: Gerencia de Memoria (1)

12

Gerenciamento de Memória

Alocação Contígua Simples

– Apenas um usuário pode dispor desses recursos.– Caso o programa do usuário não preencha totalmente,

existirá um espaço de memória sem utilização.– A princípio, os programas dos usuários estavam

limitados ao tamanho da memória principal disponível.

Page 13: Gerencia de Memoria (1)

13

Gerenciamento de Memória

Alocação Contígua Simples– Problema: Subutilização da memória, pois apenas

um usuário tem acesso ao sistema por vez.

Lembre-se: Apenas 1 programa poderá ser executado por vez.

Área de Memória desperdiçada

Page 14: Gerencia de Memoria (1)

14

Gerenciamento de Memória

Alocação Contígua Overlay

Page 15: Gerencia de Memoria (1)

15

Gerenciamento de Memória

Alocação Contígua Overlay

– Quando um módulo estiver na memória, o outro não precisa necessariamente estar.

– O módulo principal é comum aos dois módulos; logo, deve permanecer na memória durante todo o tempo.

– A definição das áreas de overlay é função do programador, através de comandos específicos da linguagem utilizada.

– O tamanho de uma área será estabelecido a partir do tamanho do maior módulo.

Page 16: Gerencia de Memoria (1)

16

Gerenciamento de Memória

Alocação Contígua Overlay

– A técnica de overlay tem a vantagem de permitir ao programador expandir os limites da memória principal.

– A utilização dessa técnica exige muito cuidado, pois pode trazer implicações tanto no desempenho das aplicações, devido à possibilidade de transfer6encia excessiva dos módulos entre disco e a memória, quanto na sua manutenção.

Page 17: Gerencia de Memoria (1)

17

Gerenciamento de Memória

Alocação Contígua Overlay

O tamanho da área de overlay será estabelecido pela módulo de maior tamanho.

Page 18: Gerencia de Memoria (1)

18

Gerenciamento de Memória

Alocação Particionada

Page 19: Gerencia de Memoria (1)

19

Gerenciamento de Memória

Alocação Particionada

– Nos sistemas multiprogramáveis, o processador permanece ocioso e a memória é substituída, enquanto o programa aguarda por algum evento.

– Para a multiprogramação ser eficiente, é necessário que vários programas estejam na memória ao mesmo tempo, daí a necessidade de uma nova forma de organização para a memória principal.

Page 20: Gerencia de Memoria (1)

20

Gerenciamento de Memória

Alocação Particionada

– Já é uma maneira mais sofisticada de gerenciar a memória

– A alocação particionada pode ser: Estática ou Fixa – O tamanho das partições é

fixo e definido a priori (Absoluta e Relocável). Dinâmica – O tamanho das partições podem

ser alterados dinamicamente.

Page 21: Gerencia de Memoria (1)

21

Gerenciamento de Memória

Alocação Particionada Estática Absoluta

Page 22: Gerencia de Memoria (1)

22

Gerenciamento de Memória

Alocação Particionada Estática Absoluta

Nos primeiros sistemas multiprogramáveis, a memória foi dividida em pedaços de tamanho fixo, chamados partições.

O tamanho das partições era estabelecido na fase de iniciação do sistema, 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 reiniciado com uma nova configuração.

A princípio, os programas só podiam executar em uma das partições, mesmo se outras estivessem disponíveis.

Page 23: Gerencia de Memoria (1)

23

Gerenciamento de Memória

Alocação Particionada Estática Absoluta

Essa limitação se devia aos compiladores e montadores, que geravam apenas código absoluto.

A esse tipo de alocação chamou-se alocação particionada estática absoluta.

Page 24: Gerencia de Memoria (1)

24

Gerenciamento de Memória

Alocação Particionada Estática Absoluta

Page 25: Gerencia de Memoria (1)

25

Gerenciamento de Memória

Alocação Particionada Estática Relocável

Page 26: Gerencia de Memoria (1)

26

Gerenciamento de Memória

Alocação Particionada Estática Relocável

Com a evolução dos compiladores, linkers e loaders, a geração de código relocável foi possível, e os programas puderam ser carregados em qualquer partição.

Foi criado um novo tipo de organização, denominado alocação particionada estática relocável.

Para manter o controle de quais partições estavam alocadas ou não, os sistemas possuíam uma tabela, delimitando cada partição, seu tamanho e se estava em uso ou não.

Sempre que um programa era carregado para a memória, o sistema percorria a tabela, na tentativa de localizar uma partição livre, onde o programa pudesse ser alocado.

Page 27: Gerencia de Memoria (1)

27

Gerenciamento de Memória

Alocação Particionada Estática Relocável

Tanto nos sistemas de alocação absoluta quanto nos de alocação relocável, os programas, normalmente, não preenchiam totalmente as partições onde eram carregados.

Se um programa for maior que qualquer partição livre, ele ficará aguardando uma que o acomode, mesmo que existam duas ou mais partições adjacentes que, somadas, totalizem o tamanho do programa.

Page 28: Gerencia de Memoria (1)

28

Gerenciamento de Memória

Alocação Particionada Estática Relocável

Page 29: Gerencia de Memoria (1)

29

Gerenciamento de Memória

Alocação Particionada Estática - FragmentaçãoFragmentação

Grande perda de memória não utilizada em suas diversas partições

Page 30: Gerencia de Memoria (1)

30

Gerenciamento de Memória

Alocação Particionada Dinâmica

Page 31: Gerencia de Memoria (1)

31

Gerenciamento de Memória

Alocação Particionada Dinâmica

A  alocação particionada estática, analisada no item anterior, deixou evidente a necessidade de uma nova forma de organização para a memória principal, que diminuísse o problema da fragmentação e, conseqüentemente, aumentasse o grau de compartilhamento da memória.

Na alocação particionada dinâmica (ou variável), foi eliminado o conceito de partições de tamanho fixo.

Cada programa utilizaria o espaço de que necessitasse, passando esse pedaço a ser sua partição.  

Page 32: Gerencia de Memoria (1)

32

Gerenciamento de Memória

Alocação Particionada Dinâmica

A fragmentação externa começará a ocorrer, realmente, quando os programas forem terminando e deixando espaços cada vez menores na memória, não permitindo o ingresso de novos programas. (Próxima Figura)

Page 33: Gerencia de Memoria (1)

33

Gerenciamento de Memória

FragmentaçãoFragmentação

Page 34: Gerencia de Memoria (1)

34

Gerenciamento de Memória

Alocação Particionada Dinâmica - FragmentaçãoFragmentação Existem duas soluções para fragmentação:

– Os espaços adjacentes são reunidos, produzindo um espaço de tamanho maior.

Atenção, aconteceu o término de execução do programa C

Page 35: Gerencia de Memoria (1)

35

Gerenciamento de Memória

Alocação Particionada Dinâmica - FragmentaçãoFragmentação– A segunda maneira de resolver o problema da fragmentação

envolve a relocação de todas as partições, eliminando os espaços entre elas e criando uma única área livre contígua.

Page 36: Gerencia de Memoria (1)

36

Gerenciamento de Memória

Estratégias para Escolha da Partição

 – Os sistemas Operacionais implementam, basicamente, três

estratégias para determinar em qual partição livre um programa será carregado para execução. BEST-FIT, WORST-FIT e FIRST-FIT

– Essas estratégias tentam evitar, ou diminuir, o problema da fragmentação antes que ela ocorra.

– O sistema possuí uma lista de áreas livres (free list), com  o endereço e tamanho de cada uma delas.

Page 37: Gerencia de Memoria (1)

37

Gerenciamento de Memória

Lista de áreas livres

Lista de áreas livres – controla as partições e sua disponibilidade.

Page 38: Gerencia de Memoria (1)

38

Gerenciamento de Memória

Best-fit

– Escolhe a melhor partição (best-fit), ou seja, aquela em que o programa deixa o menor espaço sem utilização.

– A lista de áreas livres está ordenada por tamanho, diminuindo o tempo de busca por uma área desocupada.

– 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.

Page 39: Gerencia de Memoria (1)

39

Gerenciamento de Memória

Best-fit

Page 40: Gerencia de Memoria (1)

40

Gerenciamento de Memória

Worst-fit

– Escolhe a pior partição (worst-fit), ou seja, aquela em que o programa deixa o maior espaço sem utilização.

– Deixa espaços livres maiores, para serem ocupados por outros programas, diminuindo o problema de fragmentação

Page 41: Gerencia de Memoria (1)

41

Gerenciamento de Memória

Worst-fit

Page 42: Gerencia de Memoria (1)

42

Gerenciamento de Memória

First-fit

– Escolhe a primeira partição (first-fit) livre, de tamanho suficiente para carregar o programa.

– 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, a first-fit é a mais rápida, consumindo menos recursos do sistema.

Page 43: Gerencia de Memoria (1)

43

Gerenciamento de Memória

First-fit

Page 44: Gerencia de Memoria (1)

44

Gerenciamento de Memória

Swapping

Page 45: Gerencia de Memoria (1)

45

Gerenciamento 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 swapping veio tentar resolver o problema da insuficiência de memória para todos os usuários.

Em todos os esquemas apresentados anteriormente, um programa permanecia na memória principal até o final da sua execução.

O sistema escolhe um programa residente, que é levado da memória para o disco (swap out), retornando posteriormente para a memória principal (swap in), como se nada tivesse ocorrido.

  

Page 46: Gerencia de Memoria (1)

46

Gerenciamento de Memória

Swapping

SWAP OUT SWAP IN

Page 47: Gerencia de Memoria (1)

47

Gerenciamento de Memória

Swapping  Um dos problemas gerados pelo swapping é a relocação dos

programas. O loader relocável permite que um programa seja colocado em qualquer posição de memória, porém a relocação é realizada no momento do carregamento.

No caso de um programa que saia e volte muitas vezes para a memória, é necessário que a relocação seja realizada pelo loader de cada carregamento.

Torna o mecanismo ineficiente em função do tempo gasto para o carregamento.

A melhor solução para este problema é uma implementação do hardware dos computadores (MMU), para permitir que a relocação seja realizada durante a execução do programa. Esse tipo de mecanismo é denominado relocação dinâmica .

Page 48: Gerencia de Memoria (1)

48

Gerenciamento de Memória

Swapping

  A relocação dinâmica é essencial para a implementação

de um sistema multiprogramável.

O conceito swapping permitiu um maior compartilhamento da memória e, conseqüentemente, um maior throughput.

Page 49: Gerencia de Memoria (1)

49

Gerenciamento de Memória

Localidade de Referência

Page 50: Gerencia de Memoria (1)

50

Gerenciamento de Memória

Localidade de Referência

A importância de se melhorar a localidade de dados está relacionado ao uso eficiente da hierarquia de memória. O princípio da localidade de referência diz que o dado usado mais recentemente tem grande probabilidade de ser acessado novamente num futuro próximo (localidade temporal).

Favorecendo-se o acesso a tais dados, aumenta-se o desempenho do sistema. Então, na medida do possível, os elementos recentemente acessados devem ser mantidos em memórias mais rápidas.

Page 51: Gerencia de Memoria (1)

51

Gerenciamento de Memória

Localidade de Referência

Devido ao fato de que memórias mais rápidas são menores, seu uso como memória de armazenamento dos dados de recente acesso, num nível próximo ao processador, e a utilização de memórias maiores (e mais lentas) em níveis mais distantes do processador, permite que se alcance um melhor compromisso entre custo e desempenho. Este tipo de organização é denominada de hierarquia de memória.

Page 52: Gerencia de Memoria (1)

52

Gerenciamento de Memória

Localidade de Referência – Formas de Localidade

Localidade temporal:

Itens referenciados no passado recente têm maior chance de serem novamente referenciados em um futuro próximo

Page 53: Gerencia de Memoria (1)

53

Gerenciamento de Memória

Localidade de Referência – Formas de Localidade

Localidade espacial:

Tendência em processos de acessar itens cujos endereços estão próximos. elementos em posições consecutivas da memória têm chance de serem acessados em sequência

Page 54: Gerencia de Memoria (1)

54

Gerenciamento de Memória

Relocação Dinâmica

Page 55: Gerencia de Memoria (1)

55

Gerenciamento de Memória

MMU (Memory Management Unit)

Dispositivo de hardware que transforma endereços virtuais em endereços físicos. Na MMU, o valor no registo de relocação é adicionado a todo o endereço lógico gerado por um processo do utilizador na altura de ser enviado para a memória. O programa do utilizador manipula endereços lógicos; ele nunca vê endereços físicos reais.

Page 56: Gerencia de Memoria (1)

56

Gerenciamento de Memória

MMU

Quando uma posição de memória é lida ou escrita, o hardware traduz o endereço gerado pelo programa ((o endereço de memória virtual ou lógico) em um endereço de memória real, normalmente diferente, (o endereço físico de memória).

A tradução é implementada pela MMU, que pode ser um módulo da CPU ou um circuito auxiliar em um chip interligado à CPU.

Endereço Lógico – gerado pela UCP.Endereço Físico – endereço visto pela unidade de memória.

Page 57: Gerencia de Memoria (1)

57

Gerenciamento de Memória

A MMU é o dispositivo de hardware responsável por mapear o endereço virtual para endereço físico.

Neste esquema o valor no registrador de relocação (próxima figura) é somado em cada endereço gerado pelo processo do usuário no momento em que ele é enviado para a memória ou, para o caso de leitura fazemos o processo inverso.

Lembre-se os programas sempre se referem a endereços lógicos (virtual) ele não vê os endereços físicos.

Page 58: Gerencia de Memoria (1)

58

Gerenciamento de Memória

Relocação Dinâmica

Page 59: Gerencia de Memoria (1)

59

Gerenciamento de Memória

Relocação

•O problema de determinados programas só rodarem em uma partição

passou a ser crítico, pois trazia uma grande ineficiência ao sistema.

•A técnica de relocação consiste na utilização de um registrador (registro de

relocação) como endereço base a partir do qual todos os endereços são

referenciados.

•O valor desse registrador é somado a todo endereço base gerado pelo

processo do usuário em execução.

Page 60: Gerencia de Memoria (1)

60

Gerenciamento de Memória

Relocação

Page 61: Gerencia de Memoria (1)

61

Gerenciamento de Memória

Memória Virtual

Page 62: Gerencia de Memoria (1)

62

Gerenciamento de Memória

Memória Virtual

A memória virtual é uma forma de permitir ao software utilizar mais memória que o computador possui fisicamente. Ela consiste de um conjunto de alterações no projeto do hardware combinadas a alterações no projeto do sistema operacional. Tecnicamente falando, ela permite ao programa executar em um espaço de memória cujo tamanho não é necessariamente limitado ao tamanho da memória física do computador, com a combinação das memórias principal e secundária.

Page 63: Gerencia de Memoria (1)

63

Gerenciamento de Memória

Memória Virtual

  O conceito de memória virtual está baseado em desvincular o

endereçamento feito pelo programa dos endereços físicos da memória principal.

Os programas e suas estruturas de dados deixam de estar limitados ao tamanho da memória física disponível.

Page 64: Gerencia de Memoria (1)

64

Gerenciamento de Memória

Page 65: Gerencia de Memoria (1)

65

Gerenciamento de Memória

Espaço de Endereçamento Virtual  Um programa no ambiente de memória virtual não faz

referência a endereços físicos de memória (endereços reais) , mas apenas a endereços virtuais.

No momento da execução de uma instrução, o endereço virtual é traduzido para um endereço físico, pois o processador acessa apenas posições da memória principal.

O mecanismo de tradução do endereço virtual para endereço físico é denominado mapeamento.

  

Page 66: Gerencia de Memoria (1)

66

Gerenciamento de Memória

Espaço de Endereçamento Virtual

O conjunto de endereços virtuais que os processos podem endereçar é chamado espaço de endereçamento virtual. Analogamente, o conjunto de endereços reais é chamado espaço de endereçamento real.

O espaço de endereçamento virtual não tem nenhuma relação direta com os endereços no espaço real.

Um programa pode fazer referência a endereços virtuais que estejam fora dos limites do espaço real, ou seja, os programas e suas estruturas de dados não estão  mais limitados ao tamanho da memória física disponível.

 

Page 67: Gerencia de Memoria (1)

67

Gerenciamento de Memória

Espaço de Endereçamento Virtual

Os programas podem ser muito maiores que a memória física, apenas parte deles pode estar residente na memória em um determinado instante.

O sistema operacional utiliza a memória secundária como extensão da memória principal.

Quando o usuário desenvolve suas aplicações, ele ignora a existência dos endereços virtuais.

Os compiladores  linkers se encarregam de gerar o código executável em função desses endereços, e o sistema operacional cuida dos detalhes de sua execução.

Page 68: Gerencia de Memoria (1)

68

Gerenciamento de Memória

Page 69: Gerencia de Memoria (1)

69

Gerenciamento de Memória

Mapeamento  Deve existir um mecanismo que transforme os endereços

virtuais em endereços reais. Mapeamento permite ao sistema operacional traduzir um

endereço localizado no espaço virtual para um no espaço real. Como conseqüência do mapeamento, um programa não

precisa estar necessariamente contíguo na memória real para ser executado

Nos sistemas atuais, a tarefa de tradução é realizada por hardware, juntamente com o sistema operacional, de forma a não comprometer seu desempenho e torná-lo transparente a usuários e suas aplicações.

Page 70: Gerencia de Memoria (1)

70

Gerenciamento de Memória

Mapeamento  Como a maioria das aplicações tende a fazer referência a um reduzido

número de páginas, somente uma pequena fração da tabela de páginas é realmente necessária.

Com base nesta realidade, foi introduzido um hardware especial para mapear endereços virtuais para endereços físicos sem a necessidade de acesso à tabela de páginas, chamando  memória associativa ou translation lookside buffer (Cache da MMU).

Cada processo tem o mesmo espaço de endereçamento virtual, como se possuísse sua própria memória virtual.

O mecanismo de tradução se encarrega, então, de manter tabelas de mapeamento exclusivas para cada processo, relacionando os endereços virtuais do processo às suas posições na memória física.

  

Page 71: Gerencia de Memoria (1)

71

Gerenciamento de Memória

Page 72: Gerencia de Memoria (1)

72

Gerenciamento de Memória

Paginação  Paginação é a técnica de gerência de memória onde o espaço

de endereçamento virtual e o espaço de endereçamento real são divididos em blocos do mesmo    tamanho, chamados páginas.

As páginas no espaço  virtual são denominadas páginas virtuais, as páginas no espaço real são chamadas de páginas reais ou frames (molduras).

Todo o mapeamento é realizado em nível de página, através de tabelas de páginas. Cada processo possui sua própria tabela

Page 73: Gerencia de Memoria (1)

73

Gerenciamento de Memória

Page 74: Gerencia de Memoria (1)

74

Gerenciamento de Memória

Paginação

Cada página virtual do processo possui uma entrada na tabela (entrada na tabela de ‘páginas - ETP), com informações de mapeamento que permitem ao sistema localizar a página real correspondente.

Quando um programa é executado, as páginas virtuais são transferidas da memória secundária para a memória principal e colocadas em frames.

Sempre que o programa fizer referência a um endereço virtual, o mecanismo de mapeamento localizará, na ETP da tabela do processo, o endereço físico do frame.

Page 75: Gerencia de Memoria (1)

75

Gerenciamento de Memória

Paginação

Page 76: Gerencia de Memoria (1)

76

Gerenciamento de Memória

Paginação      

O endereço virtual é formado pelo número da página virtual (NPV) e um deslocamento dentro da página.

O NPV identifica, unicamente, uma página virtual na tabela de páginas (ETP)

O deslocamento funciona como seu índice. O endereço físico é calculado, então, somando-se o endereço do

frame localizado na tabela de páginas com o deslocamento contido no endereço virtual.

Page 77: Gerencia de Memoria (1)

77

Gerenciamento de Memória

Paginação   

End.Físico = End.ETP + Deslocamento

Page 78: Gerencia de Memoria (1)

78

Gerenciamento de Memória

Page Fault 

A ETP possui outras informações, entre elas o bit de validade, que indica se uma página está ou não na memória física (valid bit).

Se o bit tem o valor 0, indica que a página virtual não está na memória principal, enquanto, se for igual a 1, a página está localizada na memória.

Sempre que o processo faz referência a um endereço virtual, o sistema verifica, através do bit de validade, se a página que contém o endereço referenciado está ou não na memória principal.

Caso não esteja, o sistema tem de transferir a página da memória secundária para a memória física.Toda vez que o sistema é solicitado para isso, dizemos que ocorreu um page fault (falha de página).

Page 79: Gerencia de Memoria (1)

79

Gerenciamento de Memória

Page Fault 

Page 80: Gerencia de Memoria (1)

80

Gerenciamento de Memória

Fragmentação x Paginação

Quando menor o tamanho da página menor será a fragmentação interna da memória.

Quando menor o tamanho da página, maior será a tabela de páginas, bem como maior será o acesso ao disco causando uma perda de desempenho bem razoável

Page 81: Gerencia de Memoria (1)

81

Gerenciamento de Memória

Política de Busca de Páginas

Determina quando uma página deve ser carregada para a memória

– Paginação por Demanda: somente a página solicitada é transferida para a memória

– Paginação Antecipada: páginas adjacentes ou prováveis de serem referenciadas são trazidas junto com a página referenciada.

Page 82: Gerencia de Memoria (1)

82

Gerenciamento de Memória

Working Set  O mecanismo de memória virtual apesar de suas vantagens, introduz

um grande problema. Sempre que um processo faz referência a uma de suas páginas e esta

não se encontra na memória (page fault), exige do sistema operacional pelo menos uma operação de E/S, que, quando possível, deve ser evitada.

A taxa de page faults gerada por um programa depende de como a aplicação foi desenvolvida, além da política de gerência de memória implementada pelo sistema operacional.

Qualquer sistema que implementa paginação deve se preocupar em manter na memória principal um certo número de páginas que reduza ao máximo a taxa de paginação dos processos, ao mesmo tempo que não prejudique os demais processos que desejam ter acesso à memória.

Page 83: Gerencia de Memoria (1)

83

Gerenciamento de Memória

  Working Set O working set é o conjunto de páginas constantemente

referenciadas pelo processo, devendo permanecer na memória principal para que execute de forma eficiente.

Page 84: Gerencia de Memoria (1)

84

Gerenciamento de Memória

Realocação de Páginas  O maior problema na gerência de memória virtual por

paginação não é decidir que página carregar para a memória, mais quais páginas remover.

Quando o limite do working set de um processo é alcançado, e este necessita de novos frames, o sistema operacional deve intervir e escolher, entre as diversas páginas do seu working set, quais as páginas que devem ser liberadas.

Qualquer estratégia de realocação de páginas deve considerar se uma página foi ou não modificada, antes de liberá-la para outro processo.

 

Page 85: Gerencia de Memoria (1)

85

Gerenciamento de Memória

Realocação de Páginas

Sempre que o sistema liberar uma página desse tipo, ele antes deverá gravá-la na memória secundária (page out), preservando seu conteúdo.

O sistema mantém um arquivo de paginação (page file) onde as páginas modificadas são armazenadas.

Sempre que uma destas páginas for novamente referenciada, ela será trazida novamente para o working set do processo (page in).

Page 86: Gerencia de Memoria (1)

86

Gerenciamento de Memória

Realocação de Páginas

Page 87: Gerencia de Memoria (1)

87

Gerenciamento de Memória

Principais Algoritmos para a  Realocação de Páginas:

Aleatória FIFO (First in First Out) LRU (Last Recently Used) NRU (Not Recently Used) LFU (Least Frequently Used)

Page 88: Gerencia de Memoria (1)

88

Gerenciamento de Memória

Aleatória

  Não utiliza critério  algum de seleção. Todas as páginas do working set têm a mesma chance de ser

selecionadas, inclusive as páginas que são freqüentemente referenciadas.

Apesar de ser uma estratégia que consome poucos recursos do sistema, é raramente utilizada.

Page 89: Gerencia de Memoria (1)

89

Gerenciamento de Memória

First-In-First-Out (FIFO)

  A página que primeiro foi utilizada (first-in) será a primeira a

ser escolhida (first-out). Sua implementação é bastante simples, sendo necessária

apenas uma fila , onde as páginas mais antigas estão no início da fila e as mais recentes no final.

Caso uma página seja constantemente referenciada, como é o caso de páginas de utilitários do sistema, o fator tempo se torna irrelevante, e o sistema tem de fazer retornar a mesma página várias vezes.

Page 90: Gerencia de Memoria (1)

90

Gerenciamento de Memória

Last-Recently-Used (LRU)  Seleciona a página utilizada menos recentemente (least-

recently-used). Substitui a página na memória cuja última referência é a mais

antiga, ou seja, as páginas referenciadas a mais tempo serão referenciadas em futuro próximo.

Apesar de ser uma boa estratégia, é pouco implementada devido ao grande overhead causado pela atualização, em cada página referenciada, do momento do último acesso, além do algoritmo de busca dessas páginas.

 

Page 91: Gerencia de Memoria (1)

91

Gerenciamento de Memória

Not-Recently-Used (NRU)

  A escolha da página que não foi recentemente utilizada (not-recently-

used) é bastante semelhante ao esquema LRU. Existe um flag, que permite ao sistema a implementação do algoritmo. O flag de referência indica quando a página foi referenciada ou não, e

está associado a cada entrada na tabela de páginas. Inicialmente, todas as páginas estão com o flag indicando que não

foram referenciadas (0). À medida que as páginas são referenciadas, o flag associado a cada

página é modificado pelo hardware (1). Depois de um certo tempo, é possível saber quais páginas foram

referenciadas ou não. 

Page 92: Gerencia de Memoria (1)

92

Gerenciamento de Memória

Least-Frequently-Used (LFU)

  A página menos referenciada, ou seja, a menos freqüentemente

utilizada (least-frequently-used) será a página escolhida. É mantido um contador do número de referência feitas às páginas. A  página que tiver o contador com o menor número de referências

será a página escolhida. O algoritmo privilegia, ou seja, mantém na memória, as páginas que

são bastante utilizadas. Porém, as páginas que entrarem mais recentemente no working set

serão,  justamente, aquelas que estarão com os contadores  com menos valor.

Page 93: Gerencia de Memoria (1)

93

Gerenciamento de Memória

Segmentação

Page 94: Gerencia de Memoria (1)

94

Gerenciamento de Memória

Tamanho de Página

  O problema da fragmentação também existe em sistemas com

paginação, só que em menor escala, se comparada com a de outras organizações já apresentadas.

O programa ocupa quase que integralmente todas as páginas. A fragmentação só é encontrada, realmente, na última página,

quando o código não a ocupa por completo. O tamanho da página está associado ao hardware e varia de

sistema para sistema. A maioria dos estudos em relação ao tamanho ideal de página

indica páginas de tamanho pequeno.

Page 95: Gerencia de Memoria (1)

95

Gerenciamento de Memória

Segmentação

  Segmentação é a técnica de gerência de memória, onde os

programas são divididos logicamente em sub-rotinas e estruturas de dados e colocados em blocos de informações na memória.

Os blocos têm tamanhos diferentes s são chamados segmentos, cada um com seu próprio espaço de endereçamento.

A grande diferença entre a paginação e a segmentação é que, enquanto a primeira divide o programa em partes de tamanho fixo, sem qualquer ligação com a estrutura do programa, a segmentação permite uma relação entre a lógica do programa e sua divisão na memória.

  

Page 96: Gerencia de Memoria (1)

96

Gerenciamento de Memória

Segmentação

Page 97: Gerencia de Memoria (1)

97

Gerenciamento de Memória

Segmentação  O mecanismo de mapeamento é muito semelhante ao de paginação. Os segmentos são mapeados através de tabelas de mapeamento de

segmento (TMS), e os endereços são compostos pelo número do segmento e um deslocamento dentro do segmento.

O número de segmento identifica unicamente uma entrada na tabela de segmentos (ETS), onde estão as informações sobre o segmento na memória real.

O endereço absoluto é calculado a partir do endereço inicial do segmento mais o deslocamento dentro do segmento.

Além do endereço do segmento na memória física, cada entrada na tabela de segmentos possui informações sobre o tamanho do segmento, se ele está ou não na memória e sua proteção.

Page 98: Gerencia de Memoria (1)

98

Gerenciamento de Memória

Segmentação  O sistema operacional mantém uma tabela com áreas livres e 

ocupadas da memória. Quando um novo processo é carregado para a memória, o

sistema localiza um espaço livre que o acomode. As estratégias para escolha da área livre podem ser as

mesmas utilizadas no item Alocação Particionada Dinâmica, ou seja, best-fit, worst-fit ou first-fit.

Na segmentação, apenas os segmentos referenciados são transferidos da memória secundária para a memória real.

Logo, para serem mais eficientes, os programas devem estar bem modularizados.

Page 99: Gerencia de Memoria (1)

99

Gerenciamento de Memória

Segmentação

Se as aplicações não estiverem divididas em módulos, grandes pedaços de código estarão na memória desnecessariamente, não permitindo que outros usuários, também, utilizem a memória.

O problema da fragmentação também ocorre nesse modelo, quando as áreas livres são tão pequenas, que não acomodam nenhum segmento que necessite ser carregado.

Um outro problema é sua complexidade, pois o sistema deve manter tabelas de segmentos que variam de acordo com o número de segmentos.

Page 100: Gerencia de Memoria (1)

100

Gerenciamento de Memória

Proteção  Em qualquer sistema multiprogramável, deve existir um mecanismo

que proteja o espaço de memória de cada processo e, principalmente, a área do sistema operacional.

No esquema de memória virtual, cada processo tem  sua tabela de mapeamento, e a tradução dos endereços é realizada pelo sistema.

Assim, é impossível que um processo tenha acesso a áreas de memória de outros processos, a menos que haja compartilhamento explícito de páginas/segmentos.

A proteção é necessária para impedir que um processo, ao acessar uma página/segmento do sistema, a modifique ou mesmo tenha acesso a ela.   

Page 101: Gerencia de Memoria (1)

101

Gerenciamento de Memória

Swapping em Memória Virtual

Page 102: Gerencia de Memoria (1)

102

Gerenciamento de Memória

Swapping em Memória Virtual  O conceito de swapping continua válido quando aplicado à memória

virtual. Quando existem novos processos que desejam ser processados e

não existe memória real suficiente, o sistema seleciona um ou mais processos que deverão sair da memória para ceder espaço aos novos processos.

Há vários critérios que podem ser aplicados na escolha do(s) processo(s) que deve(m) sair da memória.

Os mais utilizados são a prioridade e o estado do processo. O critério de estado seleciona os processos que estão no estado de

espera, ou seja, aguardando por algum evento. O  critério de prioridade escolhe, entre os processos, os d menor

prioridade de execução.

Page 103: Gerencia de Memoria (1)

103

Gerenciamento de Memória

Thrashing

Page 104: Gerencia de Memoria (1)

104

Gerenciamento de Memória

Thrashing

  Thrashing pode ser definido como sendo a excessiva

transferência de páginas/segmentos entre a memória principal e a memória secundária.

Esse problema se aplica tanto a sistemas que implementam paginação como segmentação.

Page 105: Gerencia de Memoria (1)

105

Questões

Um usuário observou que determinado computador com 32 MB de memória RAM leva mais tempo que outros computadores para executar alguns aplicativos. Verificou também que o computador acessa o disco rígido com mais freqüência que os outros. Nessa situação, é possível que a instalação de uma quantidade maiorde memória RAM melhore o desempenho desse computador.

Na hierarquia de tecnologias de memória, que inclui registradores, memória principal, cache e discos, verifica-se que quanto maior a capacidade de armazenamento, maior o tempo de acesso.

CERTO

ERRADO

Page 106: Gerencia de Memoria (1)

106

Questões

O compartilhamento de memória, que inclui registradores, memória principal, cache e discos, em qualquer nível da hierarquia de memória, gera o problema de que um programa enderece o espaço de memória de outro programa

Memória virtual é uma funcionalidade que permite aos programas endereçar a memória de um ponto de vista lógico, sem considerar a quantidade de memória principal disponível fisicamente.

CERTO

CERTO

Page 107: Gerencia de Memoria (1)

107

Questões

Em um ambiente com memória virtual, quando um processo faz referência a um endereço virtual de dados que não estão na memória principal, então, sem suspender a execução desse processo, o sistema operacional deve entrar em ação para trazer esses dados da memória secundária para a memória principal. ERRADO