Please enable JavaScript.
Coggle requires JavaScript to display documents.
Modelos de programación paralela POSIX - Coggle Diagram
Modelos de programación paralela POSIX
Procesos
Componentes del espacio de direcciones
Código.
Datos inicializados o no inicializados.
Datos en tiempo de ejecución.
Estado de CPU(listo, ejecución, interrupción).
Apuntador de pila.
ID de proceso, ID de usuario y ID de grupo.
Apuntador de instrucción.
Conjunto de datos de los registros de propósito general.
Abstracción de la ejecución de un programa en una lista de instrucciones.
Requiere un espacio de direcciones, un estado del CPU y recursos del sistema operativo.
Aislamiento entre procesos permitiendo la ejecución de varios procesos sincronizados
Hilos
Pueden contener uno o más procesos con el mismo espacio de memoria y recursos del sistema operativo para compartir datos entre ellos.
Separan los componentes fundamentales de un proceso en diferentes entidades, además brindan concurrencia y paralelismo a los procesos y tareas.
Comparten el espacio de direcciones y los recursos del sistema operativo de un proceso,permitir diferentes flujos de instrucciones.
Los procesos multihilos permiten el aislamiento de los procesos al contar con su pila privada y un estado del CPU propio.
Ejecutan el mismo programa que los procesos pero en un orden similar o completamente diferente.
Hilos POSIX
Para los sistemas UNIX, se ha especificado una interfaz de programación estandarizada por el Estándar
IEEE POSIX 1003.1c
Se definen como un conjunto de tipos y llamadas de procedimientos en leguaje de programación C que siguen el estándar POSIX.
Cuentan con pila privada en tiempo de ejecución con variables locales dentro de sus funciones y variables globales accesibles para todos los hilos
Clases principales
Manejo de hilos: Trabajo directo con hilos, Creación, separación de datos, uniones, etc., e incluye funciones de asignación y consulta de atributos de hilo
Mutex: El nombres de debe e la abreviación de "exclusión mutua", proveen la creación, destrucción, bloqueo y desbloqueo de Mutex con todo y funciones de asignación o modificación de atributos Mutex.
Variables de condición: Son aquellas funciones que permiten la comunicación entre hilos que comparten un Mutex, contienen las funciones de crear, destruir, espera y señalización sobre valores de variables específico
Funcionalidades básicas de POSIX
Compilación:Se requiere el archivo de cabecera en los archivos pues de lo contrario, la bandera de seguridad de hilo se activará, inicialmente nuestro programa principal comprende de un hilo por defecto, todos los demás deben ser explícitamente creados por el programador
Ejecución: A menos que utilicemos los hilos P para la organización del mecanismo, hasta la implementación y/o que el sistema operativo decida dónde y cuando los hilos serán ejecutados, los programas robustos no dependen de la ejecución específica de un hilo.
Finalización: Para salir explícitamente de un hilo utilizamos el comando pthread_exit, típicamente la rutina de salida es llamada después de cada hilo completó su trabajo y no se requiere mas su existencia, si el main() termina antes de que los hilos sean creados y existe una salida de hilos, los otros hilos continuarán ejecutándose, de lo contrario se terminarán automáticamente cuando el main() finalice.
Paso de argumentos: La rutina de creación de un hilo permite al programador el paso de un argumento al iniciar la rutina de inicio del hilo, para casos donde se requiere el paso de múltiples argumentos creamos una estructura que contenga todos los argumentos, entonces pasamos un apuntador hacia la estructura en la rutina de creación del hilo, todos los argumentos deberán pasarse e manera referenciada y casteada a vacío
Rutinas diversas: Para utilizar rutinas diversas, usamos los comando pthread_self() para devolver un único ID de hilo asignado por el sistema en una llamada de hilo, para comparar dos hilos utilizamos pthread_equal(thread 1, thread 2) si los ID son diferente de 0 son retornados, de los contrario un valor no cero es retornado.
Unión: es la manera de completar la sincronización entre hilos, la función pthread_join() usa los bloques de subrutina para llamar al hilo hasta que sus acciones sean finalizadas, el programador el capaz de obtener el objetivo del estado de conclusión de los hilos si se llamó específicamente con la salida de hilo, un error lógico es intentar la uniones simultáneas en el mismo hilo de destino.
Creación de hilos: con el comando pthread_create y serán ejecutables, esta rutina puede ser llamada varias veces desde cualquier lugar en nuestro código, los argumentos necesarios para son el thread un objeto opaco único identificado por e nuevo hilo regresado por la subrutina, attr un atributo de objeto opaco usado en un conjunto de atributos que es posible especificar los atributos o nulo por defecto, el start_routine es la rutina de C que el hilo ejecutará una vez creado y el arg un único argumento que puede ser pasado a un start_routine y referenciarse como un puntero casteado a tipo void si no deseamos el paso de este argumento se utiliza NULL.