Você está na página 1de 2

Multiprogramao

A Multiprogramao faz com que a CPU consiga manter vrios programas ativos na
memria , consegue dividir a memria em varias parties de tamanhos variados, e
permite que um programa seja executado enquanto outro fica em espera. a CPU suportar
a execuo de mltiplos programas independentes,j a multiprogramao tem a
vantagem de melhorar o rendimento de utilizao da CPU e dos perifricos. Na viso do
usurio tem a vantagem de permitir que ele explore tarefas, como por exemplo, a
edio e compilao, concorrentemente com a impresso de um ficheiro. Outra
vantagem a de permitir mltiplos utilizadores concorrentes que, partilhando o tempo
do CPU, obtm assim uma iluso de que cada um tem um computador dedicado,
quando, na verdade o que se tem o controle, pelo SO, de quais os momentos sero
para alternar de um processo para outro. E isto utilizado no SO Windows e na maioria
dos SOs.
Processos e Threads
O programa uma entidade passiva, que pode ser visto como o contedo de um arquivo
em disco, enquanto o processo uma entidade ativa, possuindo um contador de
programa, que especifica a prxima instruo que ira ser executada.
Cada thread possui seu prprio contador de programa, sua pilha e seus registradores,
porm compartilham todos o mesmo espao de endereamento, isto , como se fossem
uma nica entidade .
Threads compartilham do mesmo espao de endereamento com o processo e com os
demais threads, e podem ser executados de forma concorrente ou paralela . O esquema
de threads, no entanto, s pode ser utilizado quando for especificamente suportado pelo
sistema operacional ou quando da existncia de um gerenciador de threads. Uma vez
que thread pode acessar todo o espao virtual de endereamento do processo pai e dos
demais threads, ele pode ler e escrever em qualquer local, mesmo na pilha dos outros
threads, no h qualquer forma de proteo de acesso entre os threads.
Comparao entre Thread e Processo:
Thread:
- Program Counter
- Stack (pilha)
- Conjunto de registradores
- Registrador de status
- Threads filhos

Processo:

- Program Counter
- Stack
- Conjunto de registradores
- Registrador de status
- Espao prprio de endereo
- Variveis globais
- Arquivos abertos
- Semforos
- Informaes de contabilizao
- Processos filhos
Exemplo de uma Thread em Java:
public void calculaTotalRecebido(){
new Thread() {
@Override
public void run(){
//Recebe aproximadamente 5mil registros.
List<HistoricoRecebimento> recebidos = getListRecebimentos(); Integer soma = 0;
for(HistoricoRecebimento h1: recebidos){
soma = soma + recebidos.getValorRecebido();
}
Integer porcentagemImposto = getReajusteAtualFromWp();
soma = soma + ((porcentagemImposto/80)*soma);
retornaParaWpValorTotal(soma);
}
}.start();
}