Un proceso (en inglés , procesos ), en informática , es un programa que se ejecuta actualmente en una computadora . Más precisamente, se puede definir como:
Un proceso tarda algún tiempo en completarse, con un principio y (a veces ) un final. Un proceso puede ser iniciado por un usuario a través de un periférico o por otro proceso: las “ aplicaciones ” de usuario son conjuntos de procesos.
En el esquema CIM definido por el modelo de información común , la clase base CIM_Process se asigna a los procesos de TI. Dependiendo del sistema operativo, se puede derivar Win32_Process en IBMzOS_Process o CIM_UnixProcess .
Una computadora equipada con un sistema operativo multitarea es capaz de ejecutar varios procesos casi simultáneamente. Por analogía con las telecomunicaciones, este proceso se denomina multiplexación . Si hay varios procesadores, la ejecución de los procesos se distribuye por igual entre estos procesadores.
El sistema operativo es responsable de asignar los recursos (memorias, tiempo de procesador, entradas / salidas) necesarios para los procesos y asegurar que el funcionamiento de un proceso no interfiera con el de los demás (aislamiento).
También puede proporcionar una API para habilitar la comunicación entre procesos (IPC).
Además de la multiplexación de los recursos de hardware, el sistema puede controlar el acceso de los procesos a los recursos según una matriz de derechos y también asociar los procesos con los usuarios, que son los destinatarios de un conjunto de derechos de acceso: un proceso tiene los derechos del usuario que lo inicializó.
Un proceso puede detenerse de varias formas:
Cuando el cierre de un proceso no es un cierre normal, puede ser importante estar advertido. Esto se puede realizar mediante sistemas de supervisión (también denominados seguimiento ).
La mayoría de los sistemas ofrecen la distinción entre procesos, que a priori están completamente aislados entre sí, y " procesos ligeros " ( hilos en inglés), que componen los procesos (cada proceso tiene al menos un hilo ) y que comparten un espacio. Memoria (y otros recursos) en común.
En el caso de un proceso que comprende varios procesos ligeros (o para utilizar la expresión multiproceso de uso frecuente), existe un estado de procesador independiente (un contexto de ejecución) para cada proceso ligero.
Los estados sucesivos de un proceso generalmente se representan mediante un diagrama de estados .
El uso de diagramas de estados se debe a que un proceso es coherente, desde el exterior, solo en determinados momentos de su ejecución, en particular fuera de las secciones críticas . En la práctica, observamos el estado de un proceso comunicándonos con él; por tanto, proporciona una respuesta cuando es coherente.
Tomemos un ejemplo; ya sea la secuencia de instrucciones en pseudocódigo perteneciente a cualquier programa:
procédure empiler (v : valeur) compteur := compteur+1 vect[compteur] := vEl programa que usa esta función solo se puede observar antes o después de una llamada a la función empiler()porque, entre las instrucciones de incremento y asignación , la celda numérica compteurde la tabla vect[]no se ve afectada y contiene ... un valor aleatorio (una memoria rara vez está vacía) .
Estos estados existen en la mayoría de los sistemas operativos :
Dependiendo de los sistemas operativos, estos diferentes estados también pueden ser posibles: