Você está na página 1de 4

Gerenciamento de Memoria

Gerenciamento de memoria tambm chamado de gesto. O gerenciamento de memoria ele quem organiza os processos a serem executados pelo sistema. Tem duas tarefas essenciais Alocao: quando o programa requisita um bloco de memoria, o gerenciador disponibiliza para alocao. Reciclagem: quando um bloco de memoria foi alocado, mas os dados no foram requisitados por um determinado nmero de ciclos ou no h nenhum tipo de referencia a este bloco pelo programa, esse bloco liberado e pode ser reutilizado para outra requisio. A funo de gerenciamento de memoria e executada pelo sistema operacional e no do aplicativo. Para que uma memoria funcione de maneira correta, necessrio que se tome cuidado com vrios elementos como segurana e isolamento, e para isto e utilizado o gerenciamento de memoria, a alocao de memoria e a fragmentao. Para que a utilizao da memoria seja mais vantajosa, utilizada a Paginao, processos virtuais da memoria, aplicado em parties menores chamadas de frames. O conjunto de registradores especiais rpidos chama-se Translation Lookaside Buffer, estes so subdivididos em chave valor que e dado em todos os registros ao mesmo tempo, existe uma tcnica que gerencia a memoria chamada de memoria virtual, aonde a memoria principal e segundaria, criam uma iluso para que h muito mais memoria, na memoria virtual pode ocasionar vazamento de memoria , ou quando determinada quantia de memoria e alocada e no liberada mesmo no utilizada assim dados perdem referencia sem ao menos terem usado a memoria. O gerenciamento automtico de memoria chama-se de Garbage Collector ele retira os blocos de memoria automaticamente. os algoritmos so dividios em duas familas a identificao direta e indireta. Tipos de alocao Esta em trs partes Alocao Esttica: Deciso tomada quando o programa compilado.

Quando o programa executado o Sistema operacional l o mesmo e cria um processo, sendo o programa uma noo esttica e o processo o programa em execuo, ele criado em armazenamento primrio e aps isso recebe um espao na memria. O espao de memria dividido em varias partes, uma das partes se chama segmentos de memria, que armazena dados estticos, e outro se chama segmento de cdigo que guarda instrues do programa. Quando o programa executado o registrador PC apontar para determinado endereo do segmento de cdigo do processo, que se chama TEXT. Para que se realize a alocao esttica o compilador deve saber o total de memria que est livre, mandar esta informao para o SO para que este crie um segmento de dados.

Alocao Dinmica: Deciso adiada at a execuo. (Permite Swapping)

Os objetos alocados dinamicamente podem ser criados e liberados a qualquer momento, em qualquer ordem, o que difere dos objetos locais das funes, que so criados e destrudos em uma ordem especfica. Dado isto, preciso organizar a memria para objetos dinmicos de uma forma que possibilite o gerenciamento do tempo de vida dos objetos por parte do programador. A memria reservada para objetos dinmica costuma ser chamada de heap, existem vrias formas de organizar um heap. Em linguagens sem gerenciamento automtico(linguagem C), da memria dinmica, uma organizao usual do heap uma lista encadeada de blocos livres, porm este tipo de organizao pode ter problemas devido fragmentao dos blocos. J em linguagens com gerenciamento automtico de memria dinmica (Java), a organizao do heap depende da parte do sistema de tempo de execuo encarregada deste gerenciamento. Este componente normalmente chamado de coletor de lixo.

Alocao Local:

Este processo de alocao usado para variveis que so locais a funes e sub-rotinas. Isso significa que o processo em execuo deve manter acessvel as variveis locais da funo ou procedimento que est executando no momento. Alm disso, pelas propriedades do escopo em blocos, tambm devem estar acessveis as variveis de blocos mais externos. Em linguagens que permitem a definio de funes aninhadas, acessando as variveis de quaisquer funes definidas externamente funo atualmente em execuo. Como uma funo pode chamar outras funes, um nmero arbitrrio de funes pode estar no meio de sua execuo em um determinado momento, mesmo que apenas uma esteja realmente sendo executada, isso indica que o contexto de vrias funes deve ser mantido enquanto as mesmas no concluram sua execuo. Fragmentao Desperdicio de paginas de memoria alocadas. Podendo ser interna e externa.

