Hebras

50 %
50 %
Information about Hebras

Published on June 24, 2007

Author: stefanosalvatori

Source: slideshare.net

Description

Hebras

Hebras Cecilia Hernández

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

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

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

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

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

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

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.

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.

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

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

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

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

Hebras en sistemas/lenguajes disponibles Espacio direcc. hebra Una hebra/proceso Muchos procesos Muchas hebras/proceso Muchos procesos Una hebra/proceso Un proceso Muchas hebras/proceso Un proceso MS/DOS Java UNIX antiguos Mach, NT, Linux, … clave

Proceso ayer/hoy 0x00 0 00000 0xFFFFFFFF Espacio de direccionamiento código (text segment) Datos estáticos (data segment) heap (mem dinámica) Stack hebra 1 PC (H2) SP (H2) Stack hebra 2 Stack hebra 3 SP (H1) SP (H3) PC (H1) PC (H3) código (text segment) Datos estáticos (data segment) heap (mem dinámica) stack (mem dinámica) SP PC

Proceso

Hebras

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

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

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

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

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

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

Ilustración hebras de kernel Espacio Direccionamiento hebra Mach, NT, Linux, … kernel Operaciones sobre hebras mediante llamadas a sistema al kernel CPU

Hebras nivel usuario Espacio de direccionamiento hebra Mach, NT, Linux, … kernel Kernel crea maneja hebras de kernel CPU Hebras de kernel Biblioteca hebras nivel usuario Operaciones sobre hebras

Manejando mejor hebras nivel usuario Espacio de direccionamiento hebra Mach, NT, Linux, … kernel Manejo hebras kernel CPU Hebras kernel Biblioteca hebras Nivel usuario Operaciones sobre hebras

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

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

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

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

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

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

Add a comment

Related pages

hebras.de - Stoko Henry Brach

Adolf -Menzel-Straße 71 12621 Berlin: Telefon: Fax: Mobil: E-mail: (030) 562 88 62 (030) 564 96 831 (0172) 381 01 25 kontakt@hebras.de
Read more

Suchergebnis auf Amazon.de für: Hebras: Musik-Downloads

Online-Shopping mit großer Auswahl im Musik-Downloads Shop.
Read more

Robert Hébras – Wikipedia

Robert Hébras (* 29. Juni 1925 in Oradour-sur-Glane) ist einer von nur sechs Menschen, die das Massaker von Oradour am 10. Juni 1944 überlebt haben.
Read more

robert hebras - AbeBooks

Oradour Sur Glane: Tragedy Hour By Hour von Hebras/Robert und eine große Auswahl von ähnlichen neuen, gebrauchten und antiquarischen Büchern ist jetzt ...
Read more

Ducros: Azafran Hebras - Safranfäden - 0,3g | Safran | Öl ...

Safran wird von den Stempeln der Blüten einer bestimmten Krokus-Art gewonnen und ist ein natürliches Produkt. Der Geschmack ist ein wenig bitter, d...
Read more

Robert Hébras - Wikipedia

Robert Hébras (born 29 June 1925 in Oradour-sur-Glane) was one of only six persons to survive the massacre of Oradour on the 10 June 1944. Marguerite ...
Read more

Hebras - Microsoft Store

Ich stimme zu, dass diese Seite Cookies für Analysen, personalisierte Inhalte und Werbung verwendet.
Read more

HEBRAS

Home Was machen Wir Impressum: Büroarbeiten aller Art Handel mit Hautschutzprodukten für Klein- und Kleinstabnehmer Mitgliederberatung und ...
Read more

Gauck auf Staatsbesuch: Eine Wunde Frankreichs, die nicht ...

Es war ein grausames Morden, das SS-Soldaten 1944 im französischen Oradour veranstalteten. Nur sechs Menschen entkamen. Joachim Gauck wird als erster ...
Read more

Oradour-Überlebender Robert Hébras würdigt Gauck-Besuch ...

E iner der letzten Überlebenden des SS-Massakers im französischen Ort Oradour-sur-Glane hat den anstehenden Besuch von Bundespräsident Joachim Gauck als ...
Read more