Un processo (in inglese , processi ), in informatica , è un programma attualmente eseguito da un computer . Più precisamente, può essere definito come:
Un processo richiede una certa quantità di tempo per essere completato, con un inizio e (a volte ) una fine. Un processo può essere avviato da un utente tramite una periferica o da un altro processo: le " applicazioni " dell'utente sono insiemi di processi.
Nello schema CIM definito dal Common Information Model , la classe base CIM_Process è assegnata ai processi IT. A seconda del sistema operativo, può essere derivato Win32_Process in IBMzOS_Process o CIM_UnixProcess .
Un computer dotato di un sistema operativo multitasking è in grado di eseguire più processi quasi contemporaneamente. Per analogia con le telecomunicazioni, questo processo è chiamato multiplexing . Se sono presenti più processori, l'esecuzione dei processi viene distribuita equamente tra questi processori.
Il sistema operativo è responsabile dell'allocazione delle risorse (memorie, tempo processore, input / output) necessarie ai processi e garantisce che il funzionamento di un processo non interferisca con quello degli altri (isolamento).
Può anche fornire un'API per abilitare la comunicazione tra processi (IPC).
Oltre al multiplexing delle risorse hardware, il sistema può controllare l'accesso dei processi alle risorse secondo una matrice di diritti e associare i processi anche agli utenti, destinatari di un insieme di diritti di accesso: un processo ha i diritti dell'utente che lo ha inizializzato.
Un processo può interrompersi in diversi modi:
Quando l'arresto di un processo non è un arresto normale, può essere importante essere avvisati. Questo può essere fatto dai sistemi di supervisione (chiamati anche monitoraggio ).
La maggior parte dei sistemi offre la distinzione tra processi, che sono a priori completamente isolati l'uno dall'altro, e " processi leggeri " ( thread in inglese), che costituiscono i processi (ogni processo ha almeno un thread ) e che condividono uno spazio. (e altre risorse) in comune.
Nel caso di un processo che comprende diversi processi leggeri (o per usare l'espressione multi-threaded spesso usata), c'è uno stato del processore separato (un contesto di esecuzione) per ogni processo leggero.
Gli stati successivi di un processo sono generalmente rappresentati da un diagramma di stato .
L'utilizzo dei diagrammi di stato è dovuto al fatto che un processo è coerente, dall'esterno, solo in determinati momenti della sua esecuzione, in particolare al di fuori delle sezioni critiche . In pratica, osserviamo lo stato di un processo comunicando con esso; fornisce quindi una risposta quando è coerente.
Facciamo un esempio; o la sequenza di istruzioni in pseudo-codice appartenenti a qualsiasi programma:
procédure empiler (v : valeur) compteur := compteur+1 vect[compteur] := vIl programma che utilizza questa funzione può essere osservato solo prima o dopo una chiamata alla funzione empiler()perché, tra le istruzioni di incremento e assegnazione , la cella numerica compteurdella tabella vect[]non è interessata e contiene ... un valore casuale (una memoria è raramente vuota) .
Questi stati esistono nella maggior parte dei sistemi operativi :
A seconda dei sistemi operativi, possono essere possibili anche questi diversi stati: