Unidad 1: Gestión de Procesos

Documentos relacionados
Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia

Concurrencia entre Procesos.

Concurrencia: Exclusión mutua y Sincronización

Implementación de monitores POSIX

TEMA 2: PROCESOS E HILOS: CONCURRENCIA, SINCRONIZACIÓN Y COMUNICACIÓN

Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria

INDICE 1. Introducción 2. Entrada / Salida: Principios y Programación 3. Procesos

Mensajes. Interbloqueo

Ejercicios con Monitores

SISTEMAS OPERATIVOS I (Sistemas) / SISTEMAS OPERATIVOS (Gestión) septiembre 2009

Tema 1: Programación Multiproceso. Curso

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

PROGRAMACIÓN CONCURRENTE

4.6.- Integridad: Control de concurrencia.

Paradigma de paso de mensajes

Tema 3. Monitores Programación Concurrente

7. Programación Concurrente

Bloque III: El nivel de transporte. Tema 7: Intercambio de datos TCP

Sistemas Operativos. Daniel Rúa Madrid

Ejercicios de Hilos. Índice

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

Concurrencia. Primitivas IPC con bloqueo

TEMA 3. CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO. Definición y objetivos de un S.O

Tema 12: El sistema operativo y los procesos

Lección 10: Ejemplos de programación con semáforos

Tema 3 SUBRUTINAS. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Sistemas Operativos Tema 11. Interbloqueo José Miguel Santos C. Rubén García - Alexis Quesada

PROBLEMAS CLÁSICOS DE LA COMUNICACIÓN N ENTRE PROCESOS

Sistemas Operativos. Características de la Multiprogramación. Interacción entre Procesos. Características de la Multiprogramación

Pontificia Universidad Católica del Ecuador

Procesos Definición y Estados

LABORATORIO 4: CONCURRENCIA Juan Antonio de la Puente - 21/10/15

Funcionamiento de la computadora

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Guía de signatario de DocuSign para SAP

Validación de cupones por PIN

Protocolo de Ventana Deslizante 2008

Funciones Definición de función

Sistemas Operativos. Procesos

dit Planificación de tareas de tiempo real Juan Antonio de la Puente DIT/UPM UPM Copyright 2007, Juan Antonio de la Puente

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

Unidad 4 - Procesamiento paralelo. Arquitectura de computadoras. D o c e n t e : E r n e s t o L e a l. E q u i p o : J e s s i c a F i e r r o

Concurrencia. Concurrencia

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

SISTEMAS OPERATIVOS AVANZADOS

T5-multithreading. Indice

Sistemas Operativos. (Procesos)

Interbloqueos. Módulo 7. Departamento de Informática Facultad de Ingeniería Universidad Nacional de la Patagonia San Juan Bosco

Introducción a los Sistemas Operativos

Tipos de Diseño. Ing. Elizabeth Guerrero V.

El problema de los Filósofos

Arquitecturas cliente/servidor

SEC. 2.2 COMUNICACIÓN ENTRE PROCESOS 63

dit UPM Tema 3: Concurrencia /ejercicios Análisis y diseño de software José A. Mañas

CICLOS DEL PROCESADOR

PROGRAMACION CONCURRENTE

1. Cuántas sentencias hay en la secuencia principal del siguiente programa?

ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA INFORMÁTICA UNIVERSIDAD DE SEVILLA COMPUTADORAS Y COMUNICACIONES. Redes informáticas de área local (LAN)

Tema 3. Aplicaciones de Tipo Consola

Comunicación mediante mensajes

Capítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS

Sistema Operativo. Repaso de Estructura de Computadores. Componentes Hardware. Elementos Básicos

Guía para el colaborador

Programación MODULAR: Subalgoritmos - funciones y procedimientos

Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.

Cristian Blanco

Una dirección IP es una secuencia de unos y ceros de 32 bits. La Figura muestra un número de 32 bits de muestra.

Net-LAN. Guía rápida del Kit inalámbrico NetLAN para ZyXEL P660 HW61

Diseño de sistemas concurrentes

Equipamiento ADSL» Inalámbrico. Adaptador USB PAUTAS PARA LA VERIFICACION TCP/IP

Aspectos Básicos de Networking

Manipulación de procesos

Crear Tareas. Crear Tareas. 1 de 8. En este tutorial vamos a revisar el comportamiento de la herramienta "Tarea".

Diseño arquitectónico 1ª edición (2002)

Apuntes de Regulación y Automatización. Prácticas y Problemas.

DIRECCIONAMIENTO IP TECNOLOGÍA E INFORMÁTICA (ONCE)

PHP: Lenguaje de programación

USO DE SUBRUTINAS, TRANSMISIÓN DE PARÁMETROS Y COMPILACIÓN CONDICIONAL EN C++

Tema 14: Sistemas Secuenciales

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Sistemas Operativos I. Enxeñería Informática. Curso 2007/08. Práctica 2: Concurrencia de procesos: Productores/Consumidores.

Modelo OSI y TCP/IP. Teleprocesamiento Ing. Zoila Marquez.

MANUAL DE PROCEDIMIENTO PARA LA UTILIZACIÓN DEL SISTEMA CIFRADOC/CNMV/D

Router Teldat. Protocolo NTP

TEMA 7: Ficheros. TEMA 7: Ficheros Concepto de fichero

Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.

Cómo instalar Estudio One SQL versión 2.30 en Sistema Operativo Windows de 64 bits

Bloque IV: El nivel de red. Tema 12: ICMP

Transcripción:

Unidad 1: Gestión de Procesos Tema 1, Concurrencia: Exclusión mutua y sincronización. 1.1 Problema de la sección crítica, alternativas al uso de semáforos: - Regiones críticas, Monitores, Variables de condición y Paso de mensajes. 1.2 Problemas clásicos de sincronización: - Productor consumidor usando monitores y paso de mensajes. Problema de los Lectores /escritores. Informática (Segovia) 1

El problema de la sección crítica (Conceptos generales): Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA. Necesidad de sincronización y comunicación. Comunicación: Necesidad de transmisión de información entre procesos concurrentes. Sincronización: Necesidad de que las ejecuciones de los procesos concurrentes se produzcan según una secuenciación temporal, conocida y establecida entre los propios procesos. Informática (Segovia) 2

El problema de la sección crítica (Conceptos generales): Exclusión mutua: Para que el acceso a ciertos recursos sea exclusivo de un proceso cada vez. A la parte del programa que los utiliza se le llama sección crítica. Sección crítica: Cada proceso tiene un segmento de código llamado sección crítica. No está permitido que varios procesos estén simultáneamente en su sección crítica. Un protocolo rige la forma de entrar y salir de la sección crítica. Informática (Segovia) 3

El problema de la sección crítica (Conceptos generales): Cualquier solución al problema de la sección crítica debe satisfacer los tres requisitos: Exclusión Mutua: Sólo un proceso ejecuta simultáneamente su sección crítica. Progreso: Cuando ningún proceso ejecuta su sección crítica, algún proceso que lo solicite podrá entrar utilizando un protocolo, que impida la entrada simultánea de varios. La decisión de quién entra no se puede posponer indefinidamente. Espera limitada: Ningún proceso debe esperar ilimitadamente la entrada en la sección crítica. Informática (Segovia) 4

Problemas al uso de semáforos: Semáforos: mecanismo cómodo y efectivo para lograr la sincronización. Problemas: Pueden ocasionar errores de temporización difíciles de detectar, puesto que sólo se producen con ciertas secuencias de ejecución específicas. El uso desordenado de las primitivas podría producir que no se consiga la exclusión mutua, ya que dos procesos podrían estar simultáneamente en sus secciones críticas. La construcción de grandes programas resulta muy árduo porque las primitivas wait() y signal() se distribuyen por todo el código y no es fácil advertir su efecto global sobre el valor de los semáforos. Bloqueos mutuos. Informática (Segovia) 5

Alternativas al uso de semáforos: Región crítica. Monitor y Variables condición. Paso de mensajes. Informática (Segovia) 6

Región crítica (RC): Mecanismo de sincronización de alto nivel. Requiere declarar una variable que puede ser compartida entre muchos procesos, pero a la que sólo podrá acceder un único proceso, a través de un mecanismo booleano de control de acceso. Si el número de procesos dentro de esa RC es igual a 0, un proceso que lo desee puede entrar a dicha RC. Si el número de procesos dentro de una RC es igual a 1 y N procesos quieren entrar, esos N procesos deben esperar. Cuando un proceso sale de una RC se permite que entre uno de los procesos que esperan. Informática (Segovia) 7

Región crítica condicional (RCC): Funcionamiento similar a la RC, sólo que además, para que un proceso ejecute su sección crítica la condición de acceso debe de ser cierta. La evaluación de la condición de acceso se considera parte de la región crítica. En caso de que el resultado de la evaluación sea falso, abandona la RC para permitir a otros procesos entrar en ella. Un proceso que haya evaluado la condición a falso no vuelve a entrar a su RC hasta que otro proceso abandone ésta (espera activa): Se vuelve a ejecutar cuando posiblemente alguien haya modificado dicha condición. Informática (Segovia) 8

Región crítica condicional (RCC): Limitaciones de las RCC: Aunque mejoran algunos aspectos negativos de los semáforos, tienen algunas limitaciones: Pueden aparecer a lo largo de todo el programa. No se garantiza la integridad de las estructuras de datos compartidas. Realizar una implementación eficiente de las mismas es una tarea difícil. Informática (Segovia) 9

Monitor: Mecanismo de sincronización de alto nivel. Funcionalidad equivalente a la de los semáforos pero más fáciles de controlar. Tipo abstracto de datos que conjuga: Estructuras de datos. Conjunto de operaciones asociadas a tales estructuras. + Exclusión mutua Sincronización (variables de condición). Informática (Segovia) 10

Monitor: Es un módulo de software: Consta de uno o varios procedimientos. Secuencia de inicio. Datos locales. Características básicas: Variables locales sólo accesibles para los procedimientos del monitor y no para procedimientos externos. Un proceso entra en el monitor al invocar uno de sus procedimientos. Sólo un proceso se puede estar ejecutando en el monitor en un instante dado. Informática (Segovia) 11

Monitor: Deben incluir herramientas de sincronización: Un monitor proporciona sincronización por medio de las variables de condición que se incluyen dentro del monitor y que son accesibles sólo desde dentro. Dos funciones operan con las variables de condición: cwait(c): suspende (bloquea) la ejecución del proceso que llama a la condición c. El monitor estará disponible para ser usado por otro proceso. csignal(c): reanuda la ejecución de un proceso que fue suspendido por un cwait(). Si hubiera varios elige uno de entre ellos y si no hay ninguno no hace nada. Informática (Segovia) 12

Estructura de un monitor: Informática (Segovia) 13

Monitor, Variables condición: Qué ocurre cuando un proceso P realiza una operación csignal() sobre una variable condición y existe un proceso suspendido Q asociado a dicha variable? Si varios procesos están suspendidos por la concición c y algún proceso ejecuta csignal(c ) qué proceso se reanuda?. Informática (Segovia) 14

Soluciones al problema del productor/consumidor con buffer acotado: Por medio de Monitores con señales (monitor de Hoare). Por medio de Monitores con notificación y difusión (monitor de Lampson y Redell). Informática (Segovia) 15

Solución al P/C con monitores con señales: El procedimiento comprueba primero la condición no_lleno, para saber si hay espacio libre en el buffer. De no haberlo el proceso que está ejecutando el monitor se suspende cualquier otro proceso (P o C) puede entrar ahora al monitor. Cuando el buffer ya no esté lleno el proceso suspendido puede ser retirado de la cola y reactivado y el proceso podría reanudarse. Tras introducir un carácter en el buffer, el proceso activa la condición no_vacío. Conclusiones: Como vemos la propia estructura del monitor garantiza la EM, no es posible que P y C accedan simultáneamente al buffer. Lo único que tiene que hacer el programador es situar correctamente las primitivas cwait() y csignal() en el monitor controlando que no se depositen elementos en un buffer lleno o no se extraigan de uno vacío. Informática (Segovia) 16

Inconvenientes de los monitores con señales: Posible error de sincronización de monitores: Si olvidamos cualquiera de los csignal(), los procesos que entran en la cola de la condición se quedan colgados permanentemente. Si un proceso ejecuta un csignal() y no ha terminado en el monitor, hacen falta dos cambios de proceso adicionales para continuar la ejecución del programa: Uno para suspender el proceso. Otro para reanudarlo cuando el monitor quede disponible. La planificación debe de ser muy fiable. Cuando se ejecuta un csignal() se activará inmediatamente un proceso de la cola de la condición correspondiente y el planificador debe asegurarse de que ningún otro proceso entre al monitor antes de la activación. Informática (Segovia) 17

