Ensayo Topicos

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 6

INSTITUTO TECNOLÓGICO SUPERIOR DE HUETAMO

INGENIERÍA EN SISTEMAS COMPUTACIONALES

CUARTO SEMESTRE

TÓPICOS AVANZADOS DE PROGRAMACIÓN

ENSAYO

UNIDAD 3

HILOS Y MULTIHILOS

En sistemas operativos y programación, un hilo es proceso ligero o subproceso, una


secuencia de tareas encadenadas muy pequeña que puede ser ejecutada por un
sistema operativo. Un hilo es un único flujo de ejecución dentro de un proceso. Un
proceso es un programa en ejecución dentro de su propio espacio de direcciones.
Por lo tanto, un hilo es una secuencia de código en ejecución dentro del contexto de
un proceso, esto debido a que los hilos no pueden ejecutarse solos, requieren la
supervisión de un proceso. Los hilos pueden ser también multihilos ya que también
existe la forma de hacer dos procesos simultáneamente.

Un hilo es la menor de las estructuras lógicas de programación que se ejecuta de


forma secuencial por parte del planificador del sistema operativo, la forma
secuencial no quiere decir que no haya bucles, solo que es una línea secuencial de
ejecución: una sentencia después de otra. Los hilos son más ligeros que los
procesos ya que muchos de los recursos que es necesario reservar para lanzar y
ejecutar un proceso, son compartidos entre distintos hilos dentro de un mismo
proceso. Los hilos existían como recurso de programación desde mucho tiempo
antes de que empezaran a hacerse comunes los procesadores de varios núcleos.
Pero no nacieron como forma de acelerar la ejecución de los programas, sino como
forma de simplificar la forma en la que se diseñaban los programas más complejos.
Así, cuando se necesita que un programa ejecute diversas funciones
dando la sensación de que todas ellas se ejecutan casi de forma instantánea, lo que
hace es dividir la ejecución en distintos hilos relativamente simples, cada uno con
una función claramente definida. Luego se deja que sea el planificador del sistema
el que vaya ejecutando un trocito de código de cada hilo, y conmute entre uno y otro
hilo dentro del mismo proceso para obtener la sensación de que las diversas
funciones del programa se ejecutan a la vez.

Con un hilo se ahorra la mayoría del esfuerzo, el programa ya se encuentra en


memoria, aunque sea virtual, ya se le ha asignado memoria y está inicializada.

Podría decirse entonces que un hilo es una forma simplificada de proceso y,


probablemente, la rutina del sistema operativo que se encarga de crear uno y otro
sea exactamente la misma.

También están los multihilos estos contienen dos o más partes que se pueden
ejecutar simultáneamente. Cada parte de dicho programa se denomina hilo y cada
hilo define una ruta de ejecución independiente. Por lo tanto, multihilo es una forma
especializada de multitarea. La ventaja principal del multihilo es que le permite
escribir programas muy eficientes porque le permite utilizar el tiempo de inactividad
que está presente en la mayoría de los programas. Como probablemente sepa, la
mayoría de los dispositivos de E/S, ya sean puertos de red, unidades de disco o el
teclado, son mucho más lentos que la CPU. Por lo tanto, un programa a menudo
pasará la mayor parte de su tiempo de ejecución esperando para enviar o recibir
información hacia o desde un dispositivo.

Al usar multihilo, tu programa puede ejecutar otra tarea durante este tiempo de
inactividad. Por ejemplo, mientras una parte de tu programa está enviando un
archivo a través de Internet, otra parte puede leer la entrada del teclado, y otra puede
almacenar el siguiente bloque de datos para enviar.
Por lo tanto, en un sistema de núcleo único, dos o más hilos no se
ejecutan al mismo tiempo, pero se utiliza el tiempo de CPU inactivo. Sin embargo,
en sistemas multiprocesador/multinúcleo, es posible que dos o más hilos se
ejecuten de manera simultánea. En muchos casos, esto puede mejorar aún más la
eficiencia del programa y aumentar la velocidad de ciertas operaciones.

Sin embargo, un programa multihilo mal hecho puede dar lugar problemas como:
Interbloqueo este se produce cuando las peticiones y las esperas se entrelazan de
forma que ningún proceso puede avanzar. También puede ocurrir inanición esto se
refiere a que ningún proceso consigue hacer ninguna tarea útil y por lo tanto hay
que esperar a que el administrador del sistema detecte el interbloqueo y mate
procesos, o hasta que alguien reinicie el equipo.

Ahora hablemos de la concurrencia es, en esencia, el poder realizar múltiples cosas


en el mismo tiempo, pero, no específicamente en paralelo. En lo que se refiere a
temas de concurrencia en programación, hay dos aspectos importantes en general:
poder detectar y responder a los sucesos externos que se producen en un orden
aleatorio y garantizar que estos sucesos se responden en un intervalo requerido
mínimo.

Si cada actividad concurrente evolucionase de manera independiente, de forma


totalmente paralela, esto sería relativamente sencillo: podríamos limitarnos a crear
programas separados para gestionar cada actividad. Los retos de diseñar sistemas
concurrentes derivan principalmente de las interacciones que se producen entre
actividades concurrentes. Cuando las actividades concurrentes interactúan, es
necesario algún tipo de coordinación. La realización de tareas en paralelo puede
aumentar sustancialmente la velocidad del trabajo informático de un sistema si hay
varias CPU disponibles. Incluso cuando se trata de un solo procesador, el proceso
de tareas puede acelerar considerablemente las tareas, ya que impide que una
actividad bloquee a otra mientras espera a que se realice la E/S. Es frecuente que
esto suceda durante el arranque de un sistema. La realización de
estas operaciones de manera secuencial puede ser extremadamente lenta.

La concurrencia también puede mejorar la capacidad de control del sistema. Por


ejemplo, una función concurrente puede iniciar, detener o influir de otra manera a
otra función en medio de una corriente, algo que es muy difícil de conseguir sin
componentes concurrentes.

Conclusión.

Los hilos son pequeños procesos de ejecución de código por partes secuenciales,
estos deben esperar a que termine la ejecución de uno para que pueda ejecutarse
otro o hacer alguna otra función en el programa. Mientras que los multihilos nos
permiten la ejecución de varios procesos de ejecución a la vez, agilizando la tarea
a realizar, pero estos deben tener una estructura y definición correcta ya que de no
ser así estos pueden causar prejuicios en lugar de acelerar la tarea. Todos los hilos
comparten el mismo espacio de direcciones y otros recursos como pueden ser
archivos abiertos. Cualquier modificación de un recurso desde un hilo afecta al
entorno del resto de los hilos del mismo proceso. Por lo tanto, es necesario
sincronizar la actividad de los distintos hilos para que no interfieran unos con otros
o corrompan estructuras de datos.

Bibliografías:

Sierra Katy, Bates Bert

SCJP Sun Certified Programmer for Java 6 Study Guide

Mc Graw Hill

Deitel Paul, Deitel Harvey.

Como programar en Java


Séptima Edición.

México

Pearson Educación, 2008

Martín, Antonio

Programador Certificado Java 2.

Segunda Edición.

México

Alfaomega Grupo Editor, 2008

Dean John, Dean Raymond. Introducción

a la programación con Java

Primera Edición.

México

Mc Graw Hill, 2009

También podría gustarte