TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Alocação De Memoria

Trabalho Escolar: Alocação De Memoria. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  19/9/2013  •  893 Palavras (4 Páginas)  •  508 Visualizações

Página 1 de 4

Alocação de memória, em ciência da computação, consiste no processo de solicitar/utilizar memória durante o processo de execução de um programa de computador. A alocação de memória no computador pode ser dividida em dois grupos principais:

• Alocação Estática: os dados tem um tamanho fixo e estão organizados seqüencialmente na memória do computador. Um exemplo típico de alocação estática são as variáveis globais e arrays;

• Alocação Dinâmica: os dados não precisam ter um tamanho fixo, pois podemos definir para cada dado quanto de memória que desejamos usar. Sendo assim vamos alocar espaços de memória (blocos) que não precisam estar necessariamente organizados de maneira seqüencial, podendo estar distribuídos de forma dispersa (não ordenada) na memória do computador. Na alocação dinâmica, vamos pedir para alocar/desalocar blocos de memória, de acordo com a nossa necessidade, reservando ou liberando blocos de memória durante a execução de um programa. Para poder “achar” os blocos que estão dispersos ou espalhados na memória usamos as variáveis do tipo Ponteiro (indicadores de endereços de memória).

7.1 Alocação Estática

Alocação de Espaço em Memória

Como já foi visto anteriormente, a memória de um computador compõe-se de uma

sequência de palavras, ou bytes, endereçada. Nesta memória são colocados todos os

programas executados pelo computador.

Os programas são compostos por código (instruções) e dados (variáveis). Estes

programas são carregados na memória quando forem chamados para execução e são

retirados da memória quando for finalizada a sua execução. Assim, em determinado

momento, a memória está com partes ocupadas e livres.

A utilização da memória é controlada pelo Sistema Operacional. O Sistema

Operacional mantém uma tabela que informa quais partes da memória estão livres

(memória disponível) e quais partes da memória estão ocupadas (memória ocupada).

Toda vez que um programa for executado, o Sistema Operacional aloca (reserva), da

memória disponível, o espaço suficiente para as variáveis deste programa. Esta memória

passa a ser ocupada e não será mais alocada para outras variáveis, até que o programa

termine. Desta forma, as memórias disponível e ocupada crescem e diminuem a medida que

diferentes programas são executados.

Existem 2 (dois) tipos de variáveis: estática e dinâmica. Veremos aqui somente as

variáveis estáticas, pois as variáveis dinâmicas serão objetos de estudo posterior.

As variáveis estáticas são alocadas antes que o programa entre em execução. O

programa solicita ao Sistema Operacional que aloque espaço da memória disponível para

as variáveis estáticas. Então, o Sistema Operacional retira da memória disponível o espaço

necessário para as variáveis e coloca na memória ocupada.

IMPORTANTE!!! As variáveis geralmente são alocadas na mesma ordem em que

elas aparecem na declaração.

O Sistema Operacional garante que o espaço de memória utilizado por uma Var

estática jamais poderá ser utilizado por uma outra. Esta garantia não é dada às variáveis

dinâmicas, como veremos.

Para cada Var será alocada uma quantidade de espaço diferente, dependendo do tipo

da Var e da linguagem de programação utilizada. A seguir descreveremos o tamanho de

memória utilizada pelas variáveis de tipos comumente conhecidos.tipo Integer = 2 bytes

tipo Real = 6 bytes

tipo String [n]= n bytes

tipo Char = 1 byte

tipo Boolean = 1 byte

tipo Record = somatória dos tamanhos dos campos

ex: Record

nome: String [30] ;

idade: Integer ;

sexo: Char ;

salário: Real ;

End;

somatória = 30 + 1 + 1 + 6 = 38 bytes

A memória alocada para uma variável vetorial depende da quantidade de campos e

do tipo do campo. Alguns exemplos podem ser dados:

V: Array[1..100] of Real ; total de memória = 100*6 = 600 bytes

A: Array[1..20,1..50] of Integer ; total de memória = 20*50*2 = 2000 bytes »

2Kbytes

Nomes: Array[1..2000] of Record total = 2000*38 = 76000 bytes » 76Kbytes

nome:

...

Baixar como (para membros premium)  txt (6.1 Kb)  
Continuar por mais 3 páginas »
Disponível apenas no TrabalhosGratuitos.com