Sistemas operacionais/Gerência de memória: diferenças entre revisões

[edição não verificada][edição verificada]
Conteúdo apagado Conteúdo adicionado
Sem resumo de edição
m Foram revertidas as edições de 177.82.2.18 (disc) para a última revisão de Marcos Antônio Nunes de Moura
Etiqueta: Reversão
Linha 1:
MaioriaA maioria dos computadores trabalha com o conceito de hierarquia de memória, possuindo uma pequena quantidade de memória cache, muito rápida, uma quantidade de memória principal (RAM) e uma quantidade muito grande de memória de armazenamento em disco (HD), considerada lenta. O problema básico para o gerenciamento de memória é que os programas atuais são muito grandes para rodarem, completamente, na memória cache. O gerenciador de memória deve ser capaz de controlar parte da memória que está em uso (e quais não estão), alocar memória para processos quando eles necessitam e desalocar quando eles terminam e, principalmente, gerenciar a troca entre a memória principal e o disco, quando a memória principal é muito pequena para armazenar todos os processos.
 
Existem dois tipos de memória principal: a memória lógica e a memória física. A memória lógica é aquela manipulada pelos programas, ela é visível para os programas; sempre que um programa necessita alocar um espaço na memória esse espaço é alocado em memória lógica. A memória física é a memória implementada pelos circuitos integrados é nela que os espaços alocados em memória lógica vão realmente residir, portanto a memória física tem tamanho menor que a memória lógica, geralmente. Para isso é necessário realizar uma tradução de endereços lógicos para endereços físicos, pois assim um programa que aloca uma memória lógica possa ter de fato uma memória física alocada para si. Esse processo de tradução de endereços lógicos em endereços físicos é realizado por uma unidade de gerência de memória chamada MMU (''Memory Management Unit'').
 
== Memória lógica x Memória física ==
Linha 15:
A MMU consiste de um chip ou uma coleção de chips.
 
== Modelo de memóriasmemória de processos ==
 
Para que um programa seja executado ele precisa ser transformado em processo(s), assim é necessário alocar o descritor de processos, '''alocar espaço na memória''' para o '''código''' (área conhecida como TEXT, onde se localiza o programa principal, as funções e as bibliotecas estáticas), os '''dados''' (Data, área onde as variáveis são alocadas - globais, locais estáticas, buffers internos)e a '''pilha''' (que possui o HEAP, área onde se localiza as variáveis dinâmicas, e o STACK, endereços de retorno de chamadas e parâmetros de funções).