Gerenciamento de Memória Virtual

Propaganda
Sistemas Operacionais
Gerenciamento de Memória Virtual
Sistemas Operacionais I
Dionisio Gava Junior
Reynaldo G. de Oliveira – [email protected]
Gerenciamento da Memória Virtual
MEMÓRIA VIRTUAL
•
•
•
•
•
•
•
•
•
•
•
Sistemas não virtuais.
Necessidades da memória virtual.
Memória virtual.
Paginação por demanda.
Interrupção por falta de página.
Carga por demanda.
Remoção de páginas.
Tabela de blocos.
Execução com memória virtual.
Paginação por demanda.
Exercícios.
FATEC - Sistemas Operacionais I
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Sistemas não Virtuais
Em todos os esquemas vistos previamente, o serviço não executaria caso não existisse
memória suficiente para a carga do programa inteiro. Esta restrição frequentemente resulta
em áreas livres e serviços esperando para ser carregado e executado.
Mais do que isso, os programadores quando pressionados a manter o espaço de
endereçamento do programa pequeno, diminuem a produtividade bem com a qualidade da
programação.
Muitos estudos realizados tem mostrado que um programa quando restrito em termos de
espaço de memória, implicará em um custo crescente de programação ao longo de sua
manutenção.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Necessidades da Memória Virtual
• O tamanho da memória de um computador não deve influir na programação, ou mesmo na
estruturação aplicativa.
• Se o programa for muito grande, em relação a memória, o sistema operacional, não o
programador, deverá alocá-lo adequadamente na memória.
• O programa deverá utilizar somente a memória necessária durante a sua execução.
• O sistema operacional não deve permitir que a memória torne-se fragmentada ou qualquer
outra situação de sub-utilização.
• O sistema deverá se adaptar
a demanda das atividades aplicativas, alocando,
desalocando ou adicionando quando necessário, de forma transparente e automática.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Espaço Simbólico
Os programas contém descrições dos dados, de instruções e descrições de E/S. Os dados
são descritos com nomes simbólicos, tais como “salário”, “campoa”, “endereço”, etc.
Algumas instruções ou grupos de instruções, da mesma forma que um campo na memória,
poderão possuir nomes simbólicos, os quais são referenciados nas operações de desvio.
O programa fonte será efetivamente uma combinação de instruções simbólicas, descrições
de dados e descrições de operações de E/S, todos estes existindo em um espaço construído
pelo programador.
Este espaço é denominado "ESPAÇO SIMBÓLICO".
Esta combinação de instruções simbólicas e nomes simbólicos e parte integrante do
processo de desenvolvimento, estão presentes em quase todas as linguagens de
programação, sendo fundamentais na implementação das aplicações.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Tradução
Na preparação de um programa fonte para execução, o programador executa a compilação
de um conjunto de símbolos que constituem o Espaço Simbólico.
O compilador converte os elementos simbólicos de uma determinada linguagem de
programação utilizada, para instruções de máquina, para dados e outros blocos de
informações.
O compilador substitui os nomes simbólicos por endereços reais. Este processo é chamado
"Tradução".
Após a tradução os endereços que compreendem o programa denominado "Espaço de
Endereçamento".
O compilador assinala endereços iniciando na localização zero de memória, atribuindo
crescentemente os endereços, as instruções e demais constantes.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Formas de Tradução de Endereços
A tradução de endereços poder ser realizada de três formas:
Somente na Compilação.
O programa compilado e o resultado da compilação criará um módulo cujos, endereços são
absolutos. Exemplo "mover 10 bytes da posição 100 para posição 200 da memória". Neste
caso não haverá tradução de "endereços na memória".
Na compilação e na execução (não virtuais).
A compilação traduz os símbolos em endereços não absolutos, os quais serão ainda
traduzidos no momento da execução, porém não exigem consulta em tabelas.
Na compilação e na execução (virtuais).
Idem ao anterior, porém o endereço não absoluto exigirá ainda
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Tradução de Endereços
O programa visto pelo sistema como um conjunto de endereços virtuais, mapeados em
páginas em uma tabela específica do programa.
No momento da execução de suas instruções, acontecerá tradução dos endereços virtuais
para reais. A tradução feita por circuitos de hardware a qual consultará a tabela de páginas
do programa para obter o bloco correspondente à página.
A tradução ocorrerá tanto na busca de uma instrução como no endereçamento de
operandos.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Tipos de Relocação
Estática
É feita no momento em que o programa carregado para a memória. A tradução feita em
uma única vez na compilação do programa. O resultado um espaço de endereçamento que
terá a origem zero, e por isso deverá ser carregado na localização zero da memória real.
Este programa denominado PROGRAMA ABSOLUTO. Não existirá relocação de endereços
do espaço de endereços no programa e a memória real.
Dinâmica
É feita no momento da execução do programa. A cada instrução ou dados referenciado,
haverá a tradução de endereços. O programa não tendo endereçamento absoluto, não
necessitará estar carregado continuamente.
Este tipo de tradução denominado RELOCAÇÃO DINÂMICA e executado por dispositivos
especiais de hardware.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Memória Virtual
Em todos os esquemas não virtuais vistos anteriormente, notou-se que um serviço não
poderia ser executado, caso não houvesse memória suficiente para carregar todo o espaço
de endereçamento.
Esta restrição resulta em áreas livres não utilizadas e serviços que ficam esperando para ser
carregados e executados.
Embora os custos de memória decrescem com o passar do tempo, a necessidade de
utilização sempre foi, e sempre será consideravelmente maior que a capacidade oferecida
pelos computadores.
A solução para estes problemas basicamente foi a utilização de MEMÓRIA VIRTUAL.
Com o uso de memória virtual, o sistema operacional produz a ilusão de existir uma
memória extremamente grande. Como isto é somente uma ilusão, pois e memória não existe
fisicamente, é denominada memória virtual.
A utilização de memória virtual possui várias implementações. Analisaremos a seguir uma
delas denominada "PAGINAÇÃO POR DEMANDA".
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Paginação por Demanda
A técnica de gerenciamento denominada Paginação por Demanda, permitirá que a soma dos
espaços de todos os programas seja maior que a memória física disponível.
Esta será permitida pelo fato de que todo o espaço do programa não necessitará estar na
memória física de uma vez, ao contrário disto, somente as partes ativas de cada programa
terá de ser carregada.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Implementação de Memória Virtual
• A memória física será dividida em blocos iguais. Em algumas arquiteturas, a área em que
estará carregado o sistema operacional não sofre a divisão em blocos.
• Será criado para cada programa no momento de a execução uma tabela de páginas que
conterá: uma entrada para cada página a ser mapeada. Cada entrada contém o número da
página ( de 0 a n), o estrado da página ( S - está presente na memória física, N - não está
presente na memória física).
• Bloco - Número do bloco, ou seja, a localização da página na memória física.
O programa possuirá um conjunto de endereços "VIRTUAIS" compreendido por páginas,
que analisaremos a seguir.
• Uma página poderá ter tamanho variado, entretanto a formatação mais comumente
encontradas nas arquiteturas utilizam paginas de 4 Kbytes de tamanho.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Interrupção por Falta de Página
Caso o hardware no momento da tradução encontrar o estado "N" na tabela de páginas,
para aquela página específica, gerado neste instante uma interrupção por falta de página.
Este tipo de interrupção faz com que o sistema operacional carregue de volta para a
memória e atualize a tabela de páginas.
Neste momento o programa espera a resolução da página demandada. Exatamente por isso
o esquema denominado "PAGINAÇÃO POR DEMANDA".
Desta forma todas as páginas necessárias serão carregadas por demanda. Isto garante que
páginas não necessárias não sejam carregadas.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Carga por Demanda
Uma cópia de todo o espaço de endereço do programa armazenada na memória auxiliar
quando o programa carregado para execução.
Durante a execução, no momento de uma tradução, a página pode não estar na memória,
isto implicar na interrupção por falta de página, que por sua vez fará com que a página
demandada seja carregada do disco para a memória.
A técnica de gerenciamento de paginação por demanda torna-se eficiente, a medida que o
programa não fica restrito ao tamanho da memória física. Em outras palavras, o programa
poderia ser maior que a memória física disponível.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Remoção de Páginas
Uma vez que a memória física esteja totalmente cheia, o sistema não poderá carregar do
disco para a memória uma página que fosse demandada.
Neste caso dever haver uma política de remoção de páginas a ser realizada.
Para liberar blocos na memória física, o sistema avaliará os blocos menos utilizados, fará a
liberação dos mesmos e atualizará as tabelas.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Tabela de Blocos
O controle da memória física será feito através da tabela de blocos. No momento da
iniciação do sistema, a tabela será criada e existirá uma entrada para cada bloco existente.
O sistema operacional de tempos em tempos atualiza a tabela com base na utilização do
bloco.(Exemplo 1 em 1 segundo).
Na utilização é verificado se o bloco foi ou não referenciado, e caso não tenha sido, será
somado "1" no contador de não referência (CNR ou UIC). Caso o controle do bloco tenha
sido alterado, o bit de alteração conterá o valor "1".
Para liberar blocos, o sistema pesquisar os blocos com maior UIC, e caso o bit de alteração
esteja em 1, fará uma cópia para o disco antes da liberação.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Execução com Memória Virtual
A memória virtual visualisa o programa através de seus endereços virtuais. Ao ser
executado, o sistema deverá traduzir os endereços virtuais do programa para os endereços
reais.
A tradução realizada normalmente por dispositivos de hardware (circuitos) que garantem
uma alta velocidade na execução desta tarefa.
O programa fisicamente estará residindo na memória real (memória física), ou na memória
auxiliar (disco).
Durante a tradução de um endereço, o sistema poderá detectar a ausência de uma parte do
programa na memória, a qual estará no disco e será rapidamente trazida de volta para a
memória, permitindo que o programa continue a execução.
Partes muito utilizadas residirão na memória, e partes pouco utilizadas residirão em disco e
somente serão trazidas para a memória quando necessárias.
Consequentemente, o programa ocupará uma menor quantidade de memória real, liberando
grande parte de memória para que outros programas possam ser executados.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Paginação por Demanda
Vantagens
• Ampla memória virtual: Os programas não se limitam ao tamanho da memória física.
• Uso eficiente de memória: As partes dos programas pouco ou raramente utilizadas, não
residirão na memória física..Aumento da multiprogramação: A memória virtual possibilita
o aumento do número de programas em execução, bem como aumento do tamanho.
Desvantagens
•.Trabalho não produtivo: O sistema operacional para exercer o gerenciamento consumir
ciclos de CPU.
Thrashing:
Caso a demanda de páginas seja muito alta, o sistema passa a gastar muito tempo para
resolver atividades de paginação, sendo que este gasto poderá coibir a utilização do
sistema pelos programas aplicativos.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Paginação por Demanda
Paginas 4K
Slots 4K
SO
Memória Real
Tabelas
Memória Auxiliar
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Paginação por Demanda
Saída de
Paginas
Retorno de
Paginas
SO
Memória Real
Funcionamento
Memória Auxiliar
Sáida de Paginas – As paginas não estão sendo necessárias, e portanto podem ser liberadas da memória real
Retorno de Pagina – O programa necessita para continuar a executar de uma pagina que não se encontra na memória.
Gerenciamento da Memória Virtual
Mapeamento da Memória Real
FATEC - Sistemas Operacionais I
Tabela de Blocos
Nº Pg
1
2
1
6
11
16
21
2
7
12
17
22
3
8
13
18
23
4
9
14
19
24
5
10
15
20
25
SO
3
4
5
6
7
8
Memória Real
9
25
Processo
UIC
Alt
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Mapeamento da Memória Real
1
6
11
16
21
1
6
11
16
21
1
6
11
16
21
2
7
12
17
22
2
7
12
17
22
2
7
12
17
22
3
8
13
18
23
3
8
13
18
23
3
8
13
18
23
4
9
14
19
24
4
9
14
19
24
4
9
14
19
24
5
10
15
20
25
5
10
15
20
25
5
10
15
20
25
SO
SO
SO
A
B
Processo B entra em execução
Processo A entra em execução
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Mapeamento da Memória Real
1
6
11
16
21
1
6
11
16
21
1
6
11
16
21
2
7
12
17
22
2
7
12
17
22
2
7
12
17
22
3
8
13
18
23
3
8
13
18
23
3
8
13
18
23
4
9
14
19
24
4
9
14
19
24
4
9
14
19
24
5
10
15
20
25
5
10
15
20
25
5
10
15
20
25
SO
C
SO
SO
D
E
Processo C entra em execução
Processo D entra em execução
Processo E entra em execução
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Mapeamento da Memória Real
1
6
11
16
21
2
7
12
17
22
3
8
13
18
23
4
9
14
19
24
5
10
15
20
25
Pontos de Reflexão:
• Sendo um sistema de memória virtual o que
deverá ocorrer à partir deste momento?
• O que ocorreria se não fosse Gerenciamento
de memória virtual?
SO
F
Processo F entra em execução
Gerenciamento da Memória Virtual
Mapeamento da Memória Real
FATEC - Sistemas Operacionais I
Tabela de Blocos
Nº Pg
Proc.
UIC
Alt
1
A
121
0
2
A
0
1
3
A
32
0
1
6
11
16
21
2
7
12
17
22
4
A
67
0
3
8
13
18
23
5
A
3
0
4
9
14
19
24
6
B
102
1
5
10
15
20
25
7
B
76
1
8
B
5
0
9
B
26
0
SO
n
71
Gerenciamento da Memória Virtual
Controle da Memória Real
FATEC - Sistemas Operacionais I
Tabela de Blocos
Nº Pg
Proc.
1
2
A
3
A
4
Liberação de Paginas
5
Menos frequentemente
Utilizadas
Maiores UIC
A
6
7
8
B
9
B
n
UIC
Alt
0
0
32
0
3
0
0
5
26
0
1
0
0
0
0
0
0
0
71
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Mapeamento da Memória Real
1
6
11
16
21
2
7
12
17
22
3
8
13
18
23
4
9
14
19
24
5
10
15
20
25
Processo F
Fragmentação?
SO
Questões:
• Como será a alocação de novos programas?
•´Teoricamente seria possível a carga de um programa maior que o espaço memória real
disponível?
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Mapeamento da Memória Real
1
6
11
16
21
1
6
11
16
21
2
7
12
17
22
2
7
12
17
22
3
8
13
18
23
3
8
13
18
23
4
9
14
19
24
4
9
14
19
24
5
10
15
20
25
5
10
15
20
25
Processo F
SO
Processo G
SO
Reflexões:
• Os programas não são carregados continuamente na memória
• Caso necessário o sistema liberará paginas inativas. (MFU ou LRU)
• Somente as partes ativas dos programas permanecerão se houver necessidade de
recurso.
• O nivel de multiprogramação tenderá a ser bem maior, uma vez que somente as partes
ativas dos programas permanecerão na memória.
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Falta de Pagina
Funcionamento:
1
6
11
16
21
2
7
12
17
22
3
8
13
18
23
4
9
14
19
24
5
10
15
20
25
SO
• O programa A em execução tenta desviar para endereços
da pagina 4.
• A pagina 4 não se encontra disponível na memória real.
Havia sido liberada por não estar ativa, e por ter existido
necessidade de mais memória para outros processos.
• No momento em que o desvio ocorre, existirá a tentativa
de tradução de endereço, porém sem sucesso, pois não
existe o corresponde real para a pagina 4. A mesma está
somente em disco.
• Neste momento ocorre uma interrupção de FALTA DE
PAGINA.
• Como toda interrupção, a Falta de Pagina terá o processo
normal de tratamento. (CPU é interrompida, salvamento do
estado, etc..)
• O sistema estará tratando a Falta de Pagina, identificando
na Tabela de Programa a localização no disco, retornando
em seguida.
• O retorno será em uma localidade de memória livre, não
sendo necessário em local específico.
Disco
Gerenciamento da Memória Virtual
FATEC - Sistemas Operacionais I
Espaço de endereçamento do processo
Programa A
Aspectos:
Virtual
Bloco
Disco
1
-
31
2
2
6
3
3
4
25
5
5
85
• Os endereços virtuais são contínuos
• Os endereços na memória real, ou no
disco, não necessitam estar contínuos
• Haverá sempre a tradução dos
endereços, resolvendo o
endereçamento do programa.
Download