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
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
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
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.
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
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
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
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
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
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
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
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

Más contenido relacionado

PDF
Practica de procesos en Linux
PPT
PPT
Hebras En Accion
PDF
Procesos linux
PDF
Guia backtrack
ODT
Niveles de ejecucion
PDF
THE ROBOT ACADEMY: Meet Up Linux for ROBOTS#1 (17.04.27)
PDF
PROCESOS EN LINUX. ::: http://leymebamba.com
Practica de procesos en Linux
Hebras En Accion
Procesos linux
Guia backtrack
Niveles de ejecucion
THE ROBOT ACADEMY: Meet Up Linux for ROBOTS#1 (17.04.27)
PROCESOS EN LINUX. ::: http://leymebamba.com

La actualidad más candente (18)

PDF
Manual linux
PDF
Unix essentials 3.1
PDF
Comandos Basicos En Linux
PDF
Linux ud7 - gestion de procesos
PDF
Unidad 3 gestion de procesos en linux
PDF
20 comandos linux que todos los administradores deben conocer
PPT
Ejercicios sobre procesos en Windows y Linux
PPTX
Codigos de terminal linux
PPTX
T32
PPTX
Apunt2a
PDF
Utilización de Ssh entre varios servidores.
PPTX
2.6.montajes y accesos a medios
PDF
Perl4 io
ODT
PPT
Nachos sistema operativo
PPTX
Sistema operativo NachOS
PDF
Ayuda para Redes
ODP
00 introducción a Python
Manual linux
Unix essentials 3.1
Comandos Basicos En Linux
Linux ud7 - gestion de procesos
Unidad 3 gestion de procesos en linux
20 comandos linux que todos los administradores deben conocer
Ejercicios sobre procesos en Windows y Linux
Codigos de terminal linux
T32
Apunt2a
Utilización de Ssh entre varios servidores.
2.6.montajes y accesos a medios
Perl4 io
Nachos sistema operativo
Sistema operativo NachOS
Ayuda para Redes
00 introducción a Python
Publicidad

Destacado (20)

PPT
Sintesis Proteica
PPT
Musculo estriado
PDF
358pc
PPT
Octobre 2010
PPSX
El graffiti en América Latina
PDF
Veille numérique 2511
PPT
What's up Digital #00 - by ELAN
PPT
Estado del Arte, Intercambio y Recomendación de Material Educativo
PPT
Lionel FUMADO - Alban ONDREJECK - ORANGE - Conference Media Aces - octobre 2011
DOC
ALEJANDRO_LONDONO_HV
PPTX
Herramientas web 2.0
PPS
La routine-habitudes-du-quotidien-dm2008-1208780563947496-9
PDF
Experiencia acompanyament
PPTX
Innovacion Profesional en Tiempos de Internet
DOCX
Brahim TPIM CV
PDF
0.contenidos curso
PPTX
Semana 14
PDF
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
PPTX
Coupe de france juniors
Sintesis Proteica
Musculo estriado
358pc
Octobre 2010
El graffiti en América Latina
Veille numérique 2511
What's up Digital #00 - by ELAN
Estado del Arte, Intercambio y Recomendación de Material Educativo
Lionel FUMADO - Alban ONDREJECK - ORANGE - Conference Media Aces - octobre 2011
ALEJANDRO_LONDONO_HV
Herramientas web 2.0
La routine-habitudes-du-quotidien-dm2008-1208780563947496-9
Experiencia acompanyament
Innovacion Profesional en Tiempos de Internet
Brahim TPIM CV
0.contenidos curso
Semana 14
ENIB 2013-2014 - CAI Web #1: Côté navigateur 1/3
Coupe de france juniors
Publicidad

Similar a Hebras (20)

