Proceso
Es un programa en memoria (virtual), que puede estar en ejecución, o listo para usarse. Este consta de código, datos, stack y un contador de programa (apuntador). Puede estar en cinco estados: Nuevo, Listo, Ejecución, Bloqueado y Salida. Además, para poder implementarlo se necesita un PCB (Process Control Block), el cual es una estrcutura de datos que contiene información asociada a cada proceso.
Planificación de los procesos
Se refiere al proceso mediante el cual el sistema operativo decide cuándo y durante cuánto tiempo cada proceso en ejecución obtiene acceso a la CPU. Esta panificación se da entre los cinco estados en los cuales puede estar un proceso, pero sobre todo entre el estado Listo y el estado Ejecución. Esta planificación implica la toma de decisiones por parte del sistema operativo para determinar qué proceso se ejecutará a continuación, cuánto tiempo se le asignará la CPU y en qué orden se ejecutarán los procesos en la cola de espera (cola de procesos). Este proceso tiene componentes clave que determinan cómo se asigna la CPU a los procesos y de los cuales existen dos tipos:
Planificador a corto plazo: Toma decisiones rápidas y frecuentes, eligiendo el proceso más adecuado para ejecutarse en ese momento.
Planificador a largo plazo: Es responsable de la admisión de nuevos procesos al sistema , decide cuándo un proceso se mueve desde el estado "nuevo" al estado de "listo" en el sistema. Toma decisiones menos frecuentes y se enfoca en la planificación a largo plazo de la carga de trabajo del sistema.
Operaciones en proceso
Se refieren a las acciones o tareas que un proceso lleva a cabo durante su ejecución en un sistema operativo. Las más importantes son las siguiente:
Creación de procesos: Un proceso que crea otro proceso en el cual se crea una relación padre e hijo. Estos hijos pueden creas otros procesos y formar un árbol de procesos. Esto se hace mediante la llamada al sistema fork(). En esta llamada al sistema el padre e hijo se ejecutan concurrentemente.
Fork():
Los procesos solo comparten el código.
Solo tienen permisos de lectura y ejecución.
Cada proceso tiene sus segmentos de datos y stack.
No se comparten variables locales ni globales.
No se comparten recursos como archivos, dispositivos, etc.
Procesos cooperantes
Son procesos que pueden afectarse o ser afectados por la ejecución de otros procesos. Tienen como ventajas el intercambio de información, la velocidad de computación y la modularidad. Estos procesos interactúan y colaboran de manera voluntaria y coordinada para lograr un objetivo común o realizar una tarea conjunta. Estos procesos comparten información y recursos de manera efectiva y se comunican entre sí para lograr una tarea específica.
Comunicación entre procesos
Se refiere a los mecanismos y técnicas utilizados en sistemas informáticos para permitir que los procesos se comuniquen y compartan información entre sí.
Entre estas formas se incluyen:
Señales: Son notificaciones que un proceso puede enviar a otro para indicar eventos o solicitar una respuesta.
Memoria compartida: Permite que varios procesos accedan a una región de memoria compartida, lo que les permite intercambiar datos de manera eficiente.
Sistema de mensajes: Mecanismo por medio de Unix que permite a los programas realizar el intercambio de información y la sincronización, por medio de un buzón para el envío y recepción de información entre procesos.