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,

Slides:



Advertisements
Presentaciones similares
TEMA 1 Introducción a la Programación Concurrente
Advertisements

VI Unidad. Sistema Operativo
Planificación de Monoprocesadores
UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
Subsistemas De un Sistema Operativo Celeste Domínguez Romo
UNIDAD 2. ADMINISTRACION DE PROCESOS Y DEL PROCESADOR
Estructuras en Sistemas Operativos
Detalles del sistema operativo
INSTALACIÓN Y MANTENIMIENTO DE SISTEMAS OPERATIVOS
UTFSM - Sistemas Operativos
Mejoras a las Máquinas Von Neumann
Alejandro Ledezma Milanez Sonia Lizbeth Hernández Martinez Zaira Samara Chavez Hernandez Gilberto Saduj Castañeda Garcia.
Multiprogramación Procesos Cecilia Hernández
Direcciones físicas y direcciones virtuales (lógicas)
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Tema 10: Gestión de Memoria
Sistemas Operativos Procesos.
Unidad III Administración de procesos
Hilos - Lightweight process - Procesos ligeros
Profesor: Rodrigo Sanhueza Figueroa
Administración de Memoria Memoria Virtual
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
SISTEMA OPERATIVO Un sistema operativo es un programa que actúa como intermediario entre el usuario y el hardware de un computador y su propósito es proporcionar.
Asignación de Espacio No Contiguo
Soporte HW para Administración de Memoria Cecilia Hernández
Sistemas Operativos II MC. Daniel Fajardo Delgado INSTITUTO TECNOLÓGICO DE CD. GUZMÁN 24 de Abril de 2004.
Contenido Estructura del computador Ejecución de instrucciones
Hilos En La Computación. (THREADS).
Introducción a los Sistemas Operativos
Software, programas de computadoras. Son las instrucciones responsables de que el hardware (la máquina) realice su tarea. Como concepto general, el software.
Gestión de procesos Sistemas Operativos Edwin Morales
Monitores Mecanismo sincronización de nivel más alto que semáforos Construcción a nivel de lenguaje de programación que controla el acceso a datos compartidos.
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
1 Descripción y control de procesos Capítulo 3. 2 Requerimientos de un SO relacionados con procesos Ejecutar concurrentemente múltiples procesos para.
Teoría de Sistemas Operativos Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
COMPONENTES DEL SISTEMA OPERATIVO.
Memoria virtual.
Administrador de procesos
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
Integrante: Yohandry Cueto Carnet: # Contenido Kernel Linux Limitaciones del Kernel Linux Kernel Mach Que es Hurd Arquitectura Ventajas Distribuciones.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Sistemas Distribuidos
Supongamos que un usuario desea escribir un informe e imprimirlo en una impresora conectada. Para realizar esta tarea, se precisa una aplicación de procesamiento.
1 Ana Mercedes Cáceres Instructor: Raúl Aguilar Año 2006 [Parte I ]
Estructura de los Sistemas Operativos
Clasificación y estructura. Alejandra Rivero Esteban
INTRODUCCION A SISTEMAS OPERATIVOS
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Rendimiento de la CPU y sus factores
FLOR ALBA ACEVEDO COD JENNIFFER TATIANA TORRES COD
Unidad 2 – Gestión de Procesos
Por Luis Esteban Monsalve Martínez
Hilos Capítulo 5 Silberschatz Galvin. Copyright © 2006, Intel Corporation. All rights reserved. Intel and the Intel logo are trademarks or registered.
Manual violento de Navicat
Elementos y tipos de sistemas operativos
Estructuras en Sistemas Operativos DAISY KATERINE RODRÍGUEZ.
UNIVERSIDAD LATINA SOPORTE TECNICO SISTEMAS OPERATIVOS.
ELEMENTO DE COMPETENCIA 3
TECNICO EN SISTEMAS NUMERO DE FICHA:
También es conocido como proceso ligero. Es una entidad básica de utilización de CPU y esta formado por un contador de programa, algunos registros y una.
PROCESADOR.- El procesador es el cerebro del sistema, encargado de procesar toda la información. Básicamente, es el "cerebro" de la computadora. Prácticamente,
Desarrollador Profesional de Juegos Programación III Unidad II Hilos de ejecución Threads.
El Sistema Operativo es el software básico necesario para el funcionamiento de cualquier ordenador Los Sistemas Operativos están en continua evolución.
Threads Introducción Modelos Multi-Threading Problemas con Threads Pthreads Threads en Solaris 2 Threads en Windows 2000 Threads en Linux Threads en Java.
Administración de Memoria Conceptos Swapping Asignación Continua Paginación Segmentación Segmentación con Paginación.
ARCHIVO Es una colección de información o bien es una secuencia de bits, bytes, líneas o registros definida por su creador.
Estructura del sistema operativo
Hilos de Procesamiento. Hilos Concepto Beneficios Hilos a nivel kérnel y a nivel usuario Modelos multihilos Hilos de Solaris 2 Hilos de Java.
Transcripción de la presentación:

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 código (text segment) Datos estáticos (data segment) heap (mem dinámica) stack (mem dinámica) SP PC 0x xFFFFFFFF 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)

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 Biblioteca hebras nivel usuario Operaciones sobre hebras Hebras de kernel

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

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