5
INICIAMOS CON UN PROCESO PARA DEFINIR HEBRA O (HILO): Unidad de propiedad de los recursos: el proceso incluye memoria (sección de código, sección de datos) y otros recursos como: archivos abiertos, señales, ETC... Unidad de expedición: sigue un camino de ejecución que puede ser intercalada con la de otros procesos. (Contador de programa, conjunto de registros, espacio de pila, estado) Estas dos características pueden ser tratadas de manera independiente por el S. O, apareciendo el concepto de hebra o (hilos). Una hebra (o proceso ligero) es la unidad básica de utilización de la CPU (unidad de expedición). Consta de: Contador de programa. Conjunto de registros. Espacio de pila Estado Una tarea es la unidad de propiedad de los recursos. Sección de código. Sección de datos. Recursos del SO (archivos abiertos, señales,..). Una hebra comparte con sus hebras pares una tarea.

HEBRA HILO

  • Upload
    fco-tz

  • View
    218

  • Download
    2

Embed Size (px)

Citation preview

Page 1: HEBRA HILO

INICIAMOS CON UN PROCESO PARA DEFINIR HEBRA O (HILO):

Unidad de propiedad de los recursos: el proceso incluye memoria (sección de código,

sección de datos) y otros recursos como: archivos abiertos, señales, ETC...

Unidad de expedición: sigue un camino de ejecución que puede ser intercalada con la

de otros procesos. (Contador de programa, conjunto de registros, espacio de pila, estado)

Estas dos características pueden ser tratadas de manera independiente por el S. O,

apareciendo el concepto de hebra o (hilos).

Una hebra (o proceso ligero) es la unidad básica de utilización de la CPU (unidad de

expedición). Consta de:

Contador de programa.

Conjunto de registros.

Espacio de pila

Estado

Una tarea es la unidad de propiedad de los recursos.

Sección de código.

Sección de datos.

Recursos del SO (archivos abiertos, señales,..).

Una hebra comparte con sus hebras pares una tarea.

Page 2: HEBRA HILO

Una Hebra posee:

Un estado de ejecución (Ejecución, Listo, etc.).

El contexto del procesador se salva cuando no está ejecutando.

Una pila de ejecución.

Almacenamiento estático para las variables locales.

Acceso a la memoria y a los recursos del proceso, compartidos con todos los hilos

del mismo.

Ventajas de las hebras:

Se obtiene un mayor rendimiento y un mejor servicio debido a :

Se reduce el tiempo de cambio de contexto, el tiempo de creación y el tiempo de

terminación.

En una tarea con múltiples hebras, mientras una hebra servidora está bloqueada y

esperando, una segunda hebra de la misma tarea puede ejecutarse (depende del

tipo de hebras)

La comunicación entre hebras de una misma tarea se realiza a través de la

memoria compartida (no necesitan utilizar los mecanismos del núcleo).

Las aplicaciones que necesitan compartir memoria se benefician de las hebras.

Funcionalidad de las hebras.

Al igual que los procesos las hebras o (hilos) poseen un estado de ejecución y pueden

sincronizarse.

Algunos estados de las hebras son: Ejecución, Lista y Bloqueada, operaciones

básicas relacionadas con el cambio de estado en hebras: Creación, Bloqueo, Desbloqueo,

Terminación y Sincronización entre hebras.

Page 3: HEBRA HILO

Ejemplo de estados de una hebra

TIPOS DE HEBRAS

Tipo usuarios

Ventajas del uso de las hebras tipo usuario frente a las de tipo núcleo:

Se evita la sobrecarga de cambios de modo, que sucede cada vez que se pasa el

control de una hebra a otra en sistemas que utilizan hebras núcleo.

Se puede tener una planificación para las hebras distinta a la planificación subyacente

del SO.

En un entorno multiprocesador, una aplicación multihebra no puede aprovechar la

ventajas de dicho entorno ya que el núcleo asigna un procesador a un proceso.

Tipo Enfoques híbridos

Implementan tanto hebras a nivel kernel como usuario (p. ej. Solaris 2).

La creación de hebras, y la mayor parte de la planificación y sincronización se realizan

en el espacio de usuario.

Las distintas hebras de una aplicación se asocian con varias hebras del núcleo (mismo

o menor número), el programador puede ajustar la asociación para obtener un mejor

resultado.

Page 4: HEBRA HILO

RELACION ENTRE TIPOS DE HEBRAS

Para poder gestionar hebras necesitamos estructuras de datos que las representen un

bloque de control de hebra ó (TCB).

Ejemplo para Windows

o Implementación de la API Win32.

o Cada proceso contiene una o más hebras.

o Emplea hebras tipo usuario y núcleo con relación 1:1.

o La biblioteca Fiber añade relaciones N: M entre hebras (opcional).

o Componentes de una hebra:

o Identificador, conjunto de registros, pilas de usuario y núcleo, área de

almacenamiento privada

TCB mínimo

Identificador de hebra (TID)

Puntero de instrucción (IP)

Puntero de pila (SP)

Estado (flags)

Page 5: HEBRA HILO

o Localización de las estructuras de datos de las hebras (cuadro Windows ):

Ejemplo para Linux

No distingue entre procesos y hebras: tarea (task).

Utiliza la llamada al sistema clone () para conseguir un efecto parecido a fork () pero

permite limitar los recursos compartidos.

Estructura de datos para representar tareas: task_struct.

Formada por punteros en lugar de datos para optimizar la compartición.

PARÁMETRO SIGNIFICADO

CLONE_FS Compartir sistema de ficheros

CLONE _VM Compartir memoria virtual

CLONE _SIGHAND Compartir manejadores de señales

CLONE FILES Compartir los ficheros abiertos