You are on page 1of 71

Capítulo 2

Procesos y Hebras

2.1 Procesos
2.2 Hebras
2.3 Comunicación entre Procesos (IPC)
2.4 IPC: Problemas Clásicos
2.5 Scheduling

1

El Modelo de Proceso

• Multiprogramación de 4 programas
• Modelo conceptual de 4 procesos secuenciales
independientes
• Sólo un programa está activo en un instante
2

Creación de un Proceso

Principales eventos que causan la creación de
un proceso:
1. Inicialización del sistema
2. Ejecución de un sistema creador de
procesos (ej. login)
3. Requerimiento de usuario para la creación
de un proceso
4. Inicio de una tarea de tipo batch (ej. script)

3

Término de un Proceso Condiciones para la terminación de un proceso: 1. exit normal (voluntario) 2. error fatal (involuntario) 4. exit al encontrar un error (voluntario) 3. eliminado por otro proceso (involuntario) 4 .

etc. Jerarquías de Procesos • El proceso padre crea un proceso hijo. el proceso hijo crea sus propios procesos hijo. • Forma una jerarquía – En UNIX se conoce como “grupo de procesos" • En Windows no existen las jerarquías de procesos – Todos los procesos son iguales 5 .

Estados de un Proceso (1) Running 1 2 1: Bloqueo por operación de I/O 3 2.2. 3: Acción del Scheduler Blocked Ready 4: Operación de I/O terminada 4 • Posibles estados de un procesos: – running – blocked – ready • 1.3 y 4 muestran las transiciones posibles 6 .

scheduling • Sobre este nivel los procesos son secuenciales 7 . Estados de un Proceso (2) • Nivel inferior en un SO estructurado en base a procesos: manejo de interrupciones.

Implementación de Procesos (1) Registro en la tabla de proceso 8 .

Implementación de Procesos (2) Etapas al ocurrir una interrupción 9 .

O. – hebra: hilo de ejecución de un programa 10 . E/S y requerimientos simultáneos: – manejo de varias hebras por proceso – proceso: recurso del S. hardware con varios procesadores 2. Procesos y Hebras (threads) • Antes: un proceso contiene exactamente una hebra • Hoy: 1. paralelismo dentro de una aplicación 3.

El Modelo de Hebra (1) (a) 3 procesos con una hebra cada uno (b) Un proceso con 3 hebras 11 .

El Modelo de Hebra (2) • Datos compartidos por todas las hebras dentro de un proceso • Datos privados de cada hebra 12 .

El Modelo de Hebra (3) Cada hebra tiene su propio stack 13 .

Uso de Hebras (1) Un procesador de texto con 3 hebras 14 .

Uso de Hebras (2) Web server multi-hebra 15 .

Uso de Hebras (3) • Un µ-código para el caso del servidor Web (a) Dispatcher thread (despachador) (b) Worker thread (ejecutor) 16 .

Uso de Hebras(4) 3 maneras de construir un servidor a) tiempos de espera: procesamiento simultáneo de requerimientos b) programación amistosa: abstracción. considerando un solo hilo de ejecución 17 .

Implementando Hebras en Espacio de Usuario Un paquete de hebras a nivel de usuario 18 .

Implementando Hebras en el Núcleo Un paquete de hebras administrado por el núcleo 19 .

Implementación Híbrida Multiplexando hebras a nivel de usuario con hebras a nivel de núcleo 20 .

Scheduler Activations • Objetivo – imitar la funcionalidad de hebras de núcleo – mejora el rendimiento de hebras a nivel de usuario • Evita transiciones innecesarias entre usuario y núcleo • El núcleo asigna un procesador virtual a cada proceso – en tiempo de ejecución se le asigna una hebra al proceso • Problema: se basa en la confianza del núcleo en la invocación de procedimientos a nivel de usuario 21 .

Hebras de tipo Pop-Up • Creación de una hebra al llegar un mensaje: (a) Antes del arribo del mensaje (b) Después del arribo del mensaje 22 .

Robusteciendo un Código Mono-hebra para Soportar Multi-hebra (1) Conflicto entre hebras al usar variables globales 23 .

Robusteciendo un Código Mono-hebra para Soportar Multi-hebra (2) Hebras pueden tener variables privadas globales 24 .

Programación Concurrente • Ejecución paralela de hebras: – Carreras críticas: comportamiento no determínistico dado una velocidad variable en la ejecución de hebras concurrentes – estados inconsistentes de recursos compartidos: accesos parciales traslapados en el tiempo • Incorporación de técnicas de comunicación entre procesos (IPC) – Ejecución ordenada: sincronización – Intercambio de informacion 25 .

Programación Concurrente .Carreras Críticas - 2 procesos desean usar memoria compartida al mismo tiempo 26 .

Comunicación entre Procesos (IPC) 1. Intercambio de Información intercambio de datos entre hebras / procesos 27 . Sincronización bloqueo y ejecución de hebras / procesos 2.

Sincronización 1. Bloqueo directo 2. Utilización de un buffer 28 .

Objetos compartidos de uso sincrónico: Monitores 3.e. Sistemas de Intercambio de Mensajes 29 . memoria compartida) + accesos sincronizados 2. Intercambio de Información 1. Variables globales. Acceso a recursos compartidos (i.

Sincronización • Un problema importante de sincronización: exclusión mutua (mutual exclusion) recurso compartido sección crítica t 30 .

No se permite el acceso a 2 o más procesos a la región crítica en forma simultánea 2. Ningún proceso esperará infinitamente poder entrar en la región crítica 31 . Regiones Críticas (1) Condiciones para garantizar la exclusión mutua: 1. Un proceso fuera de la región crítica no debe bloquear a un proceso que desea entrar en la región crítica 4. No hay supuestos referentes a la velocidad ni cantidad de CPUs 3.

Regiones Críticas (2) Exclusión mutua usando regiones críticas Solución trivial: deshabilitar interrupciones (Monoprocesadores) 32 .

alternación estricta 33 . Exclusión Mutua con Espera Activa (1) global var: int turn P1: P2: Problemas de la solución propuesta: .uso ineficiente del procesador .

Exclusión Mutua con Espera Activa (2) La solución de Peterson para la exclusión mutua 34 .

Exclusión Mutua con Espera Activa (3) Entrando y saliendo de una región crítica usando instrucciones de tipo TSL 35 .

.. Datos Consumidor Producción Buffer: Consumo cíclica de capacidad para n items cíclico de datos datos 36 . Espera Activa Ejemplo: Productor / Consumidor P1: P2: Productor Datos ..

Suspención y Activación Productor-Consumidor con carrera crítica fatal 37 .

Semáforos El problema del productor- consumidor usando semáforos 38 .

Semáforos Binarios (Mutex) Implementación de mutex_lock y mutex_unlock 39 .

} Implementación sin Busy-Waiting 40 . currentThread->Sleep(). (void) interrupt->SetLevel(oldLevel). } value--. while (value == 0) { queue->Append((void *)currentThread). Semáforos Primitivas wait / signal void Semaphore::wait() { IntStatus oldLevel = interrupt->SetLevel(IntOff).

thread = (Thread *)queue->Remove(). value++. if (thread != NULL) scheduler->ReadyToRun(thread). Semáforos Primitivas wait / signal void Semaphore::signal() { Thread *thread. (void) interrupt->SetLevel(oldLevel). IntStatus oldLevel = interrupt->SetLevel(IntOff). } Implementación sin Busy-Waiting 41 .

Monitores • Objetos compartidos de uso sincrónico: P1 P2 Monitor: •Variables •Variables Condicionales •Operaciones •Inicialización 42 .

Monitores (1) Ejemplo de un monitor 43 .

Monitores (2) our_monitor • Productor-Consumidor mediante monitores – Sólo un procedimiento del monitor se encuentra activo al mismo tiempo – El buffer tiene N slots 44 .

Monitores (3) Solución del productor-consumidor en Java (parte 1) 45 .

Monitores (4) Solución del productor-consumidor en Java (parte 2) 46 .

IPC • „Conección“ de Procesos / Hebras • Operaciones para el envío y recepción de mensajes • almacenamiento temporal Ejemplo: Unix / Linux: Pipes 47 . Sistema de Mensajería Mensaje send receive P1 P2 send receive Canales .

Paso de Mensajes El problema del productor- consumidor con N mensajes 48 .

Barreras

• Use de barreras
– Proceso se acera a una barrera
– Todos los procesos excepto uno ha llegado a la
barrera
– El último proceso llega, todos pueden continuar 49

Los Filósofos Comensales (1)

• Filósofos comen/piensan
• Comer requiere de 2
tenedores
• Toma un tenedor a la vez
• Cómo prevenir un
deadlock

50

Los Filósofos Comensales (2)

¡Una solución equivocada!
51

Los Filósofos Comensales (3) Solución (parte 1) 52 .

Dining Philosophers (4) Solución (parte 2) 53 .

El problema de los lectores y escritores n lectores o 1 escritor tienen acceso simultáneamente Una solución al problema de los lectores y escritores 54 .

Sincronización de Secuencias „(B después de N) y (M después de A)“ P1: Sema F1.up : F2.up N F2.down c o : : B M : : P1 y P2 tienen un rendezvou en las posicíones c y o 55 .down : F1. F2 init 0. P2: : : A F1.

El problema del Barbero Dormilón (1) 56 .

Introducción al Scheduling (1a) medium- Partially term Partially executed executed Swapet Swapet out out preocess preocess long-term short- term ready ready queue queue CPU new CPU terminate I/O I/Owaiting waiting I/O I/O queues queues 57 .

Introducción al Scheduling (1b) • Ráfagas (burst) de usos de CPU alternados con periodos de espera por I/O – un proceso de tipo CPU-bound – un proceso de tipo I/O bound 58 .

incorporar P3 P12 P8 P33 procesamiento Lista READY B] estrategia para interrumpir la ejecución: Preemption 59 .Scheduling: Planificación / Itineración A] estrategia para determinar la secuencia reordenar.

