Please enable JavaScript.
Coggle requires JavaScript to display documents.
Memória Principal/1 - Coggle Diagram
Memória Principal/1
Antecedentes
Ciclo de execução típico
CPU lê uma instrução da
memória
Instrução é decodificada
Possíveis operandos são buscados na memória
Instrução é executada
Possíveis resultados são armazenados de
volta na memória
Próxima instrução
Hardware Básico
Proteção de Memória
Par de registradores de base
e limite
definem o espaço de
endereços lógicos do processo
Hardware compara cada endereço gerado no
modo usuário com os registradores
Qualquer tentativa de acesso fora de
sua região, gerará erro
Os registradores de base/limite são
alterados apenas em modo kernel
Vinculação de Endereços
Programa deve ser trazido para a
memória e inserido em um processo
Processo pode ser movimentado entre o disco e a memória durante sua execução
Processos de usuário
residam em qualquer parte da memória física
primeiro endereço não precisa ser 00000
Um programa de
usuário percorre vários passos
Endereços podem ser representados de
diferentes maneiras
Endereços do programa-fonte são, em
geral, simbólicos
Um compilador vincula esses
endereços simbólicos a endereços relocáveis
o linkage editor ou carregador
vincula os endereços relocáveis a endereços absolutos
Cada vinculação é
um mapeamento de um espaço de
endereçamento para outro
Associação de endereços de instruções e dados a endereços de memória
Tempo de compilação
Se o local da memória for conhecido
o código absoluto pode ser gerado
Tempo de carga
Deve gerar código relocável se o local da memória não for conhecido
Tempo de execução
Associação adiada até a execução
Se o processo puder ser movido durante sua execução de um segmento da memória para outro
Espaço de Endereçamento Lógico
VS. Espaço de Endereçamento Físico
Endereço lógico
gerado pela CPU
Iguais em associação de endereço em tempo de compilação e de carga
Diferem em associação de endereço em tempo de execução
Endereço físico
endereço visto pela unidade de memória
Unidade de gerenciamento de memória
Mapeia endereço virtual para físico
valor no registrador de relocação
somado a cada endereço gerado
por um processo
no momento em
que é enviado à memória
O programa do usuário lida com endereços
lógicos
ele nunca vê os endereços físicos reais
Carga Dinâmica
Não necessário que todo o programa esteja carregado na memória física para ser executado
Melhor utilização de espaço da memória
rotina não usada nunca é carregada
Útil quando grandes quantidades de código
são necessárias para lidar com
casos que ocorrem com pouca frequência
Vinculação Dinâmica e
Bibliotecas Compartilhadas
bibliotecas compartilhadas
facilmente implementadas
Swapping
Permuta entre processos
Um processo precisar estar na memória para
ser executado
pode ser trocado
temporariamente entre a memória e um
armazenamento de apoio
Permuta-Padrão
transferência de processos entre a memória
principal e memória de retaguarda
fila de prontos
escalonador da CPU decide executar um processo
Escalonador chama o despachante
despachante verifica se o próximo processo na fila está em memória
Caso não esteja
despachante remove um processo correntemente em memória
insere esse outro processo na memória
recarrega os registradores e transfere o controle ao processo selecionado
tempo de transferência total é diretamente
proporcional à quantidade de memória trocada
Permuta em Sistemas Móveis
Sistemas móveis geralmente não suportam permuta de processos
Alocação de Memória Contígua
Memória principal normalmente em duas partições
Processos do usuário
mantidos então na memória alta
Sistema operacional
mantido na memória baixa com vetor de interrupção
Problema da alocação de armazenamento dinâmico
satisfazer uma requisição de tamanho
First-fit
Best-fit
Worst-fit
melhores em termos de velocidade e utilização de armazenamento
Fragmentação
Fragmentação externa
existe espaço de memória total para satisfazer
uma solicitação
mas não é contíguo
Fragmentação interna
memória alocada pode ser ligeiramente maior que a memória requisitada