Hebras - PowerPoint PPT Presentation

About This Presentation
Title:

Hebras

Description:

Title: PowerPoint Presentation Last modified by: clases Created Date: 1/1/1601 12:00:00 AM Document presentation format: On-screen Show Other titles – PowerPoint PPT presentation

Number of Views:21
Avg rating:3.0/5.0
Slides: 21
Provided by: ude68
Category:
Tags: hebras | signal | unix

less

Transcript and Presenter's Notes

Title: Hebras


1
Hebras
  • Cecilia Hernández

2
Qué es un proceso?
  • Consiste
  • Espacio de direccionamiento
  • Código a ejecutar
  • Datos estáticos y dinámicos
  • Pila o stack
  • CPU PC, SP y valores en registros de propósito
    general
  • Conjunto de recursos
  • Archivos, pipes, conecciones,etc

3
Concurrencia y paralelismo
  • Imaginar un servidor web que requiere manejar
    múltiples requerimientos concurrentemente
  • Mientras verifica la tarjeta de crédito de un
    cliente, podría recuperar de disco la información
    para otro cliente o realizar una búsqueda para
    otro
  • Imaginar un cliente web (web browser) que desee
    realizar múltiples requerimientos simultaneamente
  • Múltiples búsquedas, lectura de mails, chat, etc
  • Imaginar un programa paralelo ejecutándose en un
    multiprocesador, el cual no necesite concurrencia
    en términos de la multiplexación de una CPU
  • Ejemplo típico, multiplicación de matrices,
    dividir las matrices en un k regiones y calcular
    la multiplicación de las k regiones en k CPUs

4
Que se necesita?
  • En cada uno de ejemplos por separado
  • Todos los requerimientos quieren ejecutar el
    mismo código
  • Gran parte de los datos son los mismos (excepto
    caso paralelo)
  • Todos tienen los mismos privilegios
  • Todos usan los mismos recursos (archivos abiertos
    y conecciones)
  • Nos gustaría tener múltiples estados de ejecución
  • Cada estado de ejecución requiere
  • Estado en CPU
  • Pila de ejecución y su puntero SP
  • PC, indicando próxima instrucción a ejecutar
  • Conjunto de valores de registros de propósito
    general

5
Podemos hacer esto con procesos
  • Podríamos crear varios procesos con fork() y
    hacer que cada uno atienda un requerimiento?
  • Al crearse un proceso hijo
  • Desempeño
  • No tan bueno, porque SO ocupa tiempo y memoria
    para crear tabla de página y PCB de hijo
  • Sin embargo, SO no copia datos y código, sino que
    sólo hace que tablas de páginas de procesos
    apunten a lo mismo
  • COW (Copy On Write) SO asigna memoria a proceso
    hijo cuando desea escribir.

6
Podemos hacerlo mejor
  • Idea
  • Separar concepto de proceso (espacio de
    direccionamiento, estado CPU, recursos)
  • Que es lo mínimo que necesitamos para identificar
    un estado de ejecución?
  • Estado de CPU A esto se le llama hebra de
    control
  • Incluye estado PC,SP y valores registros
    generales
  • También se le llama proceso liviano

7
Hebras y procesos
  • Mayoría de SOs modernos (Mach, NT, Unix, Linux)
    soportan
  • Proceso, el cual define espacio de
    direccionamiento y recursos como archivos
    abiertos, conecciones, etc
  • Hebra, define un flujo de ejecución secuencial
    dentro de un proceso
  • Una hebra vive dentro de un proceso
  • Múltiples hebras pueden vivir en un proceso
  • Compartir datos entre hebras es barato, comparten
    mismo espacio de direccionamiento
  • Crear hebras es rápido, manipulación del espacio
    de direccionamiento y estructura de datos de SO
    que conoce de hebras
  • Hebras pueden pasar a ser unidades planificables
    por SO
  • Procesos pasan a ser contenedores de hebras

