Вы находитесь на странице: 1из 12

Procesos e hilos

Contenidos

(T4)

Procesos y sistema operativo Estructura de un proceso en UNIX Bloque de control de procesos Hilos (Threads) Estructura de una tarea con n hilos Hilos vs procesos Hilos en espacio de usuario Hilos soportados por el SO Hilos y procesos en Linux Imagen de un proceso sobre i80x86 Diagrama de estados Informacin de la task_struct Hilos y procesos en W2K Imagen de un proceso sobre i80x86

Process block Thread block

Diagrama de estados (threads)


Procesos e hilos
2

Procesos y sistema operativo


Programa: entidad esttica Proceso: programa en ejecucin El sistema operativo proporciona:
Espacio de memoria independiente: cdigo, datos, pila, Tiempo de procesador propio Recursos propios

Objetivo del multiprocesamiento:


Mejor aprovechamiento de los recursos fsicos Comparticin de recursos lgicos Aumento del rendimiento del procesador Conveniencia (incluso en sistemas monousuario)

Procesos e hilos

Estructura de un proceso en UNIX (i)


Contexto de usuario Texto (cdigo) Datos iniciados de slo lectura Datos iniciados de lectura-escritura Datos no iniciados rea dinmica (heap) Contexto del ncleo Datos del ncleo

Pila

Ejemplo: Llamadas al sistema fork y exec


Procesos e hilos
4

Estructura de un proceso en UNIX (ii)


Bloque de control de procesos
Es la manifestacin de que existe un proceso Estructura del SO para controlar a todos los procesos que existen en el sistema Almacena:
Estado actual del proceso Identificacin unvoca del proceso Prioridad del proceso Puntero a la zona de memoria asignada Puntero a los archivos abiertos Punteros a los recursos asociados rea de salvaguarda de registros Un puntero al siguiente PCB
Procesos e hilos
5

Hilos (Threads) (i)


Objetivo: compartir recursos entre procesos cooperantes Hilo = unidad fundamental de uso de procesador
Se compone de: CP, una serie de registros y rea de pila Comparte con otros hilos cooperantes (de una tarea) cdigo, datos y recursos del SO

Una tarea (task):


No tiene capacidad de ejecucin Posee el cdigo, los datos y los recursos compartidos que comparten varios hilos Cada hilo slo puede pertenecer a una tarea

Un proceso tradicional (pesado) se compone de una tarea con un hilo de ejecucin


Procesos e hilos
6

Hilos (Threads) (ii)


La mayora de los SS.OO. modernos soportan threads (OS/2, Mach, W2K, Chorus, Linux, etc). Cmo programar con hilos? Bibliotecas estndar DCE Threads, POSIX Threads, Sun threads, etc. Los threads son adecuados en sistemas distribuidos y sistemas multiprocesador

Procesos e hilos

Hilos (Threads) (iii)

Estructura de una tarea con n hilos


Contexto de usuario Texto (cdigo) Datos iniciados de slo lectura Datos iniciados de lectura-escritura Datos no iniciados rea dinmica (heap)
Registros mquina sp Registros mquina sp

Contexto del ncleo Datos del ncleo

pc Pila 1 Pila 2 pc

pc Registros mquina sp

Pila n

Procesos e hilos

Hilos (Threads) (iv)


Hilos vs procesos
Se crean y destruyen ms rpidamente que los procesos No es necesario asignar recursos, los posee la tarea La conmutacin (en la misma tarea) requiere de menor coste que la conmutacin de procesos, slo es necesario salvar los registros y conmutar la pila Los hilos de una tarea comparten el mismo espacio de direccionamiento virtual Existe menor sobrecarga de comunicaciones, todos los hilos de una tarea comparten memoria

Procesos e hilos

Hilos (Threads) (v)

Hilos en espacio de usuario / soportados por el SO


Los hilos pueden ser implementados en espacio de usuario o ser soportados por el ncleo T1 T2 T3

S.O T1 T2 T3

En espacio de usuario

Soportados por el ncleo S.O


Procesos e hilos
10

Hilos (Threads) (vi)

Hilos en espacio de usuario


Los hilos son soportados por una biblioteca El SO no sabe que existen hilos Ventajas:
La conmutacin entre hilos se puede realizar rpidamente sin ayuda del SO La planificacin puede hacerla la aplicacin Portabilidad entre SO diferentes

Inconvenientes:
Si el SO no sabe de la existencia de hilos en una tarea, el bloqueo de un hilo produce el bloqueo del resto de hilos de la misma tarea Dos hilos de una misma tarea no se pueden ejecutar en procesadores diferentes
Procesos e hilos
11

Hilos (Threads) (vii)

Hilos en espacio de usuario


Los hilos son soportados por una biblioteca El SO no sabe que existen hilos Ventajas:
La conmutacin entre hilos se puede realizar rpidamente sin ayuda del S.O. La planificacin puede hacerla la aplicacin Portabilidad entre SO diferentes

Inconvenientes:
Si el S.O. no sabe de la existencia de hilos en una tarea, el bloqueo de un hilo produce el bloqueo del resto de hilos de la misma tarea Dos hilos de una misma tarea no se pueden ejecutar en procesadores diferentes
Procesos e hilos
12

Hilos (Threads) (viii)

Hilos soportados por el SO


El SO da soporte a los hilos estableciendo las estructuras de datos y las funcionalidades necesarias Ventajas:
El bloqueo de un hilo en una tarea no afecta al resto

Inconvenientes:
La conmutacin de un hilo a otro se hace va interrupciones (mayor sobrecarga)

Ejemplo: T1 con 10 hilos T2 con 1 hilo


