Criação Estática e Dinâmica de Processos

12
CRIAÇÃO ESTÁTICA E DINÂMICA DE PROCESSOS ARRAY DE PROCESSO

description

Criacao Dinamica dos processos em Sistema Operacional

Transcript of Criação Estática e Dinâmica de Processos

CRIAÇÃO ESTÁTICA E DINÂMICA DE PROCESSOS

ARRAY DE PROCESSO

CRIAÇÃO ESTÁTICA E CRIAÇÃO DINÂMICA DE PROCESSOS

Os processos de um programa concorrente podem ser criados de forma estática ou dinâmica.No primeiro caso, o programa contém a declaração de um conjunto fixo de processos, os quais são activados simultaneamente, no inicio da execução do programa. No segundo caso, os processos são criados dinamicamente, durante a execução, através de instruções especiais para esse fim.

Para a criação dinâmica e término dinâmico são usados os mecanismos (fork, join e quit), pois os processos (ou threads) são criados somente quando instruções especiais são executadas.

Criação estáticaNo caso da criação estática, os processos são declarados explicitamente no programa fonte e vão existir desde o início da execução do programa concorrente. Normalmente, as linguagens de programação permitem especificar esses processos de duas maneiras: como processos individuais ou como um array de processos.

Especificação de processos individuais:Neste caso, cada processo é especificado de forma individual, conforme exemplo a seguir:

#include<iostream>#include<conio.h>using namespace std;main(){/*process P1;*/int k=0;cout<<"\nprocesso 1\n\n";while(k < 10){cout<<1<<",";k=k+1;}/* process P2;*/cout<<"\nprocesso 2\n\n";int z=0;while (z<10){cout<<2<<",";z=z+1;}return 0;}

O programa define dois processos, denominados P1 e P2, que não compartilham variáveis (não existem variáveis globais no programa). Cada processo utiliza uma variável local, denominada k.O primeiro imprime 10 vezes o número 1 e o segundo, em paralelo, imprime 10 vezes o número 2 . O resultado da execução pode ser qualquer sequência de tamanho 20, contendo 10 vezes o número 1 e 10 vezes o número 2, embaralhados.

Array de processosAntes de começar a desenvolver o tema array de processo iremos definir o que são array e o processo.Array é um conjunto de posições de memória ou variáveis do mesmo tipo e que acessa-se por via do índice, começando na posição zero e indo até a posição indicada menos 1.

Ex1:int a[10];Começa Posição 010-1Termina Posição 9 Ex2:int teste[10]; //declara um array de 10 posições - de 0 a 9teste[0]=1; //coloca o valor 1 na primeira posição do arrayteste[4]=10; // coloca o valor 10 na quinta posição do arrayteste[9]=9; //coloca o valor 9 na posição 10 (ultima) do array

10-1

Processo - representa programas em execução, visto que um sistema operativo não executa somente programas que podemos ver. Isso significa que um único aplicativo pode ter vários processos relacionados a ele.

Neste caso, uma única declaração especifica um grupo de processos semelhantes, que se distinguem apenas pelo valor de uma variável local inteira, que é especificada no cabeçalho do processo, conforme é ilustrado a seguir, considerando o mesmo exemplo anterior.

Ex:#include<iostream>#include<conio.h>#include<iomanip>using namespace std;main(){int n[10];for(int i=0;i<10;i++)n[i]=1;cout<<"Elementos "<<" Processo1"<<setw(13)<<endl;for(int j=0;j<10;j++)cout<<setw(7)<<j<<setw(13)<<n[j]<<endl;for(int i=0;i<10;i++)n[i]=2;cout<<"\n Elementos "<<" Processo2"<<setw(13)<<endl;for(int b=0;b<10;b++)cout<<setw(7)<<b<<setw(13)<<n[b]<<endl;return 0;}

Para o primeiro processo, a sua variável local i vale 1 e para o segundo, a sua variável local i vale 2. Este programa é equivalente ao anterior.

Criação dinâmicaÉ possível declarar explicitamente um modelo (uma "forma") para criar processos durante a execução, conforme é ilustrado a seguir. Neste caso tem-se o que se denomina criação dinâmica com declaração explícita de processos.

V4programProcess type P (i: integer);k: integer init 0;While k < 10 do{Write (i);k:=k+1};Process Q;{ new P(1); new P(2) }Endprogram

Através da especificação process type, explicita-se um modelo (template) de processo, o qual é utilizado para criar exemplares (cópias, clones) desse processo durante a execução.

A criação de um novo exemplar se dá através do comando new, o qual permite passar parâmetros para o processo criado. No caso da linguagem Vale4, a primitiva new pode ser usada como função ou como subrotina; usada como função ela retorna a identificação interna (pid) do Processo criado.

Obrigado!