8
Hebras en sistemas/lenguajes disponibles
clave
UNIX antiguos
MS/DOS
Una hebra/proceso
Espacio direcc.
Una hebra/proceso
Un proceso
Muchos procesos
hebra
Java
Mach, NT, Linux,
Muchas hebras/proceso
Muchas hebras/proceso
Muchos procesos
Un proceso
9
Proceso ayer/hoy
Stack hebra 1
SP (H1)
0xFFFFFFFF
Stack hebra 2
SP (H2)
Stack hebra 3
SP (H3)
Espacio de direccionamiento
heap (mem dinámica)
Datos estáticos (data segment)
código (text segment)
PC (H2)
PC (H1)
0x00000000
PC (H3)
10
Proceso
11
Hebras
12
Separación Hebra/proceso
  • Multithreading (concurrencia) útil para
  • Manejar eventos concurrentemente
  • Cuál es la ganada en una CPU?
  • Construir programas paralelos
  • Hebras se ejecutan en distintas CPUs
  • Mejorando estructura de programas
  • En lugar de crear múltiples procesos concurrentes
    crear múltiples hebras concurrentes
  • Más rápido / menos memoria / más fácil compartir

13
Quién crea/maneja hebras?
  • Opción 1 Hebras de Kernel (SO)
  • Llamadas a sistema permiten creación
  • Asignar stack de ejecución dentro del espacio de
    direccionamiento de un proceso
  • Crear e inicializar un TCB
  • SP, PC, registros
  • Planificación de hebras realizada por OS

14
Quién crea/maneja hebras?
  • Opción 2 Creadas y manejadas en nivel usuario,
    dentro de un proceso
  • Una biblioteca linkeada con el programa que usa
    hebras
  • Operaciones de creación, destrucción, etc sobre
    hebras son llamadas a procedimientos (no llamadas
    a sistema)
  • Descritas como muchas to una
  • Muchas hebras mapeadas a un proceso/hebra del
    kernel
  • Biblioteca posee planificador de hebras creadas
    por proceso

proceso
Hebra kernel
15
Ilustración hebras de kernel
Mach, NT, Linux,
Espacio Direccionamiento
kernel
hebra
CPU
Operaciones sobre hebras mediante llamadas a
sistema al kernel
16
Hebras nivel usuario
Mach, NT, Linux,
Espacio de direccionamiento
Hebras de kernel
kernel
hebra
CPU
Kernel crea maneja hebras de kernel
17
Manejando mejor hebras nivel usuario
Mach, NT, Linux,
Espacio de direccionamiento
Hebras kernel
kernel
hebra
CPU
Manejo hebras kernel
18
Implementación de hebras nivel usuario
  • Kernel ve a proceso como cualquier otro
  • Hebras de nivel usuario invisibles al SO
  • Pero proceso incluye funcionalidad proporcionada
    por biblioteca de hebras la cual tiene su propio
    planificador
  • Planificador de biblioteca decide que hebra del
    proceso se ejecuta a determinado tiempo
  • SO provee de llamadas a sistema no bloqueantes,
    de manera que si una hebra de usuario hace E/S
    biblioteca de hebras sabe que puede hacer cambio
    de contexto en hebras de usuario

19
Hebras de nivel usuario
  • POSIX Threads API
  • En biblioteca libpthreads.so en linux
  • t pthread_create(attributes, start_procedure)
  • Crea hebra de control, que comienza ejecución en
    procedimiento dado
  • Puede especificar creación de hebras nivel kernel
    en attributes
  • pthread_cond_wait(condition_variable)
  • Hebra se bloquea hasta que condición se cumple
  • pthread_signal(condition_variable)
  • Señaliza a hebra que espera por condicion
  • pthread_exit()
  • Termina la hebra
  • pthread_join(t)
  • Espera por hebra t hasta que termine

20
Resumen
  • Hebras de kernel son más eficientes que procesos
  • Hebras de nivel usuario son más rápidas que las
    de kernel
  • Operaciones no pasan a través de SO
  • Si hebras de nivel usuario residen en un proceso
    representado por sólo una hebra de kernel
  • No puede proporcionar paralelismo si solo una
    hebra de kernel asociada a proceso
  • Si una hebra de proceso de usuario se bloquea en
    E/S entonces todo el proceso se bloquea
    (asumiendo que solo una hebra de kernel está
    asociada a proceso)
  • Normalmente biblioteca maneja llamadas a sistema
    no bloqueantes por hebras de usuario de manera
    que pueda utilizar hebra de kernel para otra
    hebra de usuario
Write a Comment
User Comments (0)
About PowerShow.com