Casa dos Resumos
Gerenciamento de memória
A memória como um recurso importante deve ser gerenciado com cuidado, sendo o gerenciador de memória a parte do sistema operacional que gerencia a sua hierarquia. Seu trabalho é controlar que partes da memória que estão em uso e que partes não estão, alocar memória para os processos quando eles necessitam e desalocarem quando eles terminarem, gerenciar a troca entre a memoria principal e o disco quando a memória principal é muito pequena para armazenar todos os processos; Esses são alguns papeis do gerenciador de memória.
Unidade de Gerenciamento de Memória (Memory Management Unit - MMU)
É um modulo de hardware que faz o mapeamento entre os endereços lógicos(end. da memória virtual) e os endereços físicos da memória (RAM), ou seja, é um dispositivo que transforma endereços virtuais em endereços físicos. A MMU normalmente traduz número de páginas virtuais para número de página físicas utilizando a cache chamada TLB-Translation LooKaside Buffer.
Definição TLB: Clique aqui!
GERENCIAMENTO BÁSICO DE MEMÓRIA
São divididos em duas classes:
- Monoprogramação sem Troca ou Paginação: esquema mais simples de gerenciamento, executando apenas um programa por vez, compartilhando a memoria entre o programa e o sistema operacional. Apenas um programa é carregado por vez.
- Multiprogramação com partições fixas: aumentando a utilização da CPU, a multiprogramação permite que enquanto um processo é bloqueado esperando a E/S acabar, outro pode utilizar a CPU, melhorando a utilização da CPU e assim evitando disperdiçios de ciclos de processamento. Na multiprogramação a memória é dividida em N partes, normalmente quando o sistema é iniciado, Os jobs são colocados em filas de entrada associadas à menor partição capaz de armazena-lo, por usar partições de tamanho fixo, todos o restante de espaço de memória não utilizado pelo Job será perdido, tal desperdício é chamado de Fragmentação Interna. Outro tipo de fragmentação existente é a Fragmenteção Externa que acontece na seguinte ocasião: imagine que exista duas partições livres, uma de 50 e outra de 80 kbytes, nesse instante é criado um processo de 90 Kbytes que não poderá ser carregado em memória pela forma como ela é gerenciada, sendo assim acontece uma fragmentação externa para que processo possa "interagir" com a memória. Na Multiprogramação com partições fixas os processos são colocados em filas únicas ou não, esperando alguma partição que possa armazena-los.
- Multiprogramação com partições Variáveis: o tamanho dos processos na memória podem variar dinamicamente com o passar do tempo, o tamanho das partições é ajustado dinamicamente às necessidades exatas dos processos. A imagem abaixo ilustra o funcionamento deste algoritmo, considerando a ocorrência de swapping(trazer um processo do disco para a memória [swap in] executá-lo durante um intervalo de tempo e depois devolvê-lo ao disco [swap out].
Inicialmente somente o processo A está na memória, os processos B e C são criados ou recuperados do disco. Quando A termina ou volta para o disco o processo D entra e sai o B e assim vai...
Diferentemente do esquema de partições fixa, na multiprogramação com partições variáveis o tamanho e a localização dos processos varia, a medida que o mesmo deixa e retorna à memória. A gerencia dos espaços vazios é mais complicada, bem como a alocação e liberação das partições. O sistema operacional mantém uma lista de espaços livres na memória física. Sempre que um novo processo é criado esta lista é percorrida e será usada uma lacuna maior ou igual ao tamanho do processo em questão. O espaço que ultrapassar o tamanho do processo pode dar origem a uma nova partição. As forma de percorrer esta lista é :
- Fisrt-fit: Inicia a procura a partir da primeira página de memória e vai varrendo até encontrar a primeira lacuna suficientemente grande para armazenar o processo.
- Best-fit: varre toda a memória e escolhe a página mais ajustada ao tamanho do processo.
- Worst-fit: varre toda a memória e escolhe a página menos ajustada ao tamanho do processo.
- Next-fit: segue a mesma idéia do firt-fit, mas somente a primeira busca é iniciada na parte da memória, as outras iniciam onde terminou a última. Usa-se uma lista circular para permitir que, eventualmente, toda a memória seja percorrida.
Como já mencionado a troca cria lacunas na memória é possível juntar todas elas em um grande espaço, movendo-os para a mesma direção. Técnica chamada de compactação de memória.
Como já mencionado, existem processos que tentem a necessitar mais tamanho de memória conforme são executados, para isso, nada melhor que alocar uma pequena memória extra para esses processos, essa memoria extra somente deve constar no momento em que o processo esta na memória, quando ele retorna para o disco ele deve conter o tamanho real.
- Gerenciamento de memória com mapas de Bits: a cada unidade de alocação da memória é atribuído um bit para dizer se a posição está livre ou ocupada. Assim, o conjunto de todos os bits é representado em uma tabela, denominada mapa de bits, que mapeia todas as posições de memória dizendo o estado de cada uma. Devemos ressaltar que o tamanho da unidade de alocação é muito importante e quanto menor as unidades, maior será o mapa de bits. Como o mapa de bits também é armazenado em memória seu tamanho ocupará espaço útil e, consequentemente, uma parte da memória será desperdiçada. Quando um processo de k bits necessitar ser armazenado em memória a MMU deverá procurar no mapa k bits consecutivos indicando que a posição está vazia (pode ser o bit 0 ou 1). Como varrer o mapa de bits é lento este método quase não é usado.
- Gerência de memória com lista ligada:As representações dos espaços livres e ocupados são feitos através de uma lista ligada, onde P indica uma região ocupada por um processo e H um espaço livre de memória (imagem abaixo). A lista pode estar ordenada por endereços de memória, conforme ilustrado na imagem. Assim como no mapa de bits, qualquer alteração nas posições de memória deve gerar uma alteração no mapeamento promovido pela lista ligada. Se a lista estiver ordenada por endereço uma atualização mais rápida é permitida sempre que um processo terminar de executar suas instruções ou for retirado da memória. A utilização de uma lista duplamente encadeada facilita no processo de atualização da mesma.
Existem alguns algoritmos que podem ser utilizados para alocar as informações na memória:
- algoritmo da primeira alocação (first fit): procura-se pelo primeiro espaço na lista o suficientemente grande para armazenar o processo. É um algoritmo rápido pois ele gasta o tempo mínimo em procura. Se o processo não ocupa todo o espaço o restante é disponibilizado como buraco na lista. A pesquisa por espaço sempre inicia na parte baixa de memória, independentemente dos locais escolhidos para alocar os dados.
- algoritmo da melhor alocação (best fit): busca em toda a lista o espaço cujo o tamanho seja o mais próximo possível do tamanho do processo. Este algoritmo é mais lento que o anterior pois precisa pesquisar em toda a lista para descobrir qual a melhor opção.
- algoritmo da próxima alocação (next fit): semelhante ao first-fit, só que a próxima alocação inicia com uma busca a partir da página onde terminou a alocação anterior e não da parte baixa da memória.
- algoritmo da pior alocação (worst fit): procura pelo maior espaço capaz de armazenar o processo, de tal forma que o espaço restante seja grande o suficiente para armazenar outro processo.
Memoria Virtual
Técnica utilizada para executar um programa que não cabe na memória existente, consiste em manter partes do programa, dos dados e da pilha no disco, sendo que existe uma forma de decisão de quais processos devem permanecer no disco e quais na memória. Técnica realizada de forma automática pelo computador, podemos alocar diversos processos na memória virtual, de forma que cada um pensa ter uma quantidade de memória que somadas ultrapassam a quantidade real de memória.
então:
É um espaço variável e reservado no disco onde o Sistema Operacional continua armazenado os dados que não couberam na memória RAM. Ou seja, na memória RAM ficam os dados temporários usados enquanto o computador está ligado, se ela enche, os dados vão sendo gravados no HD.
.
Leituras indicadas para um melhor entendimento como um todo:
1 - HowStuffWorks
-TANENBAUM, A. S. Sistemas Operacionais Modernos. 2ª Edição. Prentice Hall, 2003.
- Material Prof. Dr. Jean M. - Gerência de memória, também tendo como biográfica o livro acima (...)
-Fonte alternativa
-Fonte alternativa 02
loading...
-
Memória E Aprendizado - Neurociências
CAPÍTULO 06 - UNIDADE IV Todos os dias entramos em contato com uma infinidade de informações, sensações, pensamentos e afins, sendo que alguns apresentam importância, enquanto outros podem ser considerados meras ?distrações?. Aquelas que são...
-
Noções De Arquitetura De Computadores - Parte 01
Por mais que a relação seja estreita, existe diferenças básicas entre Arquitetura de computador e Organização de computadores. A arquitetura esta mais ligada aos atributos do sistema, ou seja, atributos que tem impacto sobre...
-
Estrutura De Dados
O computador com sua finalidade de armazenar e processar um grande numero de dados, deve ter uma maneira de organiza-los no armazenamento para que tudo não se torne num caos. Isso torna extremamente importante a maneira como é feito o armazenamento....
-
Gerenciamento De Processos
Gerenciamento de processosProcesso é a forma como algum programa se apresenta para o processador, ou seja, todas as tarefas em execução no computador. Todo sistema ou função do computar é realizada através de processos, no qual é...
-
Criação E Gerenciamento De Partições - Linux
A tarefa inicial quando se deseja instalar um sistema operacional é preparar o disco rígido, criando uma estrutura pré-definida, para que se possa armazenar os dados. Isso deve ser principalmente usado quando se deseja instalar...
Casa dos Resumos