Soluciones al P/C con monitores de notificación y difusión: Notifican los procesos en vez de reactivarlos a la fuerza. Se puede añadir una primitiva de difusión cbroadcast(), que provoca que todos los procesos que están esperando por una condición se sitúan en el estado de listos. Esto es conveniente en situaciones donde un proceso no sabe cuantos procesos deben reactivarse. Ventajas sobre los monitores con señales: 1. Menor propensión a errores, cada procedimiento comprueba la variable del monitor después de ser despertado, por medio del while. 2. Más modulable en cuanto a la construcción de programas. 3. Hace cumplir la EM y concluye la operación de E/S antes de permitir cualquier otra operación sobre el buffer. 4. Dispone de suficiente memoria para que este proceso pueda completar su solicitud de asignación. Informática (Segovia) 18

Paso de mensajes: Refuerzo de la Exclusión Mutua. Intercambio de información. Se caracteriza por dos primitivas: send(destino, mensaje): envía mensaje a proceso de destino. receive(origen, mensaje): información indicando el proceso emisor y el mensaje. Informática (Segovia) 19

Implementación de paso de mensajes: Sincronización: Entre procesos, P1 no puede recibir un mensaje hasta que lo envíe P0. Emisor y receptor pueden ser bloqueantes o no bloqueantes (esperando un mensaje). Posibles combinaciones: send() bloqueante y receive() bloqueante: Tanto el emisor como el receptor se bloquean hasta que se entrega el mensaje. send() no bloqueante y receive() bloqueante: Permite que un proceso envíe uno o más mensajes a varios destinos tan rápido como sea posible. El receptor se bloquea hasta que llega el mensaje solicitado. send() no bloqueante y receive() no bloqueante: Ninguno debe esperar. Informática (Segovia) 20

Direccionamiento: Debemos especificar en el send() que proceso va a recibir el mensaje, y también que el receive() conozca el origen del mensaje que va a recibir dos esquemas: Direccionamiento directo: Send() incluye una identificación del proceso de destino. Receive() puede conocer de antemano de qué proceso espera un mensaje. Direccionamiento implícito: receive() puede utilizar el parámetro origen para devolver un valor cuando se haya realizado la operación de recepción. Direccionamiento indirecto: Los mensajes no van directamente del emisor al receptor. Los mensajes se envían a una estructura de datos compartida formada por colas (buzones o mailboxes). P0 envía mensajes al buzón apropiado y P1 los recoge del buzón. Informática (Segovia) 21

Relaciones de direccionamiento: Uno a uno: enlace privado de comunicación entre P0 y P1. Uno a varios: aplicaciones en los que el mensaje se difunde a un conjunto de procesos. Varios a uno: interacciones cliente/ servidor, un proceso ofrece un servicio a un conjunto de procesos. Varios a varios: Informática (Segovia) 22

Formato de mensajes: Tipo de longitud ID de destino Cabecera ID de origen Longitud de mensaje Información de control Cuerpo Contenido del mensaje Informática (Segovia) 23

Implementación de la EM mediante paso de mensajes: /* programa exclusion mutua */ void main(){ const int n= /*numero de procesos*/; crear_buzon(excmut); void P(int i){ send(excmut, null); mensaje msj; parbegin(p(1),p(2),..., P(n)); while (cierto){ } receive (exmut, msj); /* sección crítica */ send (exmut, msj); /*resto*/ } } Informática (Segovia) 24

Implementación de la EM mediante paso de mensajes: Un proceso (P) que desea entrar en su sección crítica intenta primero el receive(), si el buzón está vacío P se bloquea. Si el proceso consigue el mensaje, ejecuta su sección crítica y después devuelve el mensaje al buzón el mensaje funciona como un testigo que se pasa de un proceso a otro. Esta técnica implica que si hay varios procesos ejecutando simultáneamente el receive(): Si hay un mensaje, se entrega sólo a uno de los procesos y los otros se bloquean. Si el buzón está vacío, todos los procesos se bloquean. Cuando haya un mensaje disponible sólo se activará y tomará el mensaje uno de los procesos bloqueados. Informática (Segovia) 25

1.2 Problema de los lectores/escritores. Enunciado: Tenemos un área de datos (que puede ser un archivo, un bloque de memoria principal o un banco de registros del procesador) compartida entre varios procesos. Algunos procesos sólo leen los datos (lectores) y otros sólo escriben (escritores). Se puede satisfacer que: 1. Cualquier número de lectores puede leer el archivo simultáneamente. 2. Sólo puede escribir en el archivo un único escritor en cada instante. 3. Si un escritor está accediendo al archivo, ningún lector puede leerlo. Informática (Segovia) 26