Memória 1

Transcrição

Memória 1
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Gestão de Memória
Uma parte muito importante dos Sistemas Operativos é aquela que se dedica a
reservar blocos de memória para satisfazer os pedidos dos processos, dentro da
memória fı́sica limitada.
A utilização de recursos, bem como o desempenho do S.O. depende em grande
parte do gestor de memória, não só pela reserva efectiva de memória mas também
pela sua influência e interacção com o escalonador.
A coexistência de vários processos em memória introduz dois requisitos
conflituosos: protecção e partilha.
&
&
%
%
1
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Medidas de Desempenho do G.M.
• Memória desperdiçada
Fracção da memória da memória fı́sica que não é utilizada devido a um
determinado esquema de gestão de memória. Esse desperdı́cio pode ser
devido a: Fragmentação interna, fragmentação externa, Tabelas de gestão
• Complexidade Temporal (time complexity)
Complexidade temporal que leva a atraso na satisfação dos pedidos de
reserva/devolução
• Sobrecarga nos acessos à memória
Medida relativa entre a duração dos acessos à memória com e sem a gestão
de memória activa.
&
&
2
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Uma definição muito lata de memória desperdiçada pode incluir a quantidade de
memória gasta por haver multiplas cópias de um objecto devido a partilha deficiente
ou restrita de memória.
Ex: 20 utilizadores a utilizar um editor de texto. Se o editor ocupar 500Kb de
memória para código e 100k para dados, temos 10Mega sem partilha de código
versus 2500Kb com partilha.
Os requisitos de minimizar a memória desperdiçada, a complexidade temporal e a
sobrecarga nos acessos não são concretizaveis em simultâneo. Por isso é
necessário definir prioridades durante o projecto de acordo com os objectivos do
S.O..
Por outro lado o desenho de um S.O. requer a compreensão dos detalhes do
hardware a que se destina de forma a escolher os mecanismos de gestão de
memória adequados, ou a escolha do hardware adequado aos mecanismos
pretendidos.
&
&
3
%
%
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Monitor - Processo único
Sistema Operativo
Ar
ea
p
tra ara
p
ns
itó roce
rio
ss
os
s
(monitor)
CP/M ou MS-dos
&
&
4
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Reserva Contı́gua - Partições Estáticas
Uma das formas de suportar a multiprogramação é dividir a memória fı́sica em
partições, atribuido cada uma a um processo. Dependendo de quando e como as
partições são criadas, o particionamento da memória pode ser estático ou
dinâmico.
O Particionamento estático implica que a divisão da memória seja feito antes da
execução dos programas.
O número de partições e o seu tamanho é definido normalmente na geração do
sistema. Isto é feito tomando em conta o tamanho da memória fı́sica, o grau de
multiprogramação desejado e o tamanho tı́pico dos programas executados.
&
&
%
%
5
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
0
Base
Sistema Operativo
100K
Tamanho
Estado
PARTIÇAO Nº
0
0K
100K
RESERVADA
1
100K
300K
LIVRE
P1
2
400K
100K
RESERVADA
P2
3
500K
250K
RESERVADA
4
750K
150K
RESERVADA
5
900K
100K
LIVRE
400K
500K
750K
P3
900K
1000K
PDT
&
&
6
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
A estratégia de reserva de memória em sistemas com partições fixas pode ser:
• First Fit
• Best Fit
Os pedidos para reservar partições podem surgir de:
• criação de novos processos
• reactivação de processos swapped-out
Estes pedidos podem não ser satisfeitos por:
1. não haver partições suficientemente grandes para albergar o processo
2. todas as partições estarem ocupadas
&
&
7
'
'
%
%
Powered by FreeBSD & LATEX2e
$
$
Sistemas de Operação
P. M. - DEE - UC
No caso de todas as partições estarem ocupadas pode-se definir que:
1. a carga do processo é adiada
2. é forçada a libertação de uma partição (swapped-out)
Note-se que a primeira opção pode violar a ordem de activação definida pelo
escalonador.
Ambas as opções podem também ser aplicadas ao caso em de o processo não
caber nas partições disponı́veis e aquela(s) que têm tamanho suficiente para o
albergar estão ocupadas.
&
&
8
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Swapping
O swapper é um processo do sistema cujas responsabilidades incluem:
• selecção de processos a passar de memória principal para memória
secundária (swap-out)
• selecção de processos a passar de memória secundária para memória
principal (swap-in)
• reserva e gestão de espaço de swap
O swapper executa grande parte das funções de um “medium term scheduler”.
Embora o mecanismos de “swapping”, que se seguem após a escolha de um
processo “vı́tima”, sejam simples, a sua implementação requer suporte do S.O. ao
nı́vel do Sistema de Ficheiros e da Recolocação de processos em memória
&
&
%
%
9
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Existindo um conjunto de partições suficientemente grandes para albergar
determinado processo e estando estas ocupadas,o swapper deverá escolher uma
“vı́tima”. Os potenciais candidatos são:
• processos de baixa prioridade
• processos que aguardam eventos lentos
Nota: O swapper deverá ser evitar a ocorrência de “thrashing”.
&
&
10
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Dado que um processo, durante a execução, modifica os seus dados (e em alguns
casos o código) e por isso tem uma imagem diferente da inicial. Por isso o swapper
tem de guardar todo o espaço do processo num ficheiro diferente da imagem inicial
(swap file). Em relação aos ficheiros de swap podemos ter:
1. um para todo o sistema
• Acesso rápido a um único ficheiro
• O tamanho prédefinido limita o número de processos
• O espaço fica permanentemente ocupado mesmo que não seja necessário
2. um por processo
• não tem as desvantagens do caso anterior, mas...
• necessita de mais espaço em disco
• acesso mais lento
• endereçamento mais complexo
&
&
%
%
11
'
'
Powered by FreeBSD & LATEX2e
$
$
Sistemas de Operação
P. M. - DEE - UC
Exemplo: swapout de um processo com 256K num disco com um tempo de
acesso de 10ms e taxa de transferência de 5Mb/s, demora
= 10ms + 50ms = 60ms
(1)
O carregamento de um processo de igual tamanho demora outro tanto, sendo o
resultado 120ms “de idling”.
Não aceitável para processos crı́ticos
Solução: Processos “non-swappable”, o que também pode levar a abusos.
&
&
12
%
%
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Recolocação
Recolocação Estática: Loader atribui os endereços definitivos.
Recolocação Dinâmica:
MEM
Base Register
10000
10000
11000
CPU
1000
+
11000
A proteção também se pode conseguir de forma simples adicionando um simples teste.
&
&
%
%
13
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
MEM
Base Register
10000
10000
11000
CPU
1000
<= LIMITE?
SIM
+
11000
NAO
Violaçao de Protecçao
Neste caso a recolocação é completamente invisı́vel para o programador, havendo clara
distinção entre endereços virtuais e fı́sicos.
&
&
14
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Protecção
A integridade de um sistema multiprogramado depende em muito da capacidade
que este apresenta em isolar espaços de endereçamento diferentes.
A protecção não serve apenas para prevenir o acesso dos processos dos
utilizadores ao sistema operativo, mas também os acessos erróneos ou maliciosos
entre processos dos utilizadores.
Não existindo protecção de memória podemos encontrar
• corrupção de zonas de memória de outros programas
• “crashes” frequentes ou efeitos laterais, sendo difı́cil a detecção da origem
destes.
Os sistemas operativos multi-utilizador só deverão ser implementados em
máquinas cujo hardware suporte a protecção de memória.
&
&
%
%
15
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Que tipos de protecção?
• Registos de Base e Limite?
• Direitos de acesso guardados na própria memória?
– bit per word - insuficiente
– more bits per word - dispendioso
Alternativas?
Ex. O IBM 360 usa 4 bits (keys) para cada 2K de memória. O S.O. tem chave 0, que
lhe permite o acesso a toda a memória. Para os restantes processos, quando estes
são carregados para memória principal, é colocado o ID do processo nesses bits.
Desvantagem: 16 processos no máximo, partições obrigatóriamente multiplas de
2k.
&
&
16
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Partilha
(Quase) Tão importante como a protecção de memória é a partilha da mesma, que
permite que processos usem zonas comuns de dados e/ou código.
É na capacidade de partilha de memória que surgem, normalmente, as primeiras
grantes diferenças entre os sistemas operativos.
3 abordagens básicas
1. confiar os objectos partilhados ao sistema operativo
2. manter várias cópias dos objectos partilhados - uma por partição
3. usar partições de memória partilhadas.
&
&
17
'
'
%
%
Powered by FreeBSD & LATEX2e
$
$
Sistemas de Operação
P. M. - DEE - UC
Notas finais
As partições estáticas...
• são uma forma simples de suportar multiprogramação
• podem ser implementado com hardware simples
• adequadas a ambientes estáticos de carga previsı́vel e caracterı́sticas
conhecidas.
• Ex. Aplicação: Controlo de processos
• Ex. Não Aplicação: Alumni
&
&
18
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Partições Dinâmicas
Utilizam como base os conceitos definidos para as partições estáticas mas...
• O número e o tamanho das partições não é definido a priori, depende das
necessidades de cada conjunto de processos activos.
• Os processos podem requer sempre mais memória (até esgotar a memória
disponı́vel, ou atingir o numero de entradas na PDT, etc.)
Aparentemente, os problemas relacionados com a fragmentação interna ou outros
introduzidos pela utilização de partições estáticas deveriam estar resolvidos.
&
&
%
%
19
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Funcionamento
• No carregamento de um processo, o SO procura uma zona de memória
suficientemente grande para o albergar, criando uma partição.
• Quando um processo termina ou é passado para memória secundária (swap
out), a partição correspondente é libertada. A memória por esta ocupada passa
a pertencer ao conjunto dos blocos livres.
• O SO gere tanto as partições (memória ocupada) como a memória livre.
• Uma partição é definida pela base e tamanho
• É importante saber qual (quais) as partições pertencentes a cada processo
• A natureza dinâmica dos zonas livres sugere a utilização de qq tipo de lista
ligada. É comum construir estas listas ligadas na própria memória livre,
poupando memória.
&
&
20
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Tabela de Descrição de Partições (PDT)
Inicio
0
100K
Sistema Operativo
900K
300K
400K
P. Num.
Base
Tamanho
Estado
0
0K
100K
Reservada
1
-
-
-
2
400K
100K
Reservada
500K
750K
900K
100K
1000K
3
500K
250K
Reservada
4
750K
150K
Reservada
5
-
-
-
6
-
-
-
7
-
-
-
&
&
Lista de Blocos Livres
%
%
21
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Reserva de uma Partição
Inicio
0
100K
Sistema Operativo
900K
180K
400K
P. Num.
Base
Tamanho
Estado
0
0K
100K
Reservada
1
100K
120K
Reservada
2
400K
100K
Reservada
500K
750K
900K
1000K
3
500K
250K
Reservada
4
750K
150K
Reservada
5
-
-
-
6
-
-
-
7
-
-
-
&
&
22
100K
Lista de Blocos Livres
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Criação de uma partição de tamanho P SIZE
1. Procura na lista de blocos livres F, uma entrada com F
SIZE ≥ P SIZE ,
se não encontrar termina com indicação do erro.
= F SIZE − P SIZE . Se Dif ≥ c, então reserva toda a
partição, fazendo P SIZE = F SIZE e P BASE = F BASE .
2. Calcula Dif
Se Dif
> c faz-se
P BASE
=
F BASE
F BASE
=
P BASE + P SIZE
f SIZE
=
F SIZE − P SIZE
3. Procura uma entrada livre na PDT
4. Guarda o numero da entrada na PDT no PCB
&
&
%
%
23
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Algoritmos de selecção de zonas livres para reserva de partições
• First Fit
• Next Fit
• Best Fit
• Worst Fit
Em média o método “First Fit” pesquisa metade da lista, ao passo que “Best Fit”
pesquisa a lista toda.
“Next Fit” procura distribuir as pesquisas (...) por toda a lista
“Worst Fit” tenta reduzir a fragmentação :-(
&
&
24
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Devolução de partições
Quando um processo P, termina ou é passado para memória secundária...
• Usando o PCB de P, localiza-se a entrada na PDT (P DT [P CB[P ]] )
• Se “Swapping”, copia a imagem do processo para swapfile
• P CB[P ] → P artition = N U LL
• Junta a partição à lista de blocos livres, e funde-a com partições existentes se
possı́vel.
• Invalida entrada na PDT
Quando se utiliza “First Fit” ou “Best Fit” mantém-se a lista ordenada por endereços
de forma a facilitar a recombinação.
&
&
%
%
25
'
'
Powered by FreeBSD & LATEX2e
$
$
Sistemas de Operação
P. M. - DEE - UC
Buddy System
• Blocos de tamanho igual a potências de 2.
• Os pedidos de áreas são arredondados para o valor 2n imediatamente acima.
• Reserva de bloco 2k . Há um bloco disponı́vel desse tamanho?
Sim: Reserva.
Não: Bloco 2k+1 dividido em 2 (buddies).
Propriedade importante: O endereço base de dois buddies varia no bit
correspondente ao tamanho destes.
Ex: 1 Mb de memória
Pedido de 192K é arredondado para 256K
1M → 2 × 512K → 512K + 2 × 256K
Endereços : 00000H — 80000H (buddies 512K), 80000H — A00000H (256K)
&
&
26
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Compactação
Objectivo: Reduzir a fragmentação externa, devido a tempos de vida diferentes dos
varios objectos.
S.O
S.O
S.O
Pi
Pi
Pi
Pj
Pj
Pk
Pj
Pk
Pk
Movimentaçao
Selectiva
&
&
Movimentaçao
Global
%
%
27
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Protecção e Partilha
A protecção e partilha de memória com partições dinâmicas é semelhante ao que
se passa com partições fixas, permitindo no entanto criar partições sobrepostas.
A partilha de código é mais restrictiva que a partilha de dados devido à
necessidade de criar código independente da posição em que está colocado (PIC):
• Código reentrante
• Variaveis na pilha ou registos
• Não poderem existir referências absolutas
&
&
28
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Rotina Partilhada (PIC)
4000
0
100
Call sub
5500
0
1500
5500
50
Sub
jmp $+50
50+50
4000
1550
Sub
jmp $+50
1550+50
5600
5500
5600
&
&
1550
Call sub
0
5500
%
%
29
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Segmentação
Vefifica-se que a fragmentação externa é menor em sistemas onde o tamanho dos
blocos pedidos são em média menores.
Dado que o sistema operativo nada pode fazer para reduzir o tamanho dos
processos, uma alternativa para reduzir o tamanho médio dos blocos pedidos, é
dividindo o espeço de endereçamento em blocos que podem ser colocados em
áreas não-contı́guas.
A divisão do espaço de endereçamento dos processos em segmentos fornece um
método de relocalização dinâmica e simultaneamente formas de protecção e
partilha.
Os segmentos são definidos durante a criação dos programas, agrupando items
relacionados: código, dados, pilha, etc.
&
&
30
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Funcionamento
Cada segmento é definido (durante a compilação) de forma a começar no endereço
virtual 0.
Os items são identificados pelo seu deslocamento em relação ao inı́cio do
segmento.
Os endereços em sistemas segmentados são compostos por duas partes
• Nome do segmento (número)
• Deslocamento (offset) dentro do segmento
&
&
%
%
31
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Tradução de Endereços
CPU
Violação de Protecção
Não
Endereço Virtual
Segmento
Offset
<= Tamanho
Sim
+
Endereço Fisico
SDT
BASE
TAMANHO
0
1
2
3
&
&
32
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Mecanismos para acelerar o acesso a memória
Dado que o desempenho dos sistemas segmentados pode ser gravemente
comprometido pelo processo de tradução de endereços, muitos fabricantes
introduziram hardware especı́fico para acelerar o processo da tradução de
endereços.
A utilização de registos para manter os descritores seria uma optima alternativa.
Mas,o tamanho das SDTs e a troca de processos proibe o carregamento destas em
registos.
Comprimisso: Utilizar registos para os descritores de segmentos mais utilizados
(Segment Descriptor Caching).
&
&
%
%
33
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Suporte necessário
Se analizarmos os tipos de referência a memória que são feitas durante a execução
de um processo verificamos que são feitas devido a
• fetch de instruções
• dados
• pilha
Assim, com a ajuda de hardware que permita detectar o tipo de acesso à memória
podemos manter em registos os descritores dos segmentos de código, dados e
pilha.
&
&
34
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Protecção
A escolha de um método para implementar a protecção em sistemas segmentados
caı́ naturalmente na utilização do par base, limite.
É possı́vel proteger zonas do próprio processo: read-only, read-write, write-only.
Os bits de protecção são normalmente incluidos no descritores dos segmentos,
podendo ser verificados em cada acesso.
Partilha
A partilha é trivial, bastando para isso criar vários descritores, um por processo,
para o mesmo segmento.
&
&
35
%
%
Powered by FreeBSD & LATEX2e
$
$
'
'
Sistemas de Operação
P. M. - DEE - UC
Vantagens
• Elimina fragmentação interna
• Suporta o crescimento dinâmico dos segmentos
• Protecção e Partilha simples
• Desenvolvimento de programas modulares
• Dynamic linking & loading
&
&
36
%
%
Powered by FreeBSD & LATEX2e
'
'
$
$
Sistemas de Operação
P. M. - DEE - UC
Desvantagens
• Requer compactação devido ao tamanho variavel dos segmentos
• Conversão de endereços em 2 passos
• Um segmento não pode ser maior que a memória disponı́vel
&
&
37
%
%
Powered by FreeBSD & LATEX2e

Documentos relacionados