stringtranslate.com

Proceso (informática)

Programa versus proceso versus programación de subprocesos , preferencia y cambio de contexto

En informática , un proceso es la instancia de un programa informático que está siendo ejecutado por uno o varios subprocesos . Hay muchos modelos de procesos diferentes, algunos de los cuales son livianos, pero casi todos los procesos (incluso máquinas virtuales completas ) tienen su origen en un proceso del sistema operativo (SO) que comprende el código del programa, los recursos asignados del sistema, los permisos de acceso físicos y lógicos, y estructuras de datos para iniciar, controlar y coordinar la actividad de ejecución. Dependiendo del sistema operativo, un proceso puede estar compuesto por varios subprocesos de ejecución que ejecutan instrucciones de forma simultánea . [1] [2]

Si bien un programa de computadora es una colección pasiva de instrucciones generalmente almacenadas en un archivo en el disco, un proceso es la ejecución de esas instrucciones después de cargarse desde el disco a la memoria. Se pueden asociar varios procesos al mismo programa; por ejemplo, abrir varias instancias del mismo programa a menudo da como resultado la ejecución de más de un proceso.

La multitarea es un método que permite que múltiples procesos compartan procesadores (CPU) y otros recursos del sistema. Cada CPU (núcleo) ejecuta un único proceso a la vez. Sin embargo, la multitarea permite que cada procesador cambie entre las tareas que se están ejecutando sin tener que esperar a que finalice cada tarea ( preemption ). Dependiendo de la implementación del sistema operativo, los cambios se pueden realizar cuando las tareas inician y esperan a que se completen las operaciones de entrada/salida , cuando una tarea cede voluntariamente la CPU, en interrupciones de hardware y cuando el programador del sistema operativo decide que un proceso ha expirado. parte del tiempo de CPU (por ejemplo, por el Completely Fair Scheduler del kernel de Linux ).

Una forma común de multitarea es la proporcionada por el tiempo compartido de la CPU, que es un método para intercalar la ejecución de procesos y subprocesos de los usuarios, e incluso de tareas independientes del núcleo, aunque esta última característica sólo es factible en núcleos preventivos como Linux . La preferencia tiene un efecto secundario importante para los procesos interactivos a los que se les da mayor prioridad con respecto a los procesos vinculados a la CPU; por lo tanto, a los usuarios se les asignan recursos informáticos inmediatamente con solo presionar una tecla o mover el mouse. Además, aplicaciones como la reproducción de vídeo y música reciben algún tipo de prioridad en tiempo real, prevaleciendo sobre cualquier otro proceso de menor prioridad. En los sistemas de tiempo compartido, los cambios de contexto se realizan rápidamente, lo que hace que parezca que se ejecutan múltiples procesos simultáneamente en el mismo procesador. Esta ejecución aparentemente simultánea de múltiples procesos se llama concurrencia .

Por motivos de seguridad y confiabilidad, la mayoría de los sistemas operativos modernos impiden la comunicación directa entre procesos independientes, proporcionando una comunicación entre procesos estrictamente mediada y controlada.

Representación

Una lista de procesos mostrados por htop
Una tabla de procesos mostrada por KDE System Guard
Una tabla de procesos mostrada por KDE System Guard

En general, un proceso de un sistema informático consta (o se dice que posee ) los siguientes recursos:

El sistema operativo guarda la mayor parte de esta información sobre los procesos activos en estructuras de datos llamadas bloques de control de procesos . Cualquier subconjunto de recursos, normalmente al menos el estado del procesador, puede asociarse con cada uno de los subprocesos del proceso en sistemas operativos que admiten subprocesos o procesos secundarios .

El sistema operativo mantiene sus procesos separados y asigna los recursos que necesitan, de modo que es menos probable que interfieran entre sí y causen fallas en el sistema (por ejemplo, interbloqueo o agitación ). El sistema operativo también puede proporcionar mecanismos para la comunicación entre procesos para permitir que los procesos interactúen de manera segura y predecible.

Multitarea y gestión de procesos.

Un sistema operativo multitarea puede simplemente cambiar entre procesos para dar la apariencia de que muchos procesos se ejecutan simultáneamente (es decir, en paralelo ), aunque en realidad solo se puede ejecutar un proceso a la vez en una sola CPU (a menos que la CPU tenga múltiples núcleos). , entonces se pueden utilizar subprocesos múltiples u otras tecnologías similares). [a]

Es habitual asociar un único proceso con un programa principal, y procesos secundarios con cualquier proceso paralelo derivado, que se comporta como subrutinas asincrónicas . Se dice que un proceso posee recursos, de los cuales una imagen de su programa (en la memoria) es uno de esos recursos. Sin embargo, en los sistemas multiprocesamiento muchos procesos pueden ejecutarse o compartir el mismo programa reentrante en la misma ubicación de la memoria, pero se dice que cada proceso posee su propia imagen del programa.

Los procesos a menudo se denominan "tareas" en los sistemas operativos integrados . El sentido de "proceso" (o tarea) es "algo que ocupa tiempo", a diferencia de "memoria", que es "algo que ocupa espacio". [b]

La descripción anterior se aplica tanto a los procesos administrados por un sistema operativo como a los procesos definidos por los cálculos del proceso .