PPTX
Sistema operativo
PPTX
FSO-02.1- Sistemas Operativos - Procesos.pptx
PPTX
Sistema operativo de hebras
PPTX
3. Conceptos de sistemas operativos
PPTX
Hilos o Hebras de la juan de castellanos.pptx
PPTX
Procesos e Hilos en los Sistemas Operativos
PPT
Planificador
PPTX
PPT
Procesos - SOII - 2016
PDF
Gestión de Recursos de un Sistema Operativo-Book-MGHE-ar.pdf
PPTX
Portafolio 2
PPTX
matCGzmultithreades sistemas operativositam.pptx
DOCX
27 de oct
PDF
Procesos concurrencia
DOCX
Cuestionario procesos
PPTX
procesos de los sistemas operativos
PDF
Gestión de procesos
PPTX
PROCESOS DE HILOS Y SU IMPORTANCIA EN LA RED.pptx
DOCX
PPT
intro.ppt
Sistema operativo
FSO-02.1- Sistemas Operativos - Procesos.pptx
Sistema operativo de hebras
3. Conceptos de sistemas operativos
Hilos o Hebras de la juan de castellanos.pptx
Procesos e Hilos en los Sistemas Operativos
Planificador
Procesos - SOII - 2016
Gestión de Recursos de un Sistema Operativo-Book-MGHE-ar.pdf
Portafolio 2
matCGzmultithreades sistemas operativositam.pptx
27 de oct
Procesos concurrencia
Cuestionario procesos
procesos de los sistemas operativos
Gestión de procesos
PROCESOS DE HILOS Y SU IMPORTANCIA EN LA RED.pptx
intro.ppt

Más de Stefano Salvatori (20)

PPTX
Salida a Volcán Copahue Febrero 2011
PPT
Salida a Aguas Calientes abril 2011
PPTX
Sistema de capas
PPT
Enumeracion de Goedel
PPT
Maquinas Abstractas
PPT
Pipelining
PPT
Memoria I I
PPT
C P U Uniciclo
PPT
PPT
DesempeñO
PPT
PPT
Codificacion
PPT
Multiciclo
PPT
PPT
Planificacion Procesos Gral
PPT
Memoria Soporte Hw
Salida a Volcán Copahue Febrero 2011
Salida a Aguas Calientes abril 2011
Sistema de capas
Enumeracion de Goedel
Maquinas Abstractas
Pipelining
Memoria I I
C P U Uniciclo
DesempeñO
Codificacion
Multiciclo
Planificacion Procesos Gral
Memoria Soporte Hw

Último (20)

PDF
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
PDF
Estrategia de apoyo valentina lopez/ 10-3
PPTX
ccna: redes de nat ipv4 stharlling cande
PDF
Estrategia de Apoyo de Daylin Castaño (5).pdf
PDF
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
PPTX
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
PPTX
Presentacion de Alba Curso Auditores Internos ISO 19011
PPTX
Mecanismos-de-Propagacion de ondas electromagneticas
PDF
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
PPTX
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
PDF
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
PPTX
ccna: redes de nat ipv4 stharlling cande
PPTX
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
PPT
Protocolos de seguridad y mecanismos encriptación
PDF
informe_fichas1y2_corregido.docx (2) (1).pdf
DOCX
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
PPTX
Historia Inteligencia Artificial Ana Romero.pptx
PPTX
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx
PDF
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
PPTX
Presentación final ingenieria de metodos
0007_PPT_DefinicionesDeDataMining_201_v1-0.pdf
Estrategia de apoyo valentina lopez/ 10-3
ccna: redes de nat ipv4 stharlling cande
Estrategia de Apoyo de Daylin Castaño (5).pdf
ADMINISTRACIÓN DE ARCHIVOS - TICS (SENA).pdf
Diapositivas Borrador Rocha Jauregui David Paolo (3).pptx
Presentacion de Alba Curso Auditores Internos ISO 19011
Mecanismos-de-Propagacion de ondas electromagneticas
Final Tecno .pdfjdhdjsjdhsjshshhshshshhshhhhhhh
Tema 1 Taller de tecnologia y proceso tecnologico.pptx
NREN - red nacional de investigacion y educacion en LATAM y Europa: Caracteri...
ccna: redes de nat ipv4 stharlling cande
Formato de texto, párrafo, documentos, columnas periodísticas, referencias.
Protocolos de seguridad y mecanismos encriptación
informe_fichas1y2_corregido.docx (2) (1).pdf
TRABAJO GRUPAL (5) (1).docxjsjsjskskksksk
Historia Inteligencia Artificial Ana Romero.pptx
Reconocimiento-Automatico-de-Placas-Vehiculares-con-IA.pptx
Tips de Seguridad para evitar clonar sus claves del portal bancario.pdf
Presentación final ingenieria de metodos

Hebras

  • 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 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
  • 9. 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
  • 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 Espacio Direccionamiento hebra Mach, NT, Linux, … kernel Operaciones sobre hebras mediante llamadas a sistema al kernel CPU
  • 16. 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
  • 17. 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
  • 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