El modelo de procesos
El CPU alterna entre los procesos. Esta alternancia se llama multiprogramación. En este modelo, todo el software ejecutable de la computadora se organiza en varios procesos secuenciales. Un proceso es un programa en ejecución, lo que incluye los valores activos del contador, registros y variables del programa.
La diferencia entre un proceso y un programa es que: un proceso es una actividad de cierto tipo. Tiene un programa, entrada, salida y estado. Un solo procesador puede ser compartido entre varios procesos, con cierto algoritmo de planificación, que se utiliza para determinar cuándo detener el trabajo en un proceso y dar servicio a otro distinto.
El modelo de los procesos
Un proceso es tan solo un programa en ejecución, lo que incluye los valores activos del contador, registros y variables del programa. De esta manera conceptual, cada proceso tiene su propia CPU virtual. La realidad es que la CPU real alterna entre los procesos, Esta rápida alternación se llama Multiprogramacion. La diferencia entre un proceso y un programa es sutil pero crucial. Suponiendo que un científico esta cocinando un pastel, debe seguir una serie de pasos. En esta analogía la receta es el programa, el cocinero es el procesador y todos los pasos que el cocinero hace hasta llegar al pastel ya hecho seria el proceso.
Jerarquías de procesos
En los sistemas mas sencillos todos los procesos que podrían ser necesarios en algún momento pueden estar presentes durante la iniciación del sistema. Sin embargo, en la mayoría de los sistemas, es necesaria una forma de crear y destruir procesos.
En MS-DOS, existe una llamada al sistema que carga un archivo binario dado en la memoria y lo ejecuta como un proceso hijo, de forma que este y el proceso padre no se ejecuten en paralelo.
Estados de un proceso
Aunque cada proceso es independiente, con su propio contador de programa y estado interno, es frecuente que los procesos deban interactuar con otros. Un proceso podría generar cierta salida que fuera utilizada por otro. Podría pasar que un programa esté listo para ejecutarse, pero no hubieran datos esperando por él, en éste caso el programa debe bloquearse hasta disponer de esos datos.