Um processo (em inglês , processos ), em computação , é um programa que está sendo executado por um computador . Mais precisamente, pode ser definido como:
Um processo leva um certo tempo para ser concluído, com um começo e ( às vezes ) um fim. Um processo pode ser iniciado por um usuário através de um periférico ou por outro processo: as “ aplicações ” do usuário são conjuntos de processos.
No Esquema CIM definido pelo Modelo de Informação Comum , a classe base CIM_Process é atribuída a processos de TI. Dependendo do sistema operacional, ele pode ser derivado de Win32_Process em IBMzOS_Process ou CIM_UnixProcess .
Um computador equipado com um sistema operacional multitarefa é capaz de executar vários processos quase simultaneamente. Por analogia com as telecomunicações, esse processo é chamado de multiplexação . Se houver vários processadores, a execução dos processos é distribuída igualmente entre esses processadores.
O sistema operacional é responsável por alocar os recursos (memórias, tempo do processador, entradas / saídas) necessários aos processos e garantir que o funcionamento de um processo não interfira com o dos outros (isolamento).
Ele também pode fornecer uma API para habilitar a comunicação entre processos (IPC).
Além da multiplexação dos recursos de hardware, o sistema pode controlar o acesso dos processos aos recursos de acordo com uma matriz de direitos e também associar os processos aos usuários, que são os destinatários de um conjunto de direitos de acesso: um processo tem os direitos do usuário que o inicializou.
Um processo pode parar de várias maneiras:
Quando um desligamento de processo não é um desligamento normal, pode ser importante ser avisado. Isso pode ser feito por sistemas de supervisão (também chamados de monitoramento ).
A maioria dos sistemas oferece a distinção entre processos, que são a priori completamente isolados uns dos outros, e " processos leves " ( threads em inglês), que constituem os processos (cada processo tem pelo menos um thread ) e que compartilham um espaço. (e outros recursos) em comum.
No caso de um processo que compreende vários processos leves (ou para usar a expressão multiencadeada freqüentemente usada), há um estado de processador separado (um contexto de execução) para cada processo leve.
Os estados sucessivos de um processo são geralmente representados por um diagrama de estados .
A utilização de diagramas de estado se deve ao fato de um processo ser coerente, por fora, apenas em determinados momentos de sua execução, em particular fora das seções críticas . Na prática, observamos o estado de um processo comunicando-nos com ele; portanto, fornece uma resposta quando é coerente.
Vamos dar um exemplo; seja a sequência de instruções em pseudocódigo pertencente a qualquer programa:
procédure empiler (v : valeur) compteur := compteur+1 vect[compteur] := vO programa que usa esta função só pode ser observado antes ou depois de uma chamada para a função empiler()porque, entre as instruções de incremento e atribuição , a célula numérica compteurda tabela vect[]não é afetada e contém ... um valor aleatório (uma memória raramente está vazia) .
Esses estados existem na maioria dos sistemas operacionais :
Dependendo dos sistemas operacionais, esses diferentes estados também podem ser possíveis: