PDF de programación - Sistemas Operativos: Hilos y Procesos

Imágen de pdf Sistemas Operativos: Hilos y Procesos

Sistemas Operativos: Hilos y Procesosgráfica de visualizaciones

Publicado el 2 de Mayo del 2019
651 visualizaciones desde el 2 de Mayo del 2019
473,7 KB
39 paginas
Creado hace 17a (01/01/2007)
SISTEMAS OPERATIVOS:
PROCESOS

Hilos y Procesos

ADVERTENCIA

2

¨ Este material es un simple guión de la clase: no son

los apuntes de la asignatura.

¨ El conocimiento exclusivo de este material no
garantiza que el alumno pueda alcanzar los
objetivos de la asignatura.

¨ Se recomienda que el alumno utilice los materiales

complementarios propuestos.

Sistemas Operativos – Hilos y procesos

Contenido

3

¨ Concepto de hilo.
¨ Modelos de hilos.
¨ Aspectos de diseño.
¨ Hilos en pthreads.
¨ Planificación de hilos

Sistemas Operativos – Hilos y procesos

Aplicaciones con tareas concurrente

4

¨ Un proceso incluye un único hilo de ejecución.

¨ Diseño de aplicación con varias tareas concurrentes:
¤ Un proceso receptor de peticiones y lanzar un proceso

por petición.

¤ Un proceso receptor y un conjunto fijo de procesos de

tratamiento de peticiones.

Sistemas Operativos – Hilos y procesos

Rendimiento de aplicaciones
concurrentes

5

¨ Consumo de tiempo en la creación y terminación de

procesos.

¨ Consume de tiempo en cambios de contexto.

¨ Problemas en la compartición de recursos.

Sistemas Operativos – Hilos y procesos

Hilo, Proceso ligero o Thread

6

Sistemas Operativos – Hilos y procesos

Hilos

7

¨ La mayoría de los modernos SO proporcionan procesos con

múltiples secuencias o hilos de control en su interior.

¨ Se considera una unidad básica de utilización de la CPU.
¨ Cada uno comprende:
¤ Identificador de thread
¤ Contador de programa
¤ Conjunto de registros
¤ Pila

¨ Comparten con el resto de hilos del proceso:

¤ Mapa de memoria (sección de código, sección de datos, shmem)
¤ Ficheros abiertos
¤ Señales, semáforos y temporizadores.

Sistemas Operativos – Hilos y procesos

BCP de proceso con hilos

8

Sistemas Operativos – Hilos y procesos

Beneficios

9

¨ Capacidad de respuesta.

¤ Mayor interactividad al separar las interacciones con el usuario

de las tareas de procesamiento en distintos hilos.

¨ Compartición de recursos.

¤ Los hilos comparten la mayor parte de los recursos de forma

automática.

¨ Economía de recursos.

¤ Crear un proceso consume mucho más tiempo que crear un hilo

(Ejemplo: en Solaris relación 30 a 1).

¨ Utilización sobre arquitecturas multiprocesador.

¤ Mayor nivel de concurrencia asignando distintos hilos a distintos

procesadores.

¤ La mayoría de los sistemas operativos modernos usan el hilo

como unidad de planificación.

Sistemas Operativos – Hilos y procesos

Los threads permiten paralelizar la
ejecución de una aplicación

10

Procedimiento 1
P

Espera
en E/S

Procedimiento 1
P

Espera
en E/S

Procedimiento 2
P

Procedimiento 2
P

Espera
en E/S

F

Ejecución
serie

F

F

Ejecución
paralela

Espera
en E/S

F

Procesamiento

Sistemas Operativos – Hilos y procesos

Soporte de hilos

11

Espacio de usuario
ULT – User Level Threads

¨ Implementados en forma de

biblioteca de funciones en espacio
de usuario.

¨ El kernel no tiene conocimiento sobre

ellos, no ofrece soporte de ningún
tipo.

¨ Es mucho más rápido pero presentan

algunos problemas → Llamadas al
sistema bloqueantes.

Espacio de núcleo
KLT – Kernel Level Threads
¨ El kernel se ocupa de crearlos,

planificarlos y destruirlos.

¨ Es un poco más lento ya que

hacemos participar al kernel y esto
supone un cambio de modo de
ejecución.

¨ En llamadas al sistema bloqueantes
sólo se bloquea el thread implicado.

¨ En sistemas SMP, varios threads

pueden ejecutarse a la vez.

¨ No hay código de soporte para

thread en las aplicaciones.

¨ El kernel también puede usar
threads para llevar a cabo sus
funciones.

Sistemas Operativos – Hilos y procesos

Contenido

12

¨ Concepto de hilo.
¨ Modelos de hilos.
¨ Aspectos de diseño.
¨ Hilos en pthreads.
¨ Planificación de hilos

Sistemas Operativos – Hilos y procesos

Modelos de múltiples hilos:
Muchos a uno
¨ Hace corresponder

13

múltiples hilos de usuario
a un único hilo del
núcleo.

¨ Biblioteca de hilos en

espacio de usuario.

¨ Llamada bloqueante:
¤ Se bloquean todos los

hilos.

¨ En multiprocesadores no

se pueden ejecutar
varios hilos a la vez.

h1

h2



hn

Biblioteca de hilos

k1

Sistemas Operativos – Hilos y procesos

14

Modelo de múltiples hilos:
Uno a uno
¨ Hace corresponder un
hilo del kernel a cada
hilo de usuario.

h1

h2



hn

¨ La mayoría de las
implementaciones
restringen el número de
hilos que se pueden
crear.

¨ Ejemplos:
¤ Linux 2.6.
¤ Windows.
¤ Solaris 9.

k1

k2



kn

Sistemas Operativos – Hilos y procesos

Modelos de múltiples hilos:
Muchos a muchos
¨ Este modelo multiplexa los

15

h1

h2



hn

threads de usuario en un
número determinado de
threads en el kernel.
¨ El núcleo del sistema

operativo se complica
mucho.

¨ Ejemplos:

¤ Solaris (versiones

anteriores a 9).

¤ HP-UX.
¤ IRIX.

k1

k2

km…

Sistemas Operativos – Hilos y procesos

Contenido

16

¨ Concepto de hilo.
¨ Modelos de hilos.
¨ Aspectos de diseño.
¨ Planificación de hilos
¨ Hilos en pthreads.

Sistemas Operativos – Hilos y procesos

Llamadas a fork y exec

17

¨ En los sistemas tipo UNIX ¿Qué se debe hacer si se

llama a fork desde un hilo?
¤ Duplicar el proceso con todos sus hilos.

n Apropiado si no se va a llamar luego a exec para sustituir

la imagen del proceso.

¤ Duplicar el proceso solo con el hilo que llama a fork.

n Más eficiente si se va a llamar a exec y se van a cancelar

todos los hilos.

¨ Solución en Linux: Dos versiones de fork.

Sistemas Operativos – Hilos y procesos

Cancelación de hilos

18

¨ Situación en la que un hilo notifica a otros que

deben terminar.

¨ Opciones:

¤ Cancelación asíncrona: Se fuerza la terminación

inmediata del hilo.
n Problemas con los recursos asignados al hilo.
¤ Cancelación diferida: El hilo comprueba

periódicamente si debe terminar.
n Preferible.

Sistemas Operativos – Hilos y procesos

Hilos y procesamiento de solicitudes

19

¨ Las aplicaciones que reciben peticiones y las procesan

pueden usar hilos para el tratamiento.

¨ Pero:

¤ El tiempo de creación/destrucción del hilo supone un retraso

(aunque sea menor que el de creación/destrucción de un
proceso).

¤ No se establece un límite en el número de hilos concurrentes.
¤ Si llega una avalancha de peticiones se pueden agotar los

recursos del sistema.

Sistemas Operativos – Hilos y procesos

Thread Pools o Conjuntos de Hilos

20

¨ Se crea un conjunto de hilos que quedan en espera

a que lleguen peticiones.

¨ Ventajas:

¤ Se minimiza el retardo: El hilo ya existe.
¤ Se mantiene un límite sobre el número de hilos

concurrentes.

Sistemas Operativos – Hilos y procesos

Arquitecturas software basadas en
threads

21

Distribuidor

Trabajador

s
e
d
u
t
i

c

i
l

o
S

Núcleo

E/S

Núcleo

E/S

s
e
d
u
t
i

c

i
l

o
S

Núcleo

E/S

s
e
d
u
t
i

c

i
l

o
S

Sistemas Operativos – Hilos y procesos

Contenido

22

¨ Concepto de hilo.
¨ Modelos de hilos.
¨ Aspectos de diseño.
¨ Hilos en pthreads.
¨ Planificación de hilos

Sistemas Operativos – Hilos y procesos

Creación de hilos

23

¨ int pthread_create(pthread_t *thread,

const pthread_attr_t *attr,
void *(*func)(void *),
void *arg)
¤ Crea un hilo e inicia su ejecución.
¤ thread: Se debe pasar la dirección de una variable del tipo

pthread_t que se usa como manejador del hilo.

¤ attr: Se debe pasar la dirección de una estructura con los

atributos del hilo. Se puede pasar NULL para usar atributos por
defecto.

¤ func: Función con el código de ejecución del hilo.
¤ arg: Puntero al parámetro del hilo. Solamente se puede pasar un

llamada.

Sistemas Operativos – Hilos y procesos

parámetro.

¨ pthread_t pthread_self(void)

¤ Devuelve el identificador del thread que ejecuta la

Espera y terminación

24

¨ int pthread_join(pthread_t thread,

void **value)
¤ El hilo que invoca la función se espera hasta que el hilo cuyo

manejador se especifique haya terminado.

¤ thread: Manejador de del hilo al que hay que esperar.
¤ value: Valor de terminación del hilo.

¨ int pthread_exit(void *value)

¤ Permite a un proceso ligero finalizar su ejecución, indicando

el estado de terminación del mismo.

¤ El estado de terminación no puede ser un puntero a una

variable local.

Sistemas Operativos – Hilos y procesos

Ejemplo: crear y esperar

25

#include ..
#include <pthread.h>
void * thread_function(void *arg)
{ int i;

for ( i=0 ; i < 2 ; i++ ) {
printf("Thread says hi!\n"); sleep(1); }
printf("Thread exit\n");
return NULL;

}
int main(int argc, char ** argv) {

pthread_t mythread;
if ( pthread_create(&mythread,NULL,thread_function, NULL)==-1 )
{ printf("error creating thread."); abort(); }
printf("Wait for join to exit\n");
if (pthread_join(mythread,NULL) == -1)
{ printf("error joining thread.\n"); abort(); }
exit(0);

}

Sistemas Operativos – Hilos y procesos

Ejemplo: sumador con threads

26

#include <stdio.h>
#include <pthread.h>

struct sumapar {

int n, m, r;

};
typedef struct sumapar

sumapar_t;

void suma(sumapar_t * par) {

int i;
int suma=0;
for (i=par->n;i<=par->m;i++)
{

int main() {

pthread_t th1, th2;
sumapar_t s1 = {1,50,0};
sumapar_t s2 = {51,100,0};

pthread_create(&th1, NULL,
(void*)suma, (void*)&s1);
pthread_create(&th2, NULL,
(void*)suma, (void*)&s2);

pthread_join(th1, NULL);
pthread_join(th2, NULL);

printf("Suma=%d\n",

s1.r+s2.r);

}

suma +=i;

}
par->r=suma;

}

Sistemas Operativos – Hilos y procesos

Atributos de un hilo

27

¨ Cada hilo tiene asociados un conjunto de atributos.
¨ Atributos representados por una variable de tipo

pthread_attr_t.

¨ Los atributos controlan:

¤ Un hilo es independiente o dependiente.
¤ El tamaño de la pila privada del hilo.
¤ La localización de la pila del hilo.
¤ La política de planificación del hilo.

Sistemas Operativos – Hilos y procesos

Atributos

28

¨ int pthread_attr_init(pthread_attr_t * attr);

¤ Inicia una estructura de atributos de hilo.

¨ int pthread_attr_destroy(pthread_attr_t * attr);

¨ int pthread_attr_setstacksize(pthread_attr_t
  • Links de descarga
http://lwp-l.com/pdf15832

Comentarios de: Sistemas Operativos: Hilos y Procesos (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad