processamentos de linguagem
Sistemas Operativos (IGE/ETI/EI)
Programação - Processos
Guia de Trabalho
Rev 002b
1. Conceito de Processo
Experimente o seguinte programa:
#include
main() { char s[80]; printf ("PID=%d\n", getpid() ); while ( 1 ) { printf ("Comando: "); gets ( s ); if ( strcmp ( s, "exit" ) == 0 ) exit(0); }
}
O programa começa por escrever no ecrã o seu identificador de processo; depois fica à espera que o utilizador introduza um comando. O único comando com efeito é o "exit", que faz o programa terminar.
Um programa em execução diz-se um processo. Cada processo é identificado pelo sistema operativo através de um número único - o pid (process identifier).
Tendo este programa em execução abra outra janela e execute o comando: ps -u
Este comando permite ver a lista de todos processos pertencentes ao mesmo utilizador. Verifique que o programa aparece na lista (pode identificá-lo pelo pid).
Se puser este mesmo programa em execução em várias janelas terá vários processos diferentes (todos a executar o mesmo programa). Experimente e verifique com ps -u.
2. Chamadas ao sistema (system call)
O programa do ponto anterior usa a função getpid() para saber o seu pid.
A função getpid() origina uma chamada ao kernel do sistema operativo (system call). Da mesma forma, a função exit() origina uma chamada ao sistema operativo, neste caso pedindo ao sistema operativo para terminar o processo.
Para saber mais pormenores sobre estas funções pode consultar o manual. Por exemplo: man getpid
Um dos aspectos importantes do manual é a indicação dos "includes" que deve fazer para usar a função
(pormenor que neste caso descurámos...).
Deve fazer man para saber quais os includes que deve fazer no seu programa em C no qual faça uso de uma qualquer função de sistema.
Programação - Processos
-1-
jrg, SO, 2006/07
Estas funções de sistema operativo (às vezes chamadas também de "primitivas") são apresentadas na secção 2 dos manuais do