% Uso de CPU T1 T2 Hilos en espacio de usuario 50% - 50% Hilos en soportados por el SO 91% - 9,1% Hilo 5% 9,1%
13

Procesos e hilos

Hilos y procesos en Linux (i)


Se crean con la llamada clone() De hecho fork() y pthread_create() derivan de clone() Contextos:
Contexto del ncleo No permitido Interrupciones Tareas de sistema Contexto del proceso Aplicaciones Excepciones Llamadas al sistema Modo usuario

Modo supervisor

Procesos e hilos

14

Hilos y procesos en Linux (ii)

Imagen de un proceso sobre i80x86


0x00000000 Sistema (1 Gb) 0x3FFFFFFF 0x40000000 Programa Usuario (3 Gb) 0x40000000 start_code Bibliotecas compartidas end_code end_data end_bss 0x80000000 start_code end_code end_data end_bss start_stack arg_start env_start 0xFFFFFFFF 0xBFFFFFB Cabecera Cdigo (Text) Datos (Data) Datos no iniciados (BSS) Cabecera Cdigo (Text) Datos (Data) Datos no iniciados (BSS) Ptr. a los argumentos y variables de entorno Info. para carga dinmica Argumentos Variables de entorno Archivo del programa Procesos e hilos
15

Hilos y procesos en Linux (iii)


Diagrama de estados

Zombie
Finalizar Dormir

Ejecucin
Desalojar

Dormir

Espera

Despachar

Detenido

Despertar

Listo

Despertar

Procesos e hilos

16

Hilos y procesos en Linux (iv)


Informacin de la task_struct
En: include/linux/sched.h

En Linux el PCB se conoce como task_struct Grado de multiprogram = nmx. task_struct = 512 task_struct (i):
Estado del proceso:
Ejecucin Listo Esperando: por recursos o por eventos Detenido (Stopped): generalmente por una seal (SIGSTOP) Zombie: No se ha liberado su entrada en la task_struct

Informacin de planificacin

Procesos e hilos

17

Hilos y procesos en Linux (v)


task_struct (ii):
Identificadores

Informacin de la task_struct

de proceso (pid), del padre (ppid), de usuario (uid), de grupo (gid)

Temporizadores peridicos o single-shot (seales) Tiempo jiffies modo usuario y sistema (planificacin) Enlaces familiares (pstree) Sistema de archivos
Punteros a cada descriptor de archivo Punteros a los VFS Raz del proceso (home directory) Directorio actual (pwd)

Memoria virtual Contexto especfico del proceso


Procesos e hilos
18

Hilos y procesos en W2K (i)


Entidades relacionadas con la ejecucin de programas:
El proceso:
Entidad correspondiente a un trabajo de usuario o aplicacin

Los hilos (threads):


Unidad de trabajo que se expide para su ejecucin secuencial y es interrumpible Se comunican mediante la memoria compartida de un proceso Pueden ser suspendidos o reanudados

El proceso es la unidad poseedora de recursos y su informacin se almacena en el process block El hilo es la entidad con capacidad de ejecucin y su informacin se almacena en el thread block Son tratadas como objetos por el ncleo del SO
Procesos e hilos
19

Hilos y procesos en W2K (ii)


0x00000000 Usuario (2 Gb)

Imagen de un proceso sobre i80x86

Cdigo .EXE Variables globales Pilas de cada thread Heap Cdigo .DLL 0x7FFFFFFF 0x80000000 Sistema (2 Gb) Ejecutivo, kernel, HAL, drivers, pilas del ncleo para cada hilo Win32K.sys Tabla de pginas Cache del sistema de archivos Procesos e hilos
20

0xFFFFFFFF

10

Hilos y procesos en W2K (iii)


Process block
Tipo de objeto Atributos del cuerpo de objeto

Proceso ID de proceso Token de acceso Prioridad base ... Lmites de cuota Contadores de E/S Crear proceso Abrir proceso Consultar informacin del proceso Configurar informacin del proceso Actualizar proceso ... Operaciones con MV

Servicios

Procesos e hilos

21

Hilos y procesos en W2K (iv)


Thread block
Tipo de objeto Atributos del cuerpo de objeto

Thread ID de cliente Contexto del hilo Prioridad dinmica Prioridad base ... Tiempo de ejecucin Crear hilo Abrir hilo Consultar informacin del hilo Actualizar hilo ... Suspender Continuar

Servicios

Procesos e hilos

22

11

Hilos y procesos en W2K (v)


Diagrama de estados (threads)
No ejecutable
Terminado Terminacin

Ejecutable

Bloqueo/ Suspensin

Ejecucin Expulsin

Cambio

Espera Desbloqueo Recursos disponibles Desbloqueo Recursos no disponibles

Standby

Listo

Elegido para ejecutar

Transicin

Recursos disponibles
Procesos e hilos
23

Hilos y procesos en W2K (vi)


Diagrama de estados (threads)
Listo: Se planifica para la ejecucin, segn su prioridad Standby: Se selecciona para ser el siguiente en ejecutarse. Si su prioridad es suficiente, hace requisa Ejecucin: Usa el procesador hasta que termina su fraccin de tiempo, se bloquea o termina Espera:
1. Se bloquea en un suceso (p. ej. E/S) 2. Realiza una espera voluntaria para la sincronizacin 3. Un subsistema en el entorno le lleva a su suspensin

Transicin: Si est listo para ejecutar y sus recursos no estn disponibles Terminado: Si se retira el hilo del sistema o el ejecutor lo retiene para futuros reinicios
Termina por s mismo, por otro hilo o si su padre termina
Procesos e hilos
24

12

Вам также может понравиться