Monografias.com > Computación > General
Descargar Imprimir Comentar Ver trabajos relacionados

Hebras – Procesos




Enviado por Pablo Turmero



Partes: 1, 2

    Monografias.com

    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

    Monografias.com

    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

    Monografias.com

    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

    Monografias.com

    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.

    Monografias.com

    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

    Monografias.com

    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

    Monografias.com

    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

    Monografias.com

    Proceso ayer/hoy
    (Gp:) código
    (text segment)
    (Gp:) Datos estáticos
    (data segment)
    (Gp:) heap
    (mem dinámica)
    (Gp:) stack
    (mem dinámica)
    (Gp:) SP
    (Gp:) PC

    0x00000000
    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)

    Monografias.com

    Proceso

    Monografias.com

    Hebras

    Monografias.com

    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

    Monografias.com

    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

    Partes: 1, 2

    Página siguiente 

    Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

    Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

    Categorias
    Newsletter