View
37
Download
2
Category
Preview:
Citation preview
1
Gerenciamento de Memória
Fernando Morse
morse@oi.com.br
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.
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.
4
Gerenciamento de Memória
Alocação de Memória
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.
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
7
Gerenciamento de Memória
Alocação Contígua Simples
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.
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.
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.
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.
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.
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
14
Gerenciamento de Memória
Alocação Contígua Overlay
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.
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.
17
Gerenciamento de Memória
Alocação Contígua Overlay
O tamanho da área de overlay será estabelecido pela módulo de maior tamanho.
18
Gerenciamento de Memória
Alocação Particionada
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.
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.
21
Gerenciamento de Memória
Alocação Particionada Estática Absoluta
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.
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.
24
Gerenciamento de Memória
Alocação Particionada Estática Absoluta
25
Gerenciamento de Memória
Alocação Particionada Estática Relocável
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.
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.
28
Gerenciamento de Memória
Alocação Particionada Estática Relocável
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
30
Gerenciamento de Memória
Alocação Particionada Dinâmica
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.
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)
33
Gerenciamento de Memória
FragmentaçãoFragmentação
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
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.
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.
37
Gerenciamento de Memória
Lista de áreas livres
Lista de áreas livres – controla as partições e sua disponibilidade.
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.
39
Gerenciamento de Memória
Best-fit
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
41
Gerenciamento de Memória
Worst-fit
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.
43
Gerenciamento de Memória
First-fit
44
Gerenciamento de Memória
Swapping
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.
46
Gerenciamento de Memória
Swapping
SWAP OUT SWAP IN
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 .
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.
49
Gerenciamento de Memória
Localidade de Referência
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.
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.
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
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
54
Gerenciamento de Memória
Relocação Dinâmica
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.
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.
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.
58
Gerenciamento de Memória
Relocação Dinâmica
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.
60
Gerenciamento de Memória
Relocação
61
Gerenciamento de Memória
Memória Virtual
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.
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.
64
Gerenciamento de Memória
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.
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.
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.
68
Gerenciamento de Memória
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.
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.
71
Gerenciamento de Memória
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
73
Gerenciamento de Memória
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.
75
Gerenciamento de Memória
Paginação
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.
77
Gerenciamento de Memória
Paginação
End.Físico = End.ETP + Deslocamento
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).
79
Gerenciamento de Memória
Page Fault
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
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.
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.
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.
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.
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).
86
Gerenciamento de Memória
Realocação de Páginas
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)
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.
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.
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.
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.
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.
93
Gerenciamento de Memória
Segmentação
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.
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.
96
Gerenciamento de Memória
Segmentação
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.
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.
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.
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.
101
Gerenciamento de Memória
Swapping em Memória Virtual
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.
103
Gerenciamento de Memória
Thrashing
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.
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
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
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
Recommended