En este capítulo conoceremos las características de un proceso y su ejecución por el sistema operativo. Los estados de un proceso y la gestión que hace Linux. Crearemos procesos en Java (clases Java para crear procesos) y C#. Crearemos procesos en Linux mediante lenguaje C.
Conoceremos las características y diferencias entre la programación concurrente, la paralela y la distribuida. Veremos la ejecución de tareas en paralelo con PVM (Máquina Virtual Paralela). Desarrollaremos programas que ejecuten tareas en paralelo.
La librería PVM nos permitirá simular un marco de computación concurrente, distribuido y de proposito general. Es decir emular un conjunto de ordenadores hetereogéneos (Unix / Windows) y en distintas redes, de manera que tengamos un gran ordenador en paralaelo de alto rendimiento. Aprovechamos de esta forma la potencia y memoria de muchos ordenadores.
Los sistemas operativos monoprocesos como era el MS-DOS sólo podían ejecutar una tarea a la vez, hoy en día los sistemas son multiproceso (o multitarea) ya que pueden ejecutar más de un proceso a la vez. O mejor dicho dan la sensación de que un programa es el único que se está ejecutando. Hay que tener en cuenta que para ejecutar varios procesos a la vez, de forma real, la única forma es tener varias CPUs (en una máquina o distintas máquinas).
Con una única CPU el efecto multiproceso sólo se consigue haciendo una cambio tan rápido de una tarea a otra, de forma que al usuario le de la sensación que tiene una dedicación exclusiva del recurso del sistema.
La PROGRAMACIÓN MULTIPROCESO tiene en cuenta la posibilidad de que múltiples PROCESOS puedan estar ejecutándose “simultáneamente” sobre el mismo código de programa. Es decir, desde una misma aplicación podemos realizar varias tareas de forma simultánea, dividiendo el proceso en varios subprocesos.
PROGRAMA: código + datos, almacenado en soporte digital que resuelve una necesidad concreta.
PROCESO: cuando un programa se ejecuta, es decir un programa en ejecución (código + datos + contador de progrma, imagen de memoria + estado de procesador + etc.)
Los procesos son entidades independientes aunque ejecuten el mismo programa, es decir, podemos encontrarnos dos procesos que sean el mismo programa pero cada uno con su imagen de memoria, contador de programa o datos independientes.
EJECUTABLE: contiene la información necesaria para CREAR un proceso, es decir, ejecutable es el fichero que permite poner el programa en jecucución y convertirlo en proceso.
Sistema Operativo: programa que hace de intermediario entre el usuario y las aplicaciones que utilizan los recursos del ordenador.
Ejecutan programas de usuario.
Interfaz entre usuario y recursos del ordenador.
Utilización eficiente de los recursos del ordendor. Memoria, CPU, Interface de E/S, …
DEMONIO / SERVICIO: proceso NO interactivo que está ejecutándose continuamente en el ordenador en segundo plano, es decir es un PROCESO controlado por el sistema sin intermediación del usuario.
El proceso nulo del sistema, el recolector de basura de Java (garbage collector), o un servidor web, son ejemplos de demonios / servicios.