Revisão - Kusumoto

Propaganda
Sistemas Operacionais Abertos
Prof. MSc. André Yoshimi Kusumoto
[email protected]
Prof. André Y. Kusumoto – [email protected]
Gerência de Memória
Fundamentos
• A memória consiste em um grande vetor de palavras ou bytes
Mapeamento de endereços
• Geralmente, um programa reside em disco como um arquivo executável binário.
• O programa deve ser levado à memória e colocado em um processo para ser
executado.
• A medida que o processo é executado, ele acessa instruções e dados da
memória.
• Por fim, o processo termina e seu espaço de memória é declarado disponível.
2/
Prof. André Y. Kusumoto – [email protected]
Gerência de Memória
Espaço de endereçamento lógico versus físico
•
•
•
•
•
Um endereço gerado pela CPU é normalmente chamado de endereço lógico, enquanto
um endereço visto pela unidade de memória, ou seja, aquele carregado no registrador de
endereços de memória, é normalmente chamado de endereço físico.
O conjunto de todos os endereços lógicos gerados por um programa é um espaço de
endereçamento lógico
O conjunto de todos os endereços físicos que correspondem a esses endereços lógicos é
um espaço de endereçamento físico.
O mapeamento de tempo de execução dos endereços virtuais (lógicos) para físicos é
feito pela unidade de gerência da memória (MMU – Memory-Management Unit), que é
um dispositivo de hardware.
Todo endereço gerado por um processo de usuário no momento em que ele é enviado
para a memória é adicionado a um valor do registrador de relocação (proteção de
memória).
3/
Prof. André Y. Kusumoto – [email protected]
Swapping
•
•
•
•
•
Um processo precisa estar na memória para ser executado. Um processo, no entanto,
pode ser removido temporariamente da memória para um armazenamento auxiliar e, em
seguida, retornado à memória para continuar sua execução.
Normalmente, um processo que é descarregado será carregado para o mesmo espaço
de memória que ocupava anteriormente.
O sistema mantém uma fila de processos prontos consistindo em todos os processos
cujas imagens de memória estejam no armazenamento auxiliar ou na memória principal e
prontas para executar.
Sempre que o escalonador de CPU executar um processo, ele chama o dispatcher que
verifica se o próximo processo na fila está na memória. Se o processo não estiver, e não
houver região de memória livre, o dispatcher descarrega um processo que está na
memória (swap out) e carrega o processo desejado em seu lugar (swap in).
É evidente que o tempo de troca de contexto em um sistema de troca como esse é
relativamente alto. A parte principal do tempo de troca é o tempo de transferência.
4/
Prof. André Y. Kusumoto – [email protected]
Paginação
Permite que o espaço de endereçamento físico de um processo seja não-contíguo.
A paginação evita o problema de ajustar os pedaços de memória dos mais diversos
tamanhos no armazenamento auxiliar. Quando alguns fragmentos de código ou dados
que residem na memória principal precisam ser descarregados (operação de swap out),
deve haver espaço disponível no armazenamento auxiliar.
Metodologia
• A memória física é quebrada em blocos de tamanhos fixo chamados quadros (frames). A
memória lógica também é quebrada em blocos de tamanho igual chamados páginas.
Quando um processo vai ser executado, suas páginas são carregadas em qualquer
quadro de memória disponível a partir do armazenamento auxiliar.
• Cada endereço gerado pela CPU é dividido em duas partes: um número de página (p) e
um deslocamento de página (d), ou offset. O número de página é usado como índice em
uma tabela de página. A tabela de página contém o endereço base de cada página na
memória física. Esse endereço base é combinado com o deslocamento de página para
definir o endereço de memória física que é enviado para a unidade de memória.
•
•
5/
Prof. André Y. Kusumoto – [email protected]
Paginação
•
•
O tamanho de uma página é geralmente uma potência
de 2
Assim o endereço lógico será o seguinte:
número página
deslocamento na página
p
d
onde p é um índice na tabela de páginas e d é o
deslocamento dentro da página.
6/
Prof. André Y. Kusumoto – [email protected]
Paginação
Exemplo:
• Usando um tamanho de página de 4 bytes e uma
memória física de 32 bytes (8 frames)
• O endereço lógico 0 corresponde página 0, com
deslocamento
• A página 0 está no quadro 5. O endereço lógico 0 é
mapeado no endereço físico 20 (=(5x4)+0); onde 5 é o
endereço da tabela, 4 o tamanho do frame e 0 o
deslocamento
• O endereço lógico 3 (página 0, deslocamento 3) é
mapeado no endereço físico 23 (=(5x4)+3)
• O endereço lógico 4 (página 1, deslocamento 0) é
mapeado no endereço físico 24 (=(6x4)+0)
• O endereço lógico 13 é mapeado no endereço físico 9
7/
Prof. André Y. Kusumoto – [email protected]
Segmentação
Metodologia
• Oferece suporte a visão de usuário da memória.
• Um espaço de endereçamento lógico é uma coleção de segmentos. Cada segmento tem
um nome e tamanho. Os endereços especificam o nome do segmento e o deslocamento
dentro do segmento. O usuário especifica, portanto, cada endereço por duas
quantidades: um nome de segmento e um deslocamento.
• Assim, um endereço lógico consiste em uma dupla:
s
d
<número do segmento, deslocamento>
•
•
•
O número de segmento é usado como um índice para a
tabela de segmentos. O deslocamento d do endereço
lógico deve estar entre 0 e o limite de segmento.
Ele será adicionado à base do segmento para gerar o
endereço na memória física do byte desejado. Se não
estiver, é gerada uma exceção para o sistema operacional.
A tabela de segmentos é basicamente um vetor de pares
de registradores base limite.
8/
Prof. André Y. Kusumoto – [email protected]
Segmentação
Exemplo
• 5 segmentos numerados de 0 a 4
• os segmentos são armazenados na
memória física
• a tabela de segmentos possui uma
entrada para cada segmento (endereço de
início do segmento na memória física –
base e o tamanho desse segmento –
limite)
• o segmento 2 tem 400 bytes de
comprimento e começa na posição 4300
• Assim, uma referência ao byte 53 do
segmento 2 é mapeada na
posição 4300 + 53 = 4353.
• Uma referência ao segmento 3, byte 852, é mapeada para 3200 + 852 = 4052
• Uma referência ao byte 1222 do segmento 0 resultaria em uma exceção ao sistema
operacional, pois esse segmento só tem 1000 bytes de comprimento.
9/
Prof. André Y. Kusumoto – [email protected]
Paginação x Segmentação
•
•
A paginação 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 (dados,instruções)
10/
Download