Si un proceso solicita algo por lo que debe esperar, será bloqueado. Cuando el proceso está en estado bloqueado , es elegible para el intercambio al disco, pero esto es transparente en un sistema de memoria virtual , donde las regiones de la memoria de un proceso pueden estar realmente en el disco y no en la memoria principal en cualquier momento. Incluso partes de procesos/tareas activos (programas en ejecución) son elegibles para intercambiarse al disco, si dichas partes no se han utilizado recientemente. No todas las partes de un programa en ejecución y sus datos tienen que estar en la memoria física para que el proceso asociado esté activo.

Estados del proceso

Los distintos estados del proceso, mostrados en un diagrama de estado , con flechas que indican posibles transiciones entre estados.

Un núcleo de sistema operativo que permite la multitarea necesita que los procesos tengan ciertos estados . Los nombres de estos estados no están estandarizados, pero tienen una funcionalidad similar. [1]

Comunicación entre procesos

Cuando los procesos necesitan comunicarse entre sí, deben compartir partes de sus espacios de direcciones o utilizar otras formas de comunicación entre procesos (IPC). Por ejemplo, en una canalización de shell , la salida del primer proceso debe pasar al segundo, y así sucesivamente. Otro ejemplo es una tarea que se ha descompuesto en procesos cooperativos pero parcialmente independientes que pueden ejecutarse simultáneamente (es decir, usando concurrencia o paralelismo verdadero; este último modelo es un caso particular de ejecución concurrente y es factible siempre que haya múltiples núcleos de CPU disponibles para la ejecución). procesos que están listos para ejecutarse).

Incluso es posible que dos o más procesos se estén ejecutando en diferentes máquinas que pueden ejecutar diferentes sistemas operativos (SO); por lo tanto, se necesitan algunos mecanismos de comunicación y sincronización (llamados protocolos de comunicación para computación distribuida) (por ejemplo, la interfaz de paso de mensajes ). IPM}).

Historia

A principios de la década de 1960, el software de control por computadora había evolucionado desde el software de control de monitores, por ejemplo IBSYS , hasta el software de control ejecutivo. Con el tiempo, las computadoras se volvieron más rápidas mientras que el tiempo de uso de la computadora aún no era barato ni se utilizaba por completo; Un entorno así hizo posible y necesaria la multiprogramación . La multiprogramación significa que varios programas se ejecutan simultáneamente . Al principio, más de un programa se ejecutaba en un solo procesador, como resultado de la arquitectura informática monoprocesador subyacente , y compartían recursos de hardware escasos y limitados; en consecuencia, la concurrencia fue de carácter serial . En sistemas posteriores con múltiples procesadores , se pueden ejecutar múltiples programas simultáneamente en paralelo .

Los programas constan de secuencias de instrucciones para procesadores. Un único procesador sólo puede ejecutar una instrucción a la vez: es imposible ejecutar más programas al mismo tiempo. Un programa puede necesitar algún recurso , como un dispositivo de entrada, que tiene un gran retraso, o un programa puede iniciar alguna operación lenta, como enviar resultados a una impresora. Esto llevaría a que el procesador estuviera "inactivo" (sin uso). Para mantener el procesador ocupado en todo momento, se detiene la ejecución de dicho programa y el sistema operativo cambia el procesador para ejecutar otro programa. Al usuario le parecerá que los programas se ejecutan al mismo tiempo (de ahí el término "paralelo").

Poco después, la noción de "programa" se amplió a la noción de "programa en ejecución y su contexto". Así nació el concepto de proceso, que también se hizo necesario con la invención del código reentrante . Los hilos llegaron un poco más tarde. Sin embargo, con la llegada de conceptos como tiempo compartido , redes de computadoras y computadoras con múltiples CPU y memoria compartida , la antigua "multiprogramación" dio paso a la verdadera multitarea , multiprocesamiento y, más tarde, multihilo .

Ver también

Notas

  1. ^ Algunas CPU modernas combinan dos o más procesadores independientes en una configuración de múltiples núcleos y pueden ejecutar varios procesos simultáneamente. Otra técnica llamada multiproceso simultáneo (utilizada en la tecnología Hyper-threading de Intel ) puede simular la ejecución simultánea de múltiples procesos o subprocesos.
  2. ^ Las tareas y los procesos se refieren esencialmente a la misma entidad. Y, aunque tienen historias terminológicas algo diferentes, han llegado a utilizarse como sinónimos. Hoy en día, el término proceso generalmente se prefiere al de tarea, excepto cuando se hace referencia a "multitarea", ya que el término alternativo, "multiprocesamiento", es demasiado fácil de confundir con multiprocesador (que es una computadora con dos o más CPU).

Referencias

  1. ^ abcd Silberschatz, Abraham ; Cagne, Greg; Galvin, Peter Baer (2004). "Capítulo 4. Procesos". Conceptos de sistema operativo con Java (Sexta ed.). John Wiley e hijos . ISBN 0-471-48905-0.
  2. ^ Vahalia, Uresh (1996). "Capítulo 2. El proceso y el kernel". Elementos internos de UNIX: las nuevas fronteras . Prentice-Hall Inc. ISBN 0-13-101908-2.
  3. ^ Puestos, William (2005). Sistemas operativos: componentes internos y principios de diseño (5ª ed.). Prentice Hall. ISBN 0-13-127837-1.(particularmente el capítulo 3, sección 3.2, "estados de proceso", incluida la figura 3.9 "transición de estado de proceso con estados de suspensión")

Otras lecturas

enlaces externos