Redes
•
•
•
•
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).
A multiprogramação tem como objetivo permitir que, a todo instante, haja algum processo sendo executado, para maximizar a utilização da CPU. Em um sistema monoprocessador, existe sempre apenas um processo em execução. Outros processos têm que esperar até que a CPU esteja livre e possa ser novamente alocada para sua execução.
A multiprogramação se baseia em uma idéia relativamente simples. Um processo é executado até que tenha que esperar pelo término de alguma operação de E/S.
Em um sistema computacional simples, a CPU ficaria ociosa durante esse tempo de espera. O tempo de espera seria todo desperdiçado, sem realização de nenhum trabalho útil. Com a multiprogramação procuramos usar esse tempo de maneira produtiva. A cada instante, códigos de execução de diversos processos ficam armazenados na memória. Quando um processo tem que esperar, o sistema operacional transfere o controle
da