Es importante el concepto de proceso para entender cómo funcionan los sistemas operativos. Un proceso consiste, esencialmente, en una rutina de acciones del sistema que puede ser ejecutada independientemente de otro proceso e, incluso, en paralelo. Un programa de usuario en ejecución puede considerarse un proceso, aunque un proceso puede involucrar la ejecución de más de un programa y, recíprocamente, un programa o rutina de instrucciones puede estar involucrado en más de un proceso. Por esta razón es más útil el concepto de proceso que el de programa al referirnos al sistema operativo.
Todo proceso creado puede ser tratado como un seudorrecurso pues, al contrario que los recursos reales, los procesos son entidades efímeras que desaparecen una vez completada su misión. Podría argüirse que los procesos son consumidores de recursos en lugar de ser recursos por sí mismos; sin embargo, una vez que han entrado en el estado transitorio de ser procesos, pueden ser "manejados" por otros procesos.
La gestión de procesos es una tarea fundamental de los sistemas operativos; concretamente, la mayoría de los sistemas operativos deben soportar la ejecución concurrente de procesos y resolver los problemas que ésta plantea, ofreciendo medios para la sincronización de los procesos, controlando su exclusión mutua respecto de ciertos recursos, y evitando, en la medida de lo posible, las situaciones de bloqueo. Estos conceptos se explican a continuación.
Dos o más procesos se dicen concurrentes cuando se están ejecutando simultáneamente. Cuando existen más procesadores que procesos, cada proceso se ejecutará sin conflicto en un procesador (paralelismo); si, por el contrario, existen más procesos que procesadores puede obtenerse una "simultaneidad aparente" (concurrencia) haciendo que los procesadores alternen cortos períodos de tiempo de dedicación a los distintos procesos.
Si dos procesos concurrentes utilizan recursos distintos podrán convivir sin interferencias pero si, por el contrario, los procesos necesitan los mismos recursos puede surgir con°icto. Supóngase que ambos recursos pretenden acceder a una impresora: es absolutamente inviable conmutar la dedicación de la impresora entre ambos procesos ya que, en ese caso, el resultado sería caótico. Este es un caso típico de necesidad de exclusión mutua de dos procesos respecto a un recurso.
Dos procesos concurrentes pueden necesitar cooperar al realizar sus tareas; por ejemplo, un proceso que genera líneas de texto que envía a un bffer y otro que las consume, tomándolas del buffer de datos y enviándolas a la impresora. Cuando así ocurre, es necesario que exista una sincronización de ambos procesos.
Por último, puede darse la circunstancia de que dos (o más) procesos en ejecución concurrente se bloqueen mutuamente, en el sentido de que cada uno de ellos necesita un recurso que el otro posee. Llegados a este punto la ejecución se detiene, ya que cada proceso espera que el otro libere la información (o el recurso) que necesita. Esta situación se llama bloqueo (en inglés deadlock).
No hay comentarios:
Publicar un comentario