Escolar Documentos
Profissional Documentos
Cultura Documentos
• O programa deve ser trazido (do disco) para a memória e colocado dentro de um
processo para que ele seja executado.
• Algumas questões.
• Em que lugar da memória devem ser alocados?
• Quem é responsável por essa alocação?
• E se o programa faz referência a endereços de memória?
• Em S.Os. com suporte a multiprogramação, vários programas podem ser chamados
para execução pelo usuário.
• Os programas são trazidos para memória principal para executar, formando uma fila de
entrada.
• Algumas questões.
• Em que lugar da memória devem ser alocados?
• Qualquer lugar
• Quem é responsável por essa alocação?
• O Loader
• E se o programa faz referência a endereços de memória?
• Endereços físicos ou endereços virtuais.
• Quando um programa faz referência a endereços de memória, podemos trabalhar com
endereços físicos.
• Vantagem:
• Desempenho
• Desvantagens:
• Demanda que o desenvolvedor saiba previamento onde o processo será alocado.
• Menos flexível.
• Em tempo de carga (load): Compilador gera código relocável. Código relocável é aquele
cujas referências a memória só é realizada no momento que o Loader carrrega o
programa para a memória principal. Qual o Problema?
• Em tempo de compilação: se a localização da memória onde o processo será alocado é
conhecida a priori, o compilador pode gerar código absoluto. Código absoluto é o código
onde toda referência de memória é feita a endereços físicos reais. Qual o Problema?
• Em tempo de carga (load): Compilador gera código relocável. Código relocável é aquele
cujas referências a memória só é realizada no momento que o Loader carrrega o
programa para a memória principal. Qual o Problema?
• Deve ser recarregado sempre que a localização mudar.
• Em tempo de compilação: se a localização da memória onde o processo será alocado é
conhecida a priori, o compilador pode gerar código absoluto. Código absoluto é o código
onde toda referência de memória é feita a endereços físicos reais. Qual o Problema?
• Em tempo de carga (load): Compilador gera código relocável. Código relocável é aquele
cujas referências a memória só é realizada no momento que o Loader carrrega o
programa para a memória principal. Qual o Problema?
• Deve ser recarregado sempre que a localização mudar.
• Em tempo de carga (load): Compilador gera código relocável. Código relocável é aquele
cujas referências a memória só é realizada no momento que o Loader carrrega o
programa para a memória principal. Qual o Problema?
• Deve ser recarregado sempre que a localização mudar.
• O programa do usuário lida com endereços lógicos, ele nunca vê o endereço físico real.
• Apesar dos sistemas modernos disporem de uma grande quantidade de memória
principal, a memória é um recurso escasso que deve ser bem administrado.
• Processos podem crescer demasiadamente.
• No decorrer da evolução dos S.Os, várias técnicas foram adotadas com intuito aumentar
a multiprogramação e reduzir o uso de memória
• Apesar dos sistemas modernos disporem de uma grande quantidade de memória
principal, a memória é um recurso escasso que deve ser bem administrado.
• Processos podem crescer demasiadamente.
• No decorrer da evolução dos S.Os, várias técnicas foram adotadas com intuito aumentar
a multiprogramação e reduzir o uso de memória
• Algumas técnicas:
• Carga dinâmica
• Link dinâmico
• Swapping
• Alocação contígua
• Segmentação
• Com o intuito de diminuir o espaço ocupado por um processo, podemos trabalhar com
carregamento dinâmico.
• Rotina só é carregada no momento em que é necessária.
• O disco deve ser rápido e grande o suficiente para acomodar cópias de todas as imagens de
memória para todos os usuários.
• O disco deve fornecer acesso direto a essas imagens de memória
• O sistema mantém uma fila pronta de processos prontos para execução que possuem
imagens de memória no disco
• Problemas?
• Problemas?
1. Tempo elevado para realização do swap, bem como seu impacto na troca de contexto.
2. Processos que realizam operação de E/S.
I. Vamos lembrar do DMA.
II. Toda vez que acontece uma operação envolvendo dispositivos de I/O e armazenamento, DMA
gerencia essa transferência. Mas se:
a. P1 solicitar a leitura de bytes do áudio do microfone.
b. P1 sofrer swap out e P2 sofrer swap in e passar a ocupar a região de P1.
c. Bytes de áudio solicitados por P1 serão escritos em P2.
• Tipicamente não suportado, pois:
• Android finaliza apps se possui pouca memória livre, mas antes escreve o estado da aplicação
para a flash.
• Memória principal deve suportar tanto o sistema operacional como as aplicações do
usuário.
• Qual o melhor?
• Esses algoritmos podem gerar:
• Para o algoritmo First fit análises revelam que dado N blocos alocados, 1/2 N blocos são
perdidos por conta de fragmentação.
• Uma tentativa de reduzir a fragmentação é através da compactação.
• Organize a memória de forma que todo espaço livre fique em um único bloco.
• Só é possível se relocação é dinâmica e feita em tempo de execução.
• Esquema de gerenciamento de memória que admite visão da memória pelo usuário
• Um programa é uma coleção de segmentos. Um segmento é uma unidade lógica como:
• programa principal,
• procedimento,
• função,
• método,
• objeto,
• variáveis locais, variáveis globais,
• bloco comum,
• pilha,
• tabela de símbolos, arrays
• Endereço lógico consiste em uma tupla de dois:
• <número-segmento, deslocamento>,
• Tabela de segmento – mapeia endereços físicos bidimensionais; cada entrada de tabela
tem:
• base – contém o endereço físico inicial onde os segmentos residem na memória
• limite – especifica o tamanho do segmento
• Proteção
• A cada entrada na tabela de segmento, associe:
• bit de validação = 0 → segmento ilegal
• privilégios read/write/execute
• Como funciona:
• Divide a memória física em partes de tamanho fixo chamadas de blocos (frames) (tamanho é
potência de 2, entre 512 bytes e 8.192 bytes).
• Divide memória lógica em partes do mesmo tamanho chamadas de páginas.
• Mantém controle de todos os blocos livres
• Para executar um programa com n páginas, necessita encontrar n blocos livres e carregar o
programa
• Endereço gerado pela CPU é divido em:
• Número da Página (p) – usada como um índice em uma tabela de páginas que contém o
endereço base de cada página na memória física
• Deslocamento na Página (d) – combinado com o endereço base para definir o endereço
de memória que é enviado a unidade de memória
Número da Página Deslocamento
p d
m-n n
• Para um determina espaço de endereçamento lógico 2m e um tamanho de página 2n
• Tabela de Páginas é mantida na memória principal.
• Registrador base da tabela de páginas (Page-table base register - PTBR) aponta para a
tabela de páginas
• Registrador tamanho da tabela de páginas (Page-table length register - PRLR) indica
quantos endereços ela ocupa
• Neste esquema cada acesso a dado/instrução requer dois acessos a memória. Um para
a tabela de páginas e outro para o dado/instrução
• O problema pode ser resolvido com o uso de uma memória cache especial, pequena, de
acesso rápido, chamada de memória associativa ou translation look-aside buffers (TLBs)
• Algumas TLBs armazenam identificadores de espaços de endereço (address-space
identifiers - ASIDs) em cada entrada da TLB – identificam cada processo de forma única
para prover proteção no espaço de endereçamento daquele processo
• Capítulo 8.
Universidade Federal de Sergipe
Campus Professor Alberto Carvalho
Departamento de Sistemas de Informação
p d
m-n n
• Na paginação sob demanda, páginas são
trazidas para memória somente quando
necessárias.
• Menor uso de I/O e memória
• Respostas mais ágeis, mais usuários.
•
Referências aos endereços: 7,0,1,2,0,3,0,4,2,3,0,3,0,3,2,1,2,0,1,7,0,1
3 frames (3 páginas pode estar em memória por vez e por processo)
• Quantas faltas? 15
•
Substitui páginas que não serão usadas por um longo período de tempo.
Como prever o futuro?
Quantas faltas?
Substitui páginas que não serão usadas por um longo período de tempo.
Como prever o futuro?
Quantas faltas? 9
Usa conhecimento passado.
Substitui página a mais tempo sem uso.
Quantas faltas?
Usa conhecimento passado.
Substitui página a mais tempo sem uso.
Quantas faltas? 12
• Com o intuito de diminuir o espaço para armazenamento de tabelas de página, bem
como permitir o uso de programas muito grandes, podemos utilizar duas técnicas:
• Tabela de Páginas Multinível
• Tabela de Página Invertida
• Um endereço lógico (em máquinas de 32 bits com tamanho de página de 1K) é dividido
em:
• um número de página contendo 22 bits
• um deslocamento de página contendo 10 bits
• Como a tabela de página é paginada, o número de página é dividido ainda em:
• um número de página de 12 bits
• um deslocamento de página de 10 bits
• Assim, um endereço lógico é o seguinte:
núm. página desloc. página
pi p2 d
12 10 10