Unidad 2
Descripción y control de procesos sistemas operativos En algunos sistemas operativos como en los de tiempo compartido, cada programa que se ejecuta. Una vez terminada la ejecución de los mismos, su eliminación también la realiza el propio S.O asi mismo, el s.o proporciona en tiempo real los servicios que son necesarios para que el usuario pueda definir procesos de forma explicita.  Las llamadas al sistema se realizan también, pero de forma indirecta, cuando se dan ordenes al o.s a través de un Terminal (ó shell)la rutina de monitorización del Terminal( que es asu vez un proceso) se encarga de transformar la ordenes en llamadas al sistema.  De este modo, al comienzo de la ejecución del programa principal de un usuario se inicia la ejecución de un proceso. A su vez el proceso podría crear nuevos procesos. Una vez creado un proceso hijo, la ejecución de padre e hijo transcurre de manera concurrente.  De esta forma se puede crear una jerarquía arborescente de procesos, en la que un padre puede tener varios hijos y estos pueden tener otros hijos, etc, pero donde cada hijo sólo tiene un padre.
Definición De Proceso Sistemas Operativos Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado (Palabra que recoge en binario el estado del entorno de programa, después de la ejecución de cada instrucción.), sus registros ( pequeña memoria interna del microprocesador, formada generalmente por biestables) del procesador, su segmento de texto, pila (zona reservada de la memoria o registros hardware donde se almacena temporalmente el estado o información de un programa, rutina, etc..) y datos, etc
Estados De Procesos Sistemas Operativos   De forma general, un proceso puede encontrarse en un instante determinado en uno de lo siguientes estados:  Activo, Preparado, Bloqueado o suspendido, Nonato y Muerto.  La tarea activa es la que está ejecutándose en un instante dado. En el caso de sistemas con un único procesador, sólo puede haber una tarea en dicho estado en cada instante.  En el estado de preparado, se encuentran todas las tareas que están listas para ejecutarse pero que esperan a que un/el procesador quede libre(hay otros procesos más prioritarios en ejecución).  Las tareas que están a la espera de que se cumpla una condición y que por lo tanto, no están preparadas para ejecutase, se dice que están en el estado bloqueado o suspendido; alguno ejemplos de condición son: que se termine una operación de E/S o que se reciba una señal de sincronización.  Un proceso esta muerto cuando ha terminado su ejecución o bien el sistema operativo a detectado un error fatal y lo ha transferido a dicho estado.  El estado de nonato indica que el programa realmente existe pero todavía no es conocido por el OS.
Control De Procesos Sistemas Operativos   Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado.  El modo menos privilegiado a menudo se conoce como modo de usuario, ya que los pro¬ gramas de usuario ejecutan normalmente en ese modo. Al modo más privilegiado normal¬ mente se le conoce como modo del sistema, modo de controlo modo del núcleo. Este último término se refiere al núcleo del sistema operativo, que es la parte del sistema operativo que lleva a cabo las funciones importantes del sistema. La tabla 3.10 enumera las funciones que normalmente se hallan en el núcleo de un sistema operativo.  La razón por la que se usan dos modos debe quedar clara. Es necesario proteger al sistema operativo y a las tablas importantes del mismo, tales como los bloques de control de procesos, de las injerencias de los programas de usuario. En el modo del núcleo, el software tiene control completo del procesador y de todas sus instrucciones, registros y memoria. Este nivel de con¬ trol no es necesario y, por seguridad, tampoco conveniente para los programas de usuario.
Procesos E Hilos   Es una ejecución concreta de un programa, con un camino determinado y un valor de sus variables determinados.  La unidad mínima de expedición y de asignación de recursos es el proceso.
Estados en los que puede estar un proceso   Listo. Tiene todo lo necesario para ejecutarse excepto el procesador.  Suspendido. No está en memoria principal.  Bloqueado. Está esperando un evento.  Bloqueado y suspendido.  Listo y suspendido.
Tareas e hilos.  Unidad mínima de asignación: tarea.  Unidad mínima de expedición: hilo.  Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento de código, el segmento de datos y un espacio de pila, es decir, los recursos asignados a la tarea.  Podemos captar la funcionalidad de los hilos si comparamos el control de múltiples hilos con el control de múltiples procesos. En el caso de los procesos, cada uno opera independientemente de los otros; cada proceso tiene su propio contador de programa, registro de pila, y espacio de direcciones. Este tipo de organización es muy útil cuando los trabajos que los procesos efectúan no tienen ninguna relación entre si.  Pero cuando los trabajos a realizar van a necesitar, por ejemplo, la llamada a una misma función o bien, la compartición de una variable en memoria, nos interesará englobarlos en una tarea. Ej: Avion-Torre.  Cuando un hilo está en ejecución, posee el acceso a todos los recursos que tiene asignados la tarea.
Un hilo tendrá lo siguiente:  Estado.  Contexto del procesador. Punto en el que estamos ejecutando, la instrucción concretamente en la que nos hallamos.  Es útil a la hora de reanudar un hilo que fue interrumpido con anterioridad, puesto que al guardar el contexto, guardamos la ultima instrucción que ejecutamos, y así podemos conocer por donde tenemos que continuar la ejecución del hilo.  Pila de ejecución donde se irá metiendo y sacando instrucciones.  (Lugar donde almacenaremos las instrucciones que van a ser ejecutadas).  Espacio de almacenamiento estático donde almacenará las variables.  Acceso a los recursos de la tarea, que son compartidos por todos los hilos de la tarea.  Ventajas del uso de hilos.  Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo proceso.  Se tarda menos tiempo en terminar un hilo que en terminar un proceso.  Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en cambiar entre dos procesos (porque los recursos no cambian, por ejemplo)  Es mas sencillo la comunicación (paso de mensajes por ejemplo) entre hilos de una misma tarea que entre diferentes procesos.  Cuando se cambia de un proceso a otro, tiene que intervenir el núcleo del sistema operativo para que haya protección.  Cuando se cambia de un hilo a otro, puesto que la asignación de recursos es la misma, no hace falta que intervenga el sistema operativo.
Concurrencia: exclusión mutua y sincronización  Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos:  •  Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador.  •  Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador.  •  Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas.  La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
La concurrencia puede presentarse en tres contextos diferentes   •  Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas.  •  Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes.  •  Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.
PRINCIPIOS GENERALES DE LA CONCURRENCIA  En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas.  La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades:  Compartir recursos globales es riesgoso Para el sistema operativo es difícil gestionar la asignación óptima de recursos. Las dificultades anteriores también se presentan en los sistemas multiprocesador.  El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos recursos.  Los problemas de concurrencia se producen incluso cuando hay un único procesado
ALGORITMO DE PETERSON  El algoritmo de Deker resuelve el problema de la exclusión mutua pero mediante un programa complejo, difícil de seguir y cuya corrección es difícil de demostrar. Peterson ha desarrollado una solución simple y elegante. Como antes, la variable global señal indica la posición de cada proceso con respecto a la exclusión mutua y la variable global turno resuelve los conflictos de simultaneidad
MONITORES  Los monitores son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a las de los semáforos pero son más fáciles de controlar. El concepto de monitor fue definido por primera vez en [HOAR 74] . La estructura de monitor se ha implementado en varios lenguajes de programación como: Pascal concurrente, Modulo-2, Java, etc.  En concreto, para una lista enlazada se puede necesitar un cierre que bloquee todas las listas enlazadas o bien un cierre por cada elemento de una lista.
SINCRONIZACION  La comunicación de un mensaje entre 2 procesos implica cierto nivel de sincronización entre ambos. El receptor no puede recibir un mensaje hasta que sea enviado por otro proceso. Además hace falta especificar que le sucede a un proceso después de ejecutar una primitiva SEND o RECEIVE.  Considérese en primer lugar la primitiva send. Cuando se ejecuta una primitiva send en un proceso, hay 2 posibilidades: o bien el proceso emisor se bloquea hasta que recibe el mensaje o no se bloquea. Igualmente cuando un proceso ejecuta una primitiva RECEIVE, existen 2 opciones:  1) Si previamente se ha enviado algún mensaje, este es recibido y continua la ejecución.  2) Si no hay ningún mensaje esperando entonces:  a) el proceso se bloquea hasta que llega un mensaje o,  b) el proceso continúa ejecutando, abandonando el intento de recepción.  El emisor y el receptor pueden ser bloqueantes o no bloqueantes.
Monitores Sistemas Operativos Un monitor encapsula el código relativo a un recurso compartido en un solo módulo de programa; ventajas:  •  mantenimiento más simple  •  menos errores de programación  La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso  La implementación del monitor garantiza la exclusión mutua  •  mediante semáforos o algún otro mecanismo
Paso De Mensajes Sistemas Operativos Paso de mensajes  El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc.  Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos.  Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.
Concurrencia E Interbloqueo Deadlock DEADLOCK  Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados.  Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure.  Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.

