2. Programas y procesos de computación Un programa software, es un artefacto construido por un desarrollador de software, utilizando algún lenguaje de programación Cuando un programa se ejecuta en un compilador se representa como un proceso
3. Transiciones de estado de los procesos En ejecución – el ocupa la CPU, se esta ejecutando Listo o preparado – dispone de todos los recursos Bloqueado – falta recursos para seguir ejecutándose Solamente puede haber un proceso en ejecución a la vez, pero pueden existir varios listos y varios pueden estar bloqueados
7. PROGRAMACION CONCURRENTE La computación distribuida supone el uso de programación concurrente, que consiste en la ejecución simultanea de procesos Hay tres tipos: Procesos concurrentes ejecutados en múltiples computadores Procesos concurrentes ejecutados en un solo computador Programación concurrente dentro de un proceso
8. Procesos concurrentes ejecutados en múltiples computadores. Son procesos separados ejecutándose concurrentemente en computadoras independientes interconectados a través de una red. Interactúan con otros procesos mediante el intercambio de datos sobre la red, pero su ejecución es completamente independiente La programación concurrente, que implica a múltiples máquinas requiere de determinado soporte de programación.
9. Procesos concurrentes ejecutados en un único computador La concurrencia puede ser real o virtual La concurrencia multitarea solo es posible si el computador tiene múltiples CPU, de manera que cada CPU pueda ejecutar un proceso Se utiliza tiempo compartido, lo que permite que los procesos puedan ejecutarse por turnos, creando una ilusión que se ejecutan en paralelo No se necesita una programación especial, para llevar a cabo este tipo de programación.
10. Programación concurrente dentro de un proceso Además de la programación concurrente entre diferentes procesos, muchas veces un único programa necesita iniciar diferentes tareas que se ejecuten concurrentemente. También se podrá necesitar que se ejecute varias tareas en paralelo por motivo de rendimiento.
11. La programación concurrente dentro de un proceso se lleva a cabo a través de dos tipos de herramientas, proporcionadas por el sistema operativo: Procesos padres e hijos Threads o hilos
12. Procesos padres e hijos En tiempo de ejecución, un proceso puede crear procesos subordinados o procesos hijos. A través de la multitarea real o virtual, el proceso original, denominado proceso padre, continua ejecutándose simultáneamente con el proceso hijo. Un proceso hijo es un proceso completo que consiste en un programa en ejecución, con valores propios información de estado, que hereda del proceso padre.
13. Un proceso padre puede saber cuando un proceso hijo ha finalizado. http://www.unach.edu.ec/Virtualizacion/Sistemas_Operativos/paginas/Unidad8.gif
14. Threads o hilos En vez de procesos hijos, un proceso crear threads o hilos, también conocidos como procesos ligeros Los hilos poseen una mínima información de estado, comportándose por lo demás de la misma forma que los procesos Debido a que implican menos sobrecarga, es preferible utilizar hilos procesos hijos
15. El software correspondiente al programa debe escribirse con la lógica necesaria para la creación de hilos y la coordinación o sincronización de la ejecución de la familia de hilos creados por el hilo padre.