Interna : ocorre quando o processo no ocupa inteiramente os blocos de memoria reservados para ele. Geralmente acontece pois o tamanho do processo no e um mltiplo do tamanho da pagia de memoria, o que acarreta sobra de espao na ultima pagina alocada. Externa: Ocorre medida que os programas vo terminando e deixando lacunas cada vez menores de espaos entre as pginas. Dependendo do tamanho que precisa ser escrito em memria, estes espaos podem ser pequenos demais para serem teis, e assim ficam inutilizados. Paginao No contexto dos sistemas operacionais, a paginao da memria do computador um processo de virtualizao da memria que consiste na subdiviso da memria fsica em pequenas parties (frames), para permitir uma utilizao mais eficiente da mesma. A alocao de memria requisitada por pginas, a menor unidade deste mtodo. Cada pgina mapeada numa frame de memria atravs de um processo que chama paginao. O sistema operacional pode estar em base do espao de endereamento, em RAM, ou estar no topo do espao de endereamento, em ROM, e o restante do sistema mais embaixo, em RAM. O primeiro modelo foi inicialmente empregado em computadores de grande porte e minicomputadores (mas no muito usado). O segundo modelo utilizado em alguns computadores de mo e em sistemas embarcados. O terceiro modelo fez parte dos primeiros computadores pessoais, nos quais a parte do sistema contida em ROm denominada BIOS. Quando o sistema organizado dessa maneira, somente um processo pode ser executado a cada instante. To logo um usurio tecle um comando, o sistema operacional carrega o programa solicitado do disco na memria e o executa. Quando o processo finaliza, o SO coloca na tela um caractere de prompt e espera por um novo comando. Ao receber um novo comando, carregar o novo programa na memria, no espao de endereamento ocupado pelo programa anterior.

Translation Lookaside Buffer A Translation Lookaside Buffer (TLB) um conjunto de registradores especiais que so bastante rpidos. Cada registrador tem duas partes: chave e valor. Dada uma chave, busca-se o valor correspondente. Geralmente, 64 entradas, no mximo, e a busca feita em todos os registradores simultaneamente. Memria Virtual uma tcnica poderosa e sofisticada de gerncia de memria, onde as memrias principal e secudria so combinadas, dando ao usurio a iluso de existir uma memria muito maior que a capacidade real da memria principal. O conceito desta tcnica fundamenta-se em no vincular o endereamento feito pelo programa

aos endereos fsicos da memria principal. Desta forma, programas e suas estruturas de dados deixam de estar limitados ao tamanho da memria fsica disponvel, pois podem possuir endereos associados memria secundria.

Garbage Collector
o gerenciamento automtico de memria, tambm conhecido como coletores, sendo conhecido em Portugal como reciclagem automtica de memria. Este servio libera os blocos de memria que no sejam mais usados por um programa automaticamente. oposto ao gerenciamento de memria manual, a alocao explicita e a deslocao dos recursos de memria do computador. As vantagens desse tipo de gerenciamento so:

Liberdade do programador: No obrigado ficar atento aos detalhes da memria; Menos bugs de gerenciamento de memria: Por se tratar de uma tcnica mais confivel; Gerenciamento automtico: Mais eficiente que o manual; O desenvolvedor tende a estar mais desatento em relao a detalhes de memria; O gerenciador automtico ainda apresenta limitaes.

E entre as desvantagens, podemos citar:


Quando deixam de existir referncias a um objeto, este passa a ser considerado apto a ser "coletado" pelo garbage collector, que significa dizer que ser removido da memria, deixando-a livre para uso por outros objetos. Os algoritmos de garbage collection operam de um modo que permite classific-los em duas grandes famlias:

Identificao Direta: por contagem de referncias (reference counting); Identificao Indireta: por varrimento (tracing), que pode incluir tambm compactao da memria livre; cpia; ou geracional (utilizado nas mquinas virtuais Java e.Net)

Você também pode gostar