Introducción al Scheduling (2a) Scheduling Algorithm Goals 60 .

Introducción al Scheduling (2b) • Utilización de la CPU • Productividad (Throughput) • Tiempo de Servicio (Turnaround Time) • Tiempo de Espera (Waiting Time) • Tiempo de Respuesta (Response Time) Scheduling Algorithm Goals 61 .

EDF) – Hard Realtime Constraints – Soft Realtime Constraints • .. 62 . Algoritmos de Scheduling • First Come First Served (FCFS or FIFO) • Shortest Job First (SJF) • Round Robin Scheduling (RR) • Priority Scheduling (PS) – Static Priorities – Dynamic Priorities • Realtime Scheduling (RM..

Scheduling en Sistemas de Tipo Batch (2) Un ejemplo de shortest job first (SJF) 63 .

Scheduling en Sistemas de Tipo Batch (2) 3 niveles de scheduling 64 .

Scheduling en Sistemas Interactivos (1) • Algoritmo de tipo Round Robin – Lista de procesos que pueden ser ejecutados – Lista de procesos luego que B usó su quantum 65 .

Scheduling en Sistemas Interactivos (2) Algoritmo de scheduling basado en 4 clases de prioridades 66 .

Algoritmos de Scheduling (1) FCFS SJF PS RRQ=1 RRQ=3 time 0 6 12 18 67 .

19 (10. 16. 19 (15) RRQ=3 6. Algoritmos de Scheduling (2) FCFS 5. 15.25) time 0 6 12 18 Tiempo de Servicio (Turnaround Time) 68 . 19 (14. 14.25) PS 7. 14. 10.75) SJF 3. 7. 19 (11. 15. 19 (11. 18. 12. 8.75) RRQ=1 10.

12 (5. 15 (7) SJF 0. 7. 5. 8. Algoritmos de Scheduling (3) FCFS 0.25) RRQ=3 9. 3. 12. 14 (9. 10. 7. 14 (7.5) time 0 6 12 18 Tiempo de Espera (Waiting Time) 69 .5) PS 0. 11 (10. 12. 3. 7.75) RRQ=1 11.

Scheduling en Tiempo Real Análisis de Factibilidad: • dado – m eventos periódicos – evento i occurre con periodo Pi y requiere Ci segundos • sólo es factible ssi: m Ci ∑ i =1 Pi ≤1 70 .

Mecanismos • Separa el qué está permitido de cómo se implementa – Un proceso conoce cuál de sus hebras es importante y requiere prioridad • Parametrización de algoritmos de Scheduling – Mecanismos en el núcleo • Parámetros proporcionados por el proceso de usuario – Políticas fijadas por el usuario 71 . Políticas vs.