background preloader

POSIX

Facebook Twitter

Threads. Introducción Teórica : Definición de Proceso : Es todo programa en ejecución. Posee un contexto asociado, (estado de registros, banderas, pilas, etc.). El contexto, posee toda la información que define el estado del proceso en un momento determinado. Para poder lograr que una computadora ejecute varios procesos, utilizo el contexto.

El Context Switching, es a su vez manejado por el Scheduler. Los procesos utilizan este “time slice” para la ejecución, y lo cierran por tres posibles razones: n Conclusión del “time Slice” asignado por el Scheduler. n Ejecución de una operación de Entrada/Salida por parte del mismo proceso. n Proceso en espera de interacción con otro proceso. Diagrama de Estados de un Proceso : El proceso de Scheduling, (Scheduler), maneja 3 colas. Definición de Threads : Ventajas y Desventajas de su Uso : Entre las ventajas se cuentan: n Toma menos tiempo la creación de nuevos threads que de nuevos procesos. n También toma menos tiempo cerrar un thread que un proceso. th = handler. POSIX Threads. POSIX Threads, Hilos o Hebras Objetivos: Aprender conceptos básicos sobre Hilos, Experimentar los llamados a hilos de POSIX.

POSIX significa ortable perating ystem nterface (for nix). Es un estándar orientado a facilitar la creación de aplicaciones aplicaciones confiables y portables. La mayoría de las versiones populares de UNIX ( Linux, Mac OS X) están cumpliendo este estándar en gran medida. Vimos que un método para lograr paralelismo es crear múltiple procesos y cooperar sincronizadamente usando mecanismos de compartición de memoria. Motivación: Monitoreo de descriptores de archivo Como vimos con el uso de select, si requerimos monitorear varios descriptores de archivo tenemos varias opciones que hemos visto a la fecha: Crear un proceso separado para monitorear cada descriptor. Hacer uso de select Hacer uso de poll Ahora veremos un nuevo método, crear hilos separados para monitorear cada hilo. Comparación proceso/hilo Un proceso es una instancia de un programa que se está ejecutando. Algunos detalles sobre los Threads.

Algunos detalles sobre los Threads Cómo hacer que un hilo espere a que termine otro Vamos a hacer un ejemplo de código en el que un hilo espera a que termine otro y recoge el valor que este le devuelve.

Algunos detalles sobre los Threads

Cualquier hilo puede esperar por cualquier otro hilo, no necesariamente tiene que ser el hilo padre el que espere por el hijo. En el ejemplo el hilo padre espera por el hijo, así que en el texto se seguirá esa convención. A veces es necesario hacer que un hilo espere a otro/s hilo/s. Hay hilos a los que el sistema libera automáticamente todos sus recursos cuando terminan. Si ponemos los atributos de creación a NULL, el hilo es por defecto "esperable". Los atributos de un hilo son de tipo pthread_attr_t. Pthread_attr_t atributos; ... Ahora podemos cambiar cualquiera de los campos de esta estructura con funciones específicas para ello.

Pthread_attr_setdetachstate (&atributos, PTHREAD_CREATE_JOINABLE); pthread_exit ((void *)"Ya tá"); La función pthread_join() admite dos parámetros. Threads en Linux. Artículo en construcción!

Threads en Linux

Introducción Los threads son un concepto fundamental en lo que se conoce como "programación concurrente". En este artículo trato de explicar algo sobre el tema, especialmente su uso desde el lenguaje C (o C++). La siguiente sección se dedica principalmente a la historia del tema en Linux, para cuestiones más concretas se puede ir directamente a la API. Este artículo acaba de empezar, y todavía está incompleto, lo estoy escribiendo ahora! El hilo histórico Repasemos primero un poco lo que son los procesos.

Qué archivos están abiertos. O sea, al salto se le suma el intercambio de información de contexto.