0% encontró este documento útil (0 votos)
165 vistas12 páginas

Diferencias entre Proceso y Thread

El documento explica las diferencias entre procesos, hilos y multithreading. Un proceso es un programa en ejecución, mientras que un hilo es un flujo de ejecución dentro de un proceso. Multithreading permite la ejecución concurrente de múltiples hilos para mejorar el rendimiento. Los hilos comparten recursos como memoria, pero cada hilo tiene su propio contador de programa y pila. El documento también describe cómo crear e implementar hilos en Java.

Cargado por

The Dark Angel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
165 vistas12 páginas

Diferencias entre Proceso y Thread

El documento explica las diferencias entre procesos, hilos y multithreading. Un proceso es un programa en ejecución, mientras que un hilo es un flujo de ejecución dentro de un proceso. Multithreading permite la ejecución concurrente de múltiples hilos para mejorar el rendimiento. Los hilos comparten recursos como memoria, pero cada hilo tiene su propio contador de programa y pila. El documento también describe cómo crear e implementar hilos en Java.

Cargado por

The Dark Angel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Instituto Tecnológico Superior


Purhépecha

Alumnos(as): José Ángel Gallardo Trejo (1903009), Angel


Luis Ambrocio Sixtos
Grupo: 5 A

Materia: Sistemas operativos

Tema 2: Administración de procesos y del procesador

Actividad 2: Diferencias fundamentales y específicas de


proceso, thread y multi-thread.

Profesora: Mtra. Brenda Liliana Guillén Rodríguez

05/Octubre /2021
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Proceso, thread y multi-thread.

Un Proceso es algo que te resulta bastante familiar. Si lanzas Microsoft Word y VFP,

entonces tienes dos procesos separados que están corriendo al mismo tiempo, aunque
sólo tengas una CPU. El sistema operativo asigna tiempo a cada uno de los procesos y
pasa de uno a otro según le interesa. En un sistema multitarea no-preventivo (una tarea
es sinónimo de un proceso) tal como Windows 3.1, un proceso puede paralizar la
ejecución de otro proceso, pues el sistema operativo pasa un mensaje a cada proceso y
este lo interpreta,

mientras un proceso interpreta un mensaje los demás procesos están detenidos Aunque
los procesos constituyen el bloque básico en la implementación de sistemas distribuidos,
la práctica muestra que el plantear la granularidad (división) de un sistema distribuido en
diferentes procesos, tal como lo establecen los sistemas operativos en los que se
construyen los sistemas distribuidos, no es suficiente. Resulta que plantear una
granularidad más fina en la forma de threads múltiples de control por proceso, hace más
fácil desarrollar aplicaciones distribuidas y obtener un mejor desempeño.

Thread

Una thread es un único flujo de control dentro de un programa. Algunas veces es llamado
contexto de ejecución porque cada thread debe tener sus propios recursos, como el
program counter y el stack de ejecución, como el contexto de ejecución. Sin embargo,
toda thread en un programa aún comparte muchos recursos, tales como espacio de
memoria y archivos abiertos. Threads también son llamadas procesos livianos (lightweight
process).

Thread Paralelas y Concurrentes

Cuando dos threads corren en paralelo, ambas están siendo corridas al mismo tiempo en
diferentes CPUs. Dos thread concurrentes están en progreso, o intentando de obtener
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

tiempo de ejecución de la CPU al mismo tiempo, pero no necesariamente están corriendo


en forma simultánea en dos CPUs diferentes.

Creación y ejecución de Threads

Hay dos formas de hacer una tarea correr concurrentemente con otra: crear una nueva
clase como subclase de la clase Thread o declarar una clase e implementar la interfaz
Runnable.

Uso de Subclase: Cuando se crea una subclase de Thread, la subclase debería definir
su propio método run () para sobre montar el método run () de la clase Thread. La tarea
concurrente es desarrollada en este método run ().

Ejecución del método run (): Una instancia de la subclase es creada con new, luego
llamamos al método start () de la thread para hacer que la máquina virtual Java ejecute el
método run (). Ojo para iniciar la concurrencia invocamos a start (), así invocamos a run ()
en forma indirecta. Si invocamos a run () directamente, se comportará como el llamado a
cualquier método llamado dentro de un mismo hilo (sin crear uno independiente).

Implementación de la Interfaz Runnable: La interfaz Runnable requiere que sólo un


método sea implementado, el método run (). Primero creamos una instancia de esta clase
con new, luego creamos una instancia de Thread con otra sentencia new y usamos el
objeto recién creado en el constructor. Finalmente, llamamos el método start () de la
instancia de Thread para iniciar la tarea definida en el método run ().

Ciclo de Vida de una Thread

Cada hilo, después de su creación y antes de su fin, estará en uno de cuatro estados:
recién creada, "corrible", bloqueada, o muerta.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Recién creada (New thread): entra aquí inmediatamente después de su creación. Es


decir, luego del llamado a new. En este estado los datos locales son ubicados e iniciados.
Luego de la invocación a start (), el hilo pasa al estado "corrible".

Corrible (Runnable): Aquí el contexto de ejecución existe y el hilo puede ocupar la CPU
en cualquier momento. Este estado puede subdividirse en dos: Corriendo y encolado. La
transición entre estos dos estados es manejada por le itinerador de la máquina virtual.

Bloqueada (not Runnable): Se ingresa cuando: se invoca suspend (), el hilo invoca el
método wait () de algún objeto, el hilo invoca sleep (), el hilo espera por alguna operación
de I/O, o el hilo invoca join () de otro hilo para espera por su término. El hilo vuelve al
estado Corrible cuando el evento por que espera ocurre.

Muerta (Dead): Se llega a este estado cuando el hilo termina su ejecución (concluye el
método run) o es detenida por otro hilo llamando al su método stop (). Esta última acción

Multithreading

El subprocesamiento múltiple en Java es un proceso de ejecución de dos o más


subprocesos simultáneamente para una utilización máxima de la CPU.

Las aplicaciones multiproceso son donde dos o más hilos se ejecutan simultáneamente;
por lo tanto, también se conoce como Concurrencia en Java. Esta multitarea está hecha,
cuando múltiples procesos comparten recursos comunes como CPU, memoria, etc.

Cada hilo se ejecuta en paralelo el uno al otro. Los subprocesos no asignan área de
memoria separada; por lo tanto, ahorra memoria. Además, el cambio de contexto entre
hilos lleva menos tiempo. no es recomendada.

Ventajas de multihilo:

 Los usuarios no están bloqueados porque los hilos son independientes, y


podemos realizar varias operaciones a veces
 Como tal, los hilos son independientes, los otros hilos no se verán afectados si un
hilo cumple una excepción.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha


TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Ejemplo en java:

Clase principal Hilo


Clase principal la cual implementaremos los hilos resultantes de las clases de Proceso1 y
Proceso 2.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Clase proceso 1
Implementando la palabra reservada “extends” heredando la clase Thread, establecida
como la clase PADRE proporcionada por java.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Clase proceso 2
Se implementa el mismo proceso y estructura de clase de la clase Proceso1.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Corriendo clase principal:


(en la cual se nos muestra los procesos 1 y 2 ejecutándose al mismo tiempo haciendo uso
de Threads)
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Segundo resultado:
(mismos procesos, ejecutados al mismo tiempo, pero en diferente orden de salida)
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Conclusión
En conclusión, los procesos, hilos y multihilos son de alguna manera, bastante necesario
en la programación para cosas más complejas, esto puede parecer que no es beneficioso,
pero en realidad es bastante provechoso, en especial en computadores medianamente
decentes, ya que, al realizar múltiples procesos se puede llegar a acortar el tiempo
necesario para correr y finalizar un programa.
TECNOLÓGICO NACIONAL DE MÉXICO

Instituto Tecnológico Superior Purhépecha

Bibliografías

fpress. (12 de marzo de 2019). fpress. Obtenido de Procesos, threads e hilos:


https://www.fpress.com/revista/Num9904/Abr99.htm

microcontroladores. (12 de abril de 2015). microcontroladores. Obtenido de Qué es un Hilo de


Ejecución (Thread) y su uso: http://microcontroladores.org/que-es-un-hilo-de-ejecucion-
thread-y-su-uso/

wikipedia. (30 de agosto de 2021). wikipedia. Obtenido de Hilo_(informática):


https://es.wikipedia.org/wiki/Hilo_(informática)

También podría gustarte