Você está na página 1de 1

Um processo é um programa em execução

fork cria um novo processo


exec é usada após um fork para substituir a memória virtual do processo filho com um
novo programa carregado de um arquivo.
Um processo pai pode esperar pelo filho através da chamada wait que fornece o
identificador do processo filho terminado de forma que o pai possa saber qual filho foi
terminado

Fork/Join
O comando fork implica que um determinado conjunto de instruções (processo
filho) deve iniciar a sua execução em paralelo com o processo que o executa (processo
pai). O comando join é utilizado para a sincronização do processo pai com os filhos
gerados. Um exemplo de sintaxe para os comandos fork/join é:
 Fork end: Executa a partir do endereço end, concorrentemente ao processo
que executa a chamada fork;
 Join num, end1, end2: Decrementa a variável num, que contém o número de
processos que devem sincronizar-se. Se num=0, execute a partir de end1.
Caso contrário, execute a partir de end2 (geralmente é um comando quit, que
termina a execução).
A utilização de fork/join é um meio poderoso e flexível de se especificar o
processamento concorrente (Figura 4.12). Porém, programas escritos utilizando tais
comandos devem ser escritos de maneira disciplinada, visto que a organização do
código fonte obtido é desestruturada. Com o objetivo de proporcionar maior
estruturação, à custa de perda de flexibilidade, foram propostos alguns novos modelos
que são apresentados à seguir, como cobegin/coend e doall.

A
m=2
forkc
A B
n=3
B forke
forkf
D
C D E F joinm,g;quit
g:G
joinn,h; quit
G h: H
quit
c: C
H joinm,g;quit
e: E
joinn,h; quit
f: F
joinn,h; quit

Figura 4.12 - Exemplo da utilização de Fork/Join

Você também pode gostar