Unidad2

  • 1.
  • 2.
    Descripción y controlde procesos sistemas operativos En algunos sistemas operativos como en los de tiempo compartido, cada programa que se ejecuta. Una vez terminada la ejecución de los mismos, su eliminación también la realiza el propio S.O asi mismo, el s.o proporciona en tiempo real los servicios que son necesarios para que el usuario pueda definir procesos de forma explicita. Las llamadas al sistema se realizan también, pero de forma indirecta, cuando se dan ordenes al o.s a través de un Terminal (ó shell)la rutina de monitorización del Terminal( que es asu vez un proceso) se encarga de transformar la ordenes en llamadas al sistema. De este modo, al comienzo de la ejecución del programa principal de un usuario se inicia la ejecución de un proceso. A su vez el proceso podría crear nuevos procesos. Una vez creado un proceso hijo, la ejecución de padre e hijo transcurre de manera concurrente. De esta forma se puede crear una jerarquía arborescente de procesos, en la que un padre puede tener varios hijos y estos pueden tener otros hijos, etc, pero donde cada hijo sólo tiene un padre.
  • 3.
    Definición De ProcesoSistemas Operativos Un proceso es una instancia de ejecución de un programa, caracterizado por su contador de programa, su palabra de estado (Palabra que recoge en binario el estado del entorno de programa, después de la ejecución de cada instrucción.), sus registros ( pequeña memoria interna del microprocesador, formada generalmente por biestables) del procesador, su segmento de texto, pila (zona reservada de la memoria o registros hardware donde se almacena temporalmente el estado o información de un programa, rutina, etc..) y datos, etc
  • 4.
    Estados De ProcesosSistemas Operativos De forma general, un proceso puede encontrarse en un instante determinado en uno de lo siguientes estados: Activo, Preparado, Bloqueado o suspendido, Nonato y Muerto. La tarea activa es la que está ejecutándose en un instante dado. En el caso de sistemas con un único procesador, sólo puede haber una tarea en dicho estado en cada instante. En el estado de preparado, se encuentran todas las tareas que están listas para ejecutarse pero que esperan a que un/el procesador quede libre(hay otros procesos más prioritarios en ejecución). Las tareas que están a la espera de que se cumpla una condición y que por lo tanto, no están preparadas para ejecutase, se dice que están en el estado bloqueado o suspendido; alguno ejemplos de condición son: que se termine una operación de E/S o que se reciba una señal de sincronización. Un proceso esta muerto cuando ha terminado su ejecución o bien el sistema operativo a detectado un error fatal y lo ha transferido a dicho estado. El estado de nonato indica que el programa realmente existe pero todavía no es conocido por el OS.
  • 5.
    Control De ProcesosSistemas Operativos Ciertas instrucciones pueden ejecutarse sólo en modo privilegiado. Entre éstas están la lectura o modificación de registros de control (como la palabra de estado del programa), instrucciones primitivas de E/S e instrucciones relativas a la gestión de memoria. Además, se puede acceder a ciertas regiones de memoria sólo en el modo más privilegiado. El modo menos privilegiado a menudo se conoce como modo de usuario, ya que los pro¬ gramas de usuario ejecutan normalmente en ese modo. Al modo más privilegiado normal¬ mente se le conoce como modo del sistema, modo de controlo modo del núcleo. Este último término se refiere al núcleo del sistema operativo, que es la parte del sistema operativo que lleva a cabo las funciones importantes del sistema. La tabla 3.10 enumera las funciones que normalmente se hallan en el núcleo de un sistema operativo. La razón por la que se usan dos modos debe quedar clara. Es necesario proteger al sistema operativo y a las tablas importantes del mismo, tales como los bloques de control de procesos, de las injerencias de los programas de usuario. En el modo del núcleo, el software tiene control completo del procesador y de todas sus instrucciones, registros y memoria. Este nivel de con¬ trol no es necesario y, por seguridad, tampoco conveniente para los programas de usuario.
  • 6.
    Procesos E Hilos Es una ejecución concreta de un programa, con un camino determinado y un valor de sus variables determinados. La unidad mínima de expedición y de asignación de recursos es el proceso.
  • 7.
    Estados en losque puede estar un proceso Listo. Tiene todo lo necesario para ejecutarse excepto el procesador. Suspendido. No está en memoria principal. Bloqueado. Está esperando un evento. Bloqueado y suspendido. Listo y suspendido.
  • 8.
    Tareas e hilos. Unidad mínima de asignación: tarea. Unidad mínima de expedición: hilo. Dos hilos de una misma tarea (denominados hilos pares) comparten el segmento de código, el segmento de datos y un espacio de pila, es decir, los recursos asignados a la tarea. Podemos captar la funcionalidad de los hilos si comparamos el control de múltiples hilos con el control de múltiples procesos. En el caso de los procesos, cada uno opera independientemente de los otros; cada proceso tiene su propio contador de programa, registro de pila, y espacio de direcciones. Este tipo de organización es muy útil cuando los trabajos que los procesos efectúan no tienen ninguna relación entre si. Pero cuando los trabajos a realizar van a necesitar, por ejemplo, la llamada a una misma función o bien, la compartición de una variable en memoria, nos interesará englobarlos en una tarea. Ej: Avion-Torre. Cuando un hilo está en ejecución, posee el acceso a todos los recursos que tiene asignados la tarea.
  • 9.
    Un hilo tendrálo siguiente: Estado. Contexto del procesador. Punto en el que estamos ejecutando, la instrucción concretamente en la que nos hallamos. Es útil a la hora de reanudar un hilo que fue interrumpido con anterioridad, puesto que al guardar el contexto, guardamos la ultima instrucción que ejecutamos, y así podemos conocer por donde tenemos que continuar la ejecución del hilo. Pila de ejecución donde se irá metiendo y sacando instrucciones. (Lugar donde almacenaremos las instrucciones que van a ser ejecutadas). Espacio de almacenamiento estático donde almacenará las variables. Acceso a los recursos de la tarea, que son compartidos por todos los hilos de la tarea. Ventajas del uso de hilos. Se tarda menos tiempo en crear un hilo de una tarea existente que en crear un nuevo proceso. Se tarda menos tiempo en terminar un hilo que en terminar un proceso. Se tarda menos tiempo en cambiar entre dos hilos de una misma tarea que en cambiar entre dos procesos (porque los recursos no cambian, por ejemplo) Es mas sencillo la comunicación (paso de mensajes por ejemplo) entre hilos de una misma tarea que entre diferentes procesos. Cuando se cambia de un proceso a otro, tiene que intervenir el núcleo del sistema operativo para que haya protección. Cuando se cambia de un hilo a otro, puesto que la asignación de recursos es la misma, no hace falta que intervenga el sistema operativo.
  • 10.
    Concurrencia: exclusión mutuay sincronización Los temas fundamentales del diseño de sistemas operativos están relacionados con la gestión de procesos e hilos: • Multiprogramación: consiste en la gestión de varios procesos dentro de un sistema mono-procesador. • Multiprocesamiento: consiste en la gestión de varios procesos, dentro de un sistema multiprocesador. • Procesamiento distribuido: consiste en la gestión de varios procesos, ejecutándose en sistemas de computadores múltiples y distribuidos. La reciente proliferación de las agrupaciones es el principal ejemplo de este tipo de sistemas. La concurrencia es fundamental en todas estas áreas y para el diseño sistemas operativos. La concurrencia comprende un gran número de cuestiones de diseño, incluida la comunicación entre procesos, compartición y competencia por los recursos, sincronización de la ejecución de varios procesos y asignación del tiempo de procesador a los procesos. Se verá que estas cuestiones no solo surgen en entornos de multiprocesadores y proceso distribuido, sino incluso en sistemas multiprogramados con un solo procesador.
  • 11.
    La concurrencia puedepresentarse en tres contextos diferentes • Múltiples aplicaciones: la multiprogramación se creó para permitir que el tiempo de procesador de la máquina fuese compartido dinámicamente entre varias aplicaciones activas. • Aplicaciones estructuradas: como ampliación de los principios del diseño modular y la programación estructurada, algunas aplicaciones pueden implementarse eficazmente como un conjunto de procesos concurrentes. • Estructura del sistema operativo: las mismas ventajas de estructuración son aplicables a los programadores de sistemas y se ha comprobado que algunos sistemas operativos están implementados como un conjunto de procesos o hilos.
  • 12.
    PRINCIPIOS GENERALES DELA CONCURRENCIA En un sistema multiprogramado con un único procesador, los procesos se intercalan en el tiempo aparentando una ejecución simultánea. Aunque no se logra un procesamiento paralelo y produce una sobrecarga en los intercambios de procesos, la ejecución intercalada produce beneficios en la eficiencia del procesamiento y en la estructuración de los programas. La intercalación y la superposición pueden contemplarse como ejemplos de procesamiento concurrente en un sistema monoprocesador, los problemas son consecuencia de la velocidad de ejecución de los procesos que no pueden predecirse y depende de las actividades de otros procesos, de la forma en que el sistema operativo trata las interrupciones surgen las siguientes dificultades: Compartir recursos globales es riesgoso Para el sistema operativo es difícil gestionar la asignación óptima de recursos. Las dificultades anteriores también se presentan en los sistemas multiprocesador. El hecho de compartir recursos ocasiona problemas, por esto es necesario proteger a dichos recursos. Los problemas de concurrencia se producen incluso cuando hay un único procesado
  • 13.
    ALGORITMO DE PETERSON El algoritmo de Deker resuelve el problema de la exclusión mutua pero mediante un programa complejo, difícil de seguir y cuya corrección es difícil de demostrar. Peterson ha desarrollado una solución simple y elegante. Como antes, la variable global señal indica la posición de cada proceso con respecto a la exclusión mutua y la variable global turno resuelve los conflictos de simultaneidad
  • 14.
    MONITORES Losmonitores son estructuras de un lenguaje de programación que ofrecen una funcionalidad equivalente a las de los semáforos pero son más fáciles de controlar. El concepto de monitor fue definido por primera vez en [HOAR 74] . La estructura de monitor se ha implementado en varios lenguajes de programación como: Pascal concurrente, Modulo-2, Java, etc. En concreto, para una lista enlazada se puede necesitar un cierre que bloquee todas las listas enlazadas o bien un cierre por cada elemento de una lista.
  • 15.
    SINCRONIZACION Lacomunicación de un mensaje entre 2 procesos implica cierto nivel de sincronización entre ambos. El receptor no puede recibir un mensaje hasta que sea enviado por otro proceso. Además hace falta especificar que le sucede a un proceso después de ejecutar una primitiva SEND o RECEIVE. Considérese en primer lugar la primitiva send. Cuando se ejecuta una primitiva send en un proceso, hay 2 posibilidades: o bien el proceso emisor se bloquea hasta que recibe el mensaje o no se bloquea. Igualmente cuando un proceso ejecuta una primitiva RECEIVE, existen 2 opciones: 1) Si previamente se ha enviado algún mensaje, este es recibido y continua la ejecución. 2) Si no hay ningún mensaje esperando entonces: a) el proceso se bloquea hasta que llega un mensaje o, b) el proceso continúa ejecutando, abandonando el intento de recepción. El emisor y el receptor pueden ser bloqueantes o no bloqueantes.
  • 16.
    Monitores Sistemas OperativosUn monitor encapsula el código relativo a un recurso compartido en un solo módulo de programa; ventajas: • mantenimiento más simple • menos errores de programación La interfaz del monitor es un conjunto de funciones que representan las diferentes operaciones que pueden hacerse con el recurso La implementación del monitor garantiza la exclusión mutua • mediante semáforos o algún otro mecanismo
  • 17.
    Paso De MensajesSistemas Operativos Paso de mensajes El paso de mensajes es una técnica empleada en programación concurrente para aportar sincronización entre procesos y permitir la exclusión mutua, de manera similar a como se hace con los semáforos, monitores, etc. Su principal característica es que no precisa de memoria compartida, por lo que es muy importante en la programación para sistemas distribuidos. Los elementos principales que intervienen en el paso de mensajes son el proceso que envía, el que recibe y el mensaje.
  • 18.
    Concurrencia E InterbloqueoDeadlock DEADLOCK Los procesos no son ejecutados constantemente desde que se inician hasta que son finalizados. Un proceso puede estar identificado con tres estados diferentes: leyendo (ready), ejecutando (running) o bloqueado (blocked). En el estado de lectura, un proceso está parado, concediendo que otro proceso sea ejecutado; en el estado de ejecución, un proceso está utilizando algún recurso; y en el estado de bloqueo, el proceso está parado y no se ejecutará mientras algo lo restaure. Una condición común no deseable es descripta como deadlock, que es cuando dos procesos están en un estado de ejecución, y requieren intercambiar recursos entre sí para continuar. Ambos procesos están esperando por la liberación del recurso requerido, que nunca será realizada; como no hay ningún resultado, tomará un camino que llevará a un estado de deadlock.