Sistemas Operacionais
Gerência de Memória
Sistemas Operacionais
Prof. Eder Pansani [email protected]
Sistemas Operacionais
A finalidade principal de um sistema computadorizado é executar programas. Esses programas precisam estar na memória principal durante a execução.
Gerência de Memória
Prof. Eder Pansani
Sistemas Operacionais
Para melhorar a utilização de CPU e a velocidade de resposta aos usuários o computador precisa manter vários processos na memória. Para isso existem muitos mecanismos de gerência de memória, esquemas, algoritmos e hardwares dedicados a atingir este objetivo.
Gerência de Memória
Prof. Eder Pansani
Sistemas Operacionais
Anteriormente vimos vários conceitos sobre processos tais como:
– Estados de um processo; – Multiprogramação;
– Escalonamento;
– Filas dos processos; – Troca de contexto
Gerência de Memória
Prof. Eder Pansani
Sistemas Operacionais
E vimos também que para um processo executar sua tarefa são necessários alguns recursos como tempo de CPU, arquivos, dispositivos de E/S e memória.
Gerência de Memória
Prof. Eder Pansani
Sistemas Operacionais
Sendo assim nesta aula estudaremos os mecanismos de alocação de memória para os processos e o sistema operacional.
Gerência de Memória
Prof. Eder Pansani
Sistemas Operacionais
O que é a memória ou memória principal?
Prof. Eder Pansani
Sistemas Operacionais
Prof. Eder Pansani
Sistemas Operacionais
A memória consiste em uma grande sequência de bytes ou words, cada uma com seu próprio endereço.
Definição
Prof. Eder Pansani
Sistemas Operacionais
A CPU apanha instruções na memória e as executa de acordo com o contador de programa.
O ciclo completo consiste em: • Buscar instrução
• Decodificar (buscar operandos)
• Executar (gravar os resultados na mem.)
Função
Prof. Eder Pansani
Sistemas Operacionais
A memória principal e os registradores embutidos no próprio processador são os únicos tipos de armazenamento acessíveis diretamente pela CPU.
Existem instruções de máquina que pegam endereços de memória como argumentos, mas nenhuma peça endereços de um disco
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Portanto qualquer instrução em execução (e dados necessários) precisam estar em um dispositivo de armazenamento com acesso direto.
Caso os dados não estejam nestes dispositivos eles precisam ser movidos para lá.
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Os registradores internos da CPU são acessíveis, em geral, em um ciclo do relógio (clock), já na memória isto não acontece, pode ser necessários vários ciclos de relógio para buscar um dado na memória.
A solução para esse problema foi adicionar uma memória de acesso rápido entre a CPU e a memória principal, essa memória é o cache.
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Além da velocidade outro ponto importante na gerência de memória é garantir a correta operação para proteger o SO dos programas de usuário e também os programas de usuário uns dos outros.
Para isso é preciso definir intervalos válidos para cada processo ser alocado na memória, a seguir veremos uma representação deste arranjo.
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
O registrador de base contém o menor endereço de memória física; e o
registrador limite contém o tamanho do
intervalo.
Exemplo: se o registrador de base contém 300040 e o registrador limite contém 120900 então o programa poderá acessar desde 300040 até 420939.
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Hardware básico
Prof. Eder Pansani
Sistemas Operacionais
Os programas residem em disco, em geral como um executável binário, mas para ser executado ele precisa ser trazido para a memória (processo).
Sendo assim os processos no disco que estão esperando para serem trazidos para a memória formam a fila de entrada.
Associação de endereços
Prof. Eder Pansani
Sistemas Operacionais
Endereço lógico: o conjunto de todos os
endereços gerados por um programa;
Endereço Físico: o conjunto dos endereços
físicos correspondentes a esses endereços lógicos.
Espaço de Endereços
Prof. Eder Pansani
Sistemas Operacionais
O mapeamento em tempo de execução dos endereços virtuais para físicos é feito por um dispositivo de hardware chamado
Unidade de gerência de memória (Memory Management Unit – MMU)
Espaço de Endereços
Prof. Eder Pansani
Sistemas Operacionais
Até agora estudamos o conceito de que um programa para ser executado ele deve estar inteiramente carregado na memória. Sendo assim podemos afirmar que o tamanho de um processo é limitado ao tamanho da memória física.
Carregamento Dinâmico
Prof. Eder Pansani
Sistemas Operacionais
Devido a este fato foi criado o mecanismo de carregamento dinâmico, que consiste em manter uma parte (principal) da rotina em memória, e quando necessário carregar as rotinas que serão usadas.
Carregamento Dinâmico
Prof. Eder Pansani
Sistemas Operacionais
Este método é muito interessante pois permite que programas maiores que a memória disponível sejam executados, e além disso, garante que rotinas que raramente são utilizadas sejam carregadas na memória desnecessariamente.
Carregamento Dinâmico
Prof. Eder Pansani
Sistemas Operacionais
Alocar memória: significa conceder (“dar”) a memória a um processo para que ele possa ser executado.
Existem vários métodos de alocação de memória, falaremos um pouco dos mais usados.
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
Um método de alocação de memória é baseado em partições sendo que estas podem ser fixas ou variáveis.
No método de partição fixa há um grande problema, caso o processo seja maior que a partição ele não poderá ser executado.
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
Já se a partição for variável, o sistema inicialmente considera a memória inteira como uma grande partição e a cada novo processo que entra essa partição maior é dividida para atender o processo.
Um problema gerado por esse método é a
fragmentação.
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
Há dois tipos de fragmentação,
– Fragmentação Externa;
Nesta o problema pode ser visto com a seguinte situação. Um processo precisa de 462 bytes e o próximo bloco que atende esse requisito possui 464 bytes. Assim o SO pegará esse bloco e criará uma nova partição de 462 bytes, deixando esses 2 bytes “inutilizados”.
Imagine agora que um processo precisa de 800 bytes, há essa quantidade de blocos disponíveis mas eles não estão juntos, logo não é possível alocar a memória.
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
– Fragmentação interna;
Visando resolver o problema da fragmentação externa foi criado um segundo método, onde “buracos” com tamanho fixo são criados com um tamanho determinado e os processos utilizam um ou mais destes para alocar sua memória.
Exemplo, o mesmo processo com 462 bytes, mas agora há vários blocos com 100 bytes cada, esse processo terá de usar 5 blocos, sendo assim será gerado um desperdício de 38 bytes (interno).
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
Para resolver esses problemas um dos métodos mais utilizados nos sistemas operacionais modernos é o de paginação. Neste esquema é possível que os endereços físicos de um processo não sejam contíguos.
Alocação de Memória
Prof. Eder Pansani
Sistemas Operacionais
Paginação
Prof. Eder Pansani