Gestão de Memórias

 
Gestao de memórias é um campo complexo da ciência da computação.
Para tornar esta gestão mais eficiente são desenvolvidas quase que constantemente novas e várias técnicas.
A cada dia que passa necessitamos de mais memória para que possamos ter mais programas a funcionar simultaneamente e assim tratar cada vez mais informações.
O sistema operativo e todos os programas instalados são armazenados no disco do PC, quando aberto o próprio sistema operativo carrega uma cópia para a memória executando o programa na mesma.
Quanto aos ficheiros o processo é o mesmo, é carregada uma cópia na memória RAM que só é escrita no disco quando o utilizador opta por grava-los.
Se um programa estiver em execução não estando gravado e havendo uma falha de energia é perdido tudo o que se encontra na memória, isto é as alterações do mesmo documento, mas tudo o que está no disco é mantido intacto.
Enquanto a máquina está em funcionamento, há a tendência para abrir um maior número de aplicações e cada uma delas consome memória.
O sistema operativo não limita a RAM porque pode usar também o espaço existente no disco chamado Memória Virtual, sendo esta mais lenta que a RAM.
Podemos também dizer que na sua forma mais simples a gestão de memória está relacionada com duas tarefas essenciais:

v Alocação:
o   Alocação Estática: Decisão tomada quando o programa é compilado.
o   Alocação Dinâmica: Decisão é adiada até a execução. (Permite Swapping)
o   Alocação Local
vReciclagem

                        

                                                
Alocação



A alocação de memória está dividida em duas partes:
  • Alocação Estática: Decisão tomada quando o programa é compilado.
O espaço de memória é dividido em varias partes, uma dessas chama-se segmentos de memória, a outra chama-se segmento de código, este ultimo guarda as instruções do programa. Para que se realize a alocação estática deve-se saber o total de memória que está livre, e assim a informação é enviada para o sistema operativo para que este crie um segmento de dados.
  • Alocação Dinâmica: Decisão é adiada até a execução. (Permite Swapping)
As informações alocadas dinamicamente podem ser criados e libertados a qualquer momento, em qualquer ordem. Dado isto, é necessário organizar os objectos de uma forma que possibilite a gestão do seu tempo de vida.
  • Alocação Local:
O processo em execução deve manter acessível as variáveis locais da função ou procedimento que está executando no momento. Como uma função pode chamar outras funções, um número arbitrário de funções pode estar no meio de sua execução em um determinado momento, mesmo que apenas uma esteja realmente sendo executada, isso indica que o contexto de várias funções deve ser mantido enquanto as mesmas não concluíram sua execução.


 
                                                            Fragmentação
A fragmentação existe em dois tipos:
·        Interna
·        Externa
Fragmentação interna:
Ocorre quando o processo não ocupa inteiramente os blocos de memória reservados para ele, o que acarreta sobra de espaço na última página alocada.
Fragmentação externa:
À medida que os programas vão terminando vão deixando algumas lacunas com cada vez menores espaços entre as páginas. Sendo assim, estes espaços podem ser pequenos demais para serem úteis e acabam por ficar inutilizados.


O que são sistemas mono-programados?
Um sistema mono-programado permite que cada programa utilize o processo até terminar a tarefa, é apenas executado um programa de cada vez.


O que são sistemas multi-programados?
À execução de vários processos dá-se o nome de multiprogramação. Devido à leitura muito lenta dos dispositivos, passou a ser carregada mais do que uma tarefa em memória, permitindo assim reduzir os tempos mortos permitindo assim haver alternância entre tarefas .


Swapping
A multiprogramação mesmo sendo muito eficiente, muitas vezes um programa não podia ser executado por falta de uma partição livre disponível.
A técnica de swapping foi introduzida para contornar este mesmo problema da insuficiência da memória principal, o swapping é aplicado à gestão de memória para que os programas que esperam por memória livre possam ser executados.
Assim sendo, o sistema escolhe um processo residente, que é transferido da memória principal para a secundária normalmente o Disco (Swap Out.). O processo será então carregado efectuando o processo contrário, isto é, da memória secundária para a principal (Swap In) e este continua em execução como se nada se tivesse passado.


Memória Virtual
Caso o computador não possua RAM necessária para executar um programa ou uma operação, o sistema operativo utilizará a memória virtual para compensar.
A memória virtual combina a RAM do computador com espaço temporário no disco rígido. Quando tiver falta de RAM, a memória virtual move dados da RAM para um espaço denominado ficheiro de paginação. Mover dados para o ficheiro de paginação liberta a RAM para concluir o trabalho.
Quanto mais RAM o computador tiver, mais rápida será geralmente a execução de alguns programas. Se uma falta de RAM estiver a abrandar o computador, pode ser induzido a aumentar a memória virtual para compensar. No entanto, o computador pode ler dados a partir da RAM com muito mais rapidez do que a partir do disco rígido, por isso, o aumento de RAM pode ser uma melhor solução.
·        Endereços físicos
Correspondem ao acesso aos dispositivos de uma forma directa.
·        Endereços virtuais
São endereços utilizados internamente pelo sistema, que não estão ligados aos dispositivos físicos de uma forma directa.


Segmentação

Memória virtual por segmentação é a técnica de gestão de memória onde o espaço do endereço virtual é dividido em blocos de tamanhos diferentes chamados segmentos. Na técnica de segmentação, um programa é dividido logicamente em blocos e estruturas de dados, que são colocados em segmentos na memória principal



Número total de visualizações de páginas