You are on page 1of 9

INSTITUCIN UNIVERSITARIA ANTONIO JOSE CAMACHO

SISTEMAS OPERATIVOS
Prof. VICTOR VIERA BALANTA
HILOS
Los hilos son importantes en los sistemas operativos modernos. En los actuales sistemas
operativos se trabajan mltiples hilos, generalmente un hilo es un programa en ejecucin
que utiliza el ambiente de un proceso ( D.M. Dhamdhere,2008), en la definicin de
Andrew Tanenbawn.

un hilo es un proceso ligero.

Los hilos del mismo proceso

comparten los datos, los recursos y el cdigo entre ellos. Ver figura 1.
Figura 1. Hilos y procesos

La figura 2 muestra el esquema de una clase que hereda de hilo, se destacan la


instruccin super, donde se referenciar el nombre del hilo y el mtodo run, donde se
coloca el cdigo que ejecutar el hilo.
Figura 2. Esquema de un hilo

Ejemplo: crear tres hilos (A,B,C) para que cada uno cuente hasta 100, se debe
mostrar la ejecucin de cada hilo.
Para realizar el ejercicio se debe programar el mtodo run() , en este ejemplo se cada
hilo se duerme por espacio de dos segundos, esto se logra con la instruccin
Sleep(2000). Ver figura 3.
Figura 3. Programa con hilos para mostrar 100 nmeros

La creacin de los hilos se hace con la instruccin new, el hilo se inicia con la
instruccin start()
Figura 3. Creacin de los hilos

La figura 4 muestra el Programa completo. Es importante la utilizacin de la


excepcin para el manejo de errores.
Figura 4. Programa para mostrar tres hilos mostrando 100 nmeros

EJERCICIOS
Digite el cdigo del mostrado en el presente documento y conteste las
siguientes preguntas.
1. Corra el programa 5 veces y mencione cual hilo se ejecuta primero en cada
corrida?
2. Puede cambiar el orden de ejecucin de los hilos?
3. Realice un programa, con hilos, donde tiene 3 corredores
(corredor1,corredor2 y corredor3). La carrera es muy especial, cada
corredor debe avanzar 100 pasos en cada paso el corredor1 descansa 4
segundos, el corredor2 descansa 6 segundos y el corredor3 descansa 8
segundos. Cree un programa que muestre el avance de cada corredor y su
descanso respectivo. Ver figura 5.
Figura 5. Salida del programa para los corredores

4. Problema clsico de hilos, se tiene un reloj digital con segundos, minutos, y


horas, cree un programa con hilos donde existan 3 hilos , un hilo para los
segundos, un hilo para los minutos y un hilo para las horas. Los hilos se
deben sincronizar de tal forma que si el hilo de los segundos llega hasta 60,
el hilo de los minutos avanza en una unidad, si el hilo de los minutos llega
hasta 60, el hilo de las horas avanza una unidad. El ciclo se repite con un
reloj de 24 horas. Cada hilo debe volver a cero cuando llegue a un tope (
segundos 60, minutos 60 y horas 24).

Aqu se presenta el resultado de una solucin con segundos, minutos y


horas de 5.(no hasta 60 por el tiempo de procesamiento)

segundos******1
segundos******2

segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************2
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************3
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************4
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************5
minutos*****************0
horas********************************** 1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0

minutos*****************1
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************2
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************3
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************4
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************5
minutos*****************0
segundos******1
horas****************************************** 2
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************1
segundos******2
segundos******3

segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************2
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************3
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************4
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************5
minutos*****************0
segundos******1
horas**************************************** 3
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1

minutos*****************2
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************3
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************4
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************5
minutos*****************0
segundos******2
horas****************** 4
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
segundos******1
minutos*****************2
segundos******2
segundos******3
segundos******4

segundos******5
segundos******0
segundos******1
minutos*****************3
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************4
segundos******1
segundos******2
segundos******3
segundos******4
segundos******5
segundos******0
minutos*****************5
minutos*****************0
segundos******1
horas****************** 5

You might also like