M1 L3 - Procesos e hilos de ejecución PDF

Title M1 L3 - Procesos e hilos de ejecución
Course Algoritmos Concurrentes y Paralelos
Institution Universidad Siglo 21
Pages 5
File Size 342.6 KB
File Type PDF
Total Downloads 55
Total Views 124

Summary

Modulo 1...


Description

Procesos e Hilos de Ejecución

Algoritmos Concurrentes y Paralelos

1. Introducción La programación concurrente requiere que las distintas actividades que formen una determinada aplicación cooperen entre sí para llevar a cabo la tarea para la que fue diseñada tal aplicación. Esta sección revisa los mecanismos de cooperación que pueden utilizarse para implementar una aplicación concurrente.

2. Hilos de ejecución Un hilo o thread es la secuencia más pequeña de instrucciones programadas que un programador puede gestionar de forma independiente. Pueden existir múltiples hilos dentro de un proceso, que se ejecutan simultáneamente y comparten recursos como la memoria, mientras que diferentes procesos no comparten estos recursos (Brito, 2018).

En los casos más sencillos las actividades serán hilos de ejecución. Un hilo de ejecución es cada una de las actividades independientes que pueden ejecutarse simultáneamente (al menos, de manera lógica) dentro de un proceso. En los sistemas operativos modernos los hilos son la unidad de planificación utilizada por el sistema operativo. Es decir, el planificador toma sus decisiones sobre la base del conjunto de hilos de ejecución que se mantengan en estado preparado en cada momento, escogiendo, de entre ellos, al que pasará al estado en ejecución. Cada núcleo (o core) del procesador no podrá tener más de un hilo en ejecución simultáneamente. Los hilos se distinguen de los tradicionales procesos dado que estos son, generalmente, independientes, por cuanto llevan información de estados e interactúan entre ellos, a través de mecanismos de comunicación brindados por el sistema (“Diferencias entre hilos y procesos”, 2014). En contraparte, los hilos usualmente comparten recursos de forma directa. Debido a que muchos sistemas operativos brindan facilidades a los hilos, eso da como resultado el hecho de que sea más rápido cambiar de un hilo a otro dentro del mismo proceso que cambiar de un proceso a otro. Estas facilidades se deben a que los hilos comparten datos y espacios de direcciones y a que los procesos, al ser independientes, no los comparten. Cuando un proceso cambia a otro, el sistema operativo, mediante el denominado dispatcher, genera lo que se conoce como overhead. Ese ovearhead es el tiempo desperdiciado por el procesador para realizar un cambio de contexto (context switch); en este caso, es el tiempo para cambiar del estado de ejecución (running) al estado de espera (waiting) y colocar el nuevo proceso en ejecución. En cambio, en los hilos de ejecución, al pertenecer a un mismo proceso, cuando se realiza un cambio de hilo el tiempo consumido es prácticamente despreciable (Plaza, 2012).

2

Los hilos poseen un estado de ejecución (igual que los procesos) y pueden sincronizarse entre ellos para evitar problemas de compartición de recursos (Trujillo Hacha, s. f.).

Figura 1: Estados de un hilo

Fuente: elaboración propia.

2.1. Cambio de estados de un hilo Las acciones que producen un cambio de estado en los hilos son: 

Creación: el hilo asume este estado en el momento en que se crea un proceso y se crea hilo para ese proceso. Este hilo inicial puede crear otros hilos dentro del mismo proceso, lo cual generará, de esta manera, un puntero de instrucción y argumentos del hilo generado. Cada hilo poseerá su propio contexto y espacio de la columna, para pasar luego al final de los hilos en estado listo (Perez, 2013).



Bloqueo: un hilo adquiere este estado cuando necesita esperar por un suceso, es decir que este se bloquea guardando sus registros de usuario, contador de programa y punteros de pila. De esta manera, el procesador pasará a ejecutar otro hilo que esté al principio de los hilos en estado listo, mientras el anterior permanece en estado bloqueado a la espera (Anecardenasja, 2014).



Desbloqueo: el hilo cambia a este estado cuando ocurre el evento por el cual aquel había quedado en estado bloqueado, para pasar, al final de los hilos, en estado listo.

3



Terminación: cuando un hilo finaliza su ejecución, este libera tanto su contexto como sus columnas (Gutiérrez, 2011).

2.2. Ventajas de los hilos contra procesos Si bien los hilos son generados a partir de la creación de un proceso, podemos decir que un proceso es un hilo de ejecución, conocido como monohilo. Las ventajas de los hilos se dan cuando hablamos de multihilos, que es cuando un proceso tiene múltiples hilos de ejecución, los cuales realizan actividades distintas, que pueden o no ser cooperativas entre sí. Los beneficios de los hilos se derivan de las implicaciones de rendimiento.

3.3. Sincronización de hilos

Una condición de carrera o competencia es un problema que se produce cuando diferentes hilos o procesos acceden a un mismo recurso sin control y, como consecuencia, se alteran los datos que otros también están usando.

Debido a que los hilos de un proceso comparten el mismo espacio de direcciones y otros recursos, cualquier modificación de un recurso desde un hilo afecta al entorno del resto de los hilos del mismo proceso. Por tal motivo, es necesario sincronizar el trabajo de los distintos hilos para que no interfieran unos con otros o corrompan estructuras de datos (Trujillo Hacha, s. f.). La programación multihilo hace que los programas operen con mayor velocidad en sistemas de computadoras con múltiples CPU (computadoras multiprocesador o clusters de computadoras), ya que los hilos de un programa son la forma de fomentar la ejecución concurrente. Es por ello que el programador debe ser cuidadoso para evitar que se presenten condiciones de carrera y otros comportamientos no intuitivos. Los hilos requieren reunirse para procesar los datos en el orden correcto y es posible que los hilos requieran de operaciones atómicas para impedir que los datos compartidos sean cambiados o leídos mientras estén siendo modificados. Para evitar dichas situaciones, usualmente se utilizan los semáforos y no tener esto en cuenta puede llevarnos a un interbloqueo (“Hilos”, s. f.).

4

Referencias Anecardenasja (Nombre de usuario). (2014). Hilos (subprocesos…) [Entrada de blog]. Recuperado de https://chsos20142810011.wordpress.com/2014/10/08/hilossubprocesos/ Brito, R. (2018). Procesadores [Monografía]. Instituto Universitario Politécnico “Santiago Mariño”, Extensión Barcelona, Escuela de Ingeniería de Sistemas Sistemas Operativos II, España. Recuperado de https://es.scribd.com/document/371553312/Monografia-de-Procesadores Diferencias entre hilos y procesos. (2014). [Entrada de blog sin datos de autor]. Recuperado de https://sistemasoper2.wordpress.com/2014/10/21/diferencias-entre-hilosy-procesos/ Gutiérrez, V. H. (2011). “Hilos o subprocesos" (puntos extras) [Entrada de blog]. Recuperado de http://victorggzz.blogspot.com/2011/11/hilos-osubprocesos-puntos-extras.html Hilos. (s. f.). [Entrada de blog sin datos de autor]. Recuperado de https://edwardlozadaso.wordpress.com/hilos/ Perez, A. (2013). Procesos cooperativos, hilos y planificación de CPU [Entrada de blog]. Recuperado de https://chsos20132912059.wordpress.com/2013/10/15/procesoscooperativos/ Plaza, M. (2012). Procesos y subprocesos [Entrada de blog] . Recuperado de http://ingenieriasistemaunefa.blogspot.com/2012/01/procesos-ysubprocesos.html Trujillo Hacha, F. (s. f.). Gestión de hilos de ejecución. En Autor, Análisis arquitectural y funcional de la máquina virtual en la plataforma J2ME (Pp. 221-265) (Proyecto fin de carrera). Universidad de Sevilla, Escuela Superior de Ingenieros, Departamento de Ingeniería de Sistemas y Automática, Área de Telemática, España. Recuperado de http://bibing.us.es/proyectos/abreproy/11320/fichero/Capitulos%252F13. pdf

5...


Similar Free PDFs