Sincronización de Procesos Introducción a Semáforos

Slides:



Advertisements
Presentaciones similares
Introducción a C++ Sistemas Operativos
Advertisements

- Tercer curso de capacitación sobre el Programa de intercambio de datos de inspecciones de seguridad en rampa (IDISR/3 - Ecuador) Bienvenidos Quito/Guayaquil,
Mecanismo de semáforos
Ejemplo de Programa C++
El Problema de las Vacas
LOGROS DEL PERÍODO Utiliza de forma correcta las funciones para entrada y salida de datos en c++. Utiliza los elementos básicos de un programa en c++.
A partir del lenguaje C Entorno de programación Visual C++
Bucle for.
Operaciones sobre un árbol
INFORMATICA I Funciones CLASE 13.
Árboles binarios. Algoritmos básicos
CS1101X Programming Methodology
Algoritmos y Estructuras de Datos
Ciclo Operativo Área Codigo DI-MC- 02 al 10 No. de Revisión 0 Fecha de Revisión Marzo 2013 Elaboro RH Página1 de 1.
Informática II 1 Diego Fernando Serna RestrepoSemestre 2011/2.
Informática II Prof. Dr. Gustavo Patiño MJ
 Funciones predefinidas en las listas Se puede definir rangos en las listas. Ejemplo: [1..10] que es la lista del 1 hasta el 10 El operador ++ concatena.
ESTRUCTURAS DE SECUENCIA
Introducción a la Computación
Estructuras de Repetición
INTRODUCCIÓN A LA COMPUTACIÓN
SOBRECARGA DE FUNCIONES
Int.VisualizaciónA. García-Alonso1 >> Visualización : Introducción
Estructuras de Datos Manipulación de la Especificación de la Lista en C++
Cont. Arbol Binario de Búsqueda
Estructuras de Datos Cont. C++ y Tipos de Datos. Ejemplo: Vector de Objetos #include class estudiante { private: int aCarne; char aNombre[20]; float aNota;
Estructuras de Datos Punteros y algo más.
Facultad de Ingeniería y Arquitectura Introducción a la Computación 2006 – II (7ma Semana) Lunes 18 de Setiembre del 2006 Juan José Montero Román.
Arreglos: Vectores en JAVA
Funciones Computación.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
INSTITUCION EDUCATIVA LAS FLORES
Estructuras de repetición
Introducción a clases Programación Orientada a Objetos.
Estructuras de Control de Repetición
Unidad I Java y C++ : Similitudes y diferencias
TEMA 1 PROGRAMACIÓN MODULAR.
Introducción a la Computación
Sección 5-2 Estructuras de Control de Decisión Expresiones Lógicas.
Concurrencia: Exclusión Mútua y Sincronización
Introducción a los punteros
Capítulo 5. Punteros y Cadenas de Caracteres
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
Semáforos Cecilia Hernández
Estructuras de control Introducción a la programación.
Repaso/resumen 1.lectura/escritura y asignación 2.funciones 3.selección de instrucciones (if-else) 4.repetición de instrucciones (while) 5.recursión 6.operadores/instrucciones.
Formato de E/S en streams Prácticas de Fundamentos de Programación Emiliano Torres.
 2003 Prentice Hall, Inc. All rights reserved. 1 Capítulo 4 - Arrays Índice del Capítulo 4.1Introducción 4.2Arrays 4.3Declaración de Arrays 4.4Ejemplos.
TABLAS Definición. El tipo tabla permite definir objetos formados por un conjunto de elementos del mismo tipo. Ejemplos. El tipo tabla se utiliza para.
Preparado por: Nelliud D. Torres Enero/2003 Versión 1.0
Búsqueda. Búsqueda Secuencial Es el método de búsqueda más sencillo En un arreglo o lista ligada consiste en ir visitando cada uno de sus elementos y.
Presentación A continuación presentamos la Plantilla de proyecto educativo para que pueda desarrollar su presentación. Utilice la plantilla para explicar.
Un ejemplo de uso de estos operadores: int a, b, c; a = 0xd3; b = 0xf5; c = 0x1e; d =a |b; d =b &c; d =a ^c; d = ~c; d =c 4 Equivale a
Programación III Clase 09 Apuntadores. Declaración de Punteros Declaración: type* id; Ejemplo: int* ptr; ptr contendrá entonces una dirección a un entero.
Tema ‧ Comando - while Repeticiones. Comando while ‧ Un ciclo es cualquier construcción de programa que repite una sentencia ó secuencia de sentencias.
 Cuál es el marco legal necesario?  Definición y adopción de un modelo de APH  Uniformidad de exigencias y criterios  Coordinación operativa (urgencias,
INTRODUCCIÓN AL LENGUAJE C++. Instrucciones Temas.
int cantidad, horas, cuota; float precio, peso; cantidad = 5; // Le asigno un número a la variable Cantidad; horas = // Le asigno 30 a la variable.
Que es el Proyecto o Propuesta de Campaña Publicitaria
ESTRUCTURAS DE DECISION MULTIPLE
Lenguaje de Programación II PLAN DE EVALUACIÓN CONTENIDO MODALIDAD DE EVAL. PONDERACIÓN INTRODUCCIÓN BÁSICA AL LENGUAJE DE PROGRAMACIÓN.
ARREGLOS Por: Astaroth.  En la clase anterior vimos que c++, es un mundo de cajas, bien hoy hablaremos de una caja un tanto particular “vagoncin” el.
Entrada y Salida en C++, Estructuras de Control Prof. Manuel B. Sánchez.
GERITRIA Y GERONTOLOGIA INTRODUCCIÓN.
DO - WHILE Trejo Mendoza Armando Isacc Díaz Jiménez Christian Alexis César Cerón Cortez Juárez reyes Jason Elihu Hernández Mera Rubén Hernández López José.
INTRODUCCION AL LIBRO DE MATEO.
TITULO DEL TEMA INTRODUCCION.
Import java.util.Scanner; public class While1 { public static void main(String[] ar) { Scanner teclado=new Scanner(System.in); int x,suma,valor,promedio;
SEMINARIO – SEMINARIO DE INVESTIGACIÓN EDUCATIVA
ÁTOMOS ALLENONTAATTENOM.
Transcripción de la presentación:

Sincronización de Procesos Introducción a Semáforos Sistemas Operativos Sincronización de Procesos Introducción a Semáforos

Revisión de operaciones atómicas Ejemplo “competencia de contar” static int i; PROCESS A   i = 0; while (i < 10) { i++; } cout << “gana A”; PROCESS B while (i > -10) { i--; cout << “gana B”; © Cesar Guisado A

El Juego La variable i es compartida La referencia y la asignación es atómica ¿Cuál proceso gana, A o B? ¿Terminará esto en algún momento? ¿Si uno termina, termina el otro? ¿Ayuda si A empieza primero? Sincronización: El uso de operaciones atómicas para asegurar la correcta operación de los procesos que cooperan © Cesar Guisado A

Mucha leche PERSONA A PERSONA B 3:00 3:05 Va al mercado 3:10 Mira en refrigerador No hay leche 3:05 Va al mercado 3:10 Llega al mercado 3:15 Se va del mercado 3:20 Llega a su casa, pone leche en refr 3:25 Llega a su casa, ¡sorpresa! 3:30 © Cesar Guisado A

Lo mas importante en sincronización es comprender lo que se quiere alcanzar. Exclusión mutua: es el mecanismo que asegura que solo un proceso hace algo al mismo tiempo. (los otros se excluyen. Por ejemplo, solo una persona va al mercado a la vez. Sección critica: Es código o conjunto de operaciones en el cual un solo proceso se ejecuta al mismo tiempo. Por ejemplo, comprar. Es una operación que queremos hacer atómica. © Cesar Guisado A

La exclusión mutua Hay diversas maneras para conseguir la exclusión mutua, tienen que ver con una suerte de cerrojo o candado para prevenir que se haga algo. Por ejemplo, antes de ir a comprar, dejar una nota en el refrigerador. © Cesar Guisado A

3 elementos de cerradura 1 Cerrar antes de usar. Dejar una nota 2 Cerrar cuando este listo Remover Nota 3 Esperar si esta cerrado No comprar si hay nota © Cesar Guisado A

Primer intento Procesos A y B 1 If(no_hay_leche) { 2 if(no:hay_nota) { 3 dejar nota; 4 comprar leche; 5 remover nota; 6 } 7 ¿Que pasa si dejamos la nota al principio? ¿Trabajaría esto mejor? © Cesar Guisado A

Segundo intento Cambiando la intención de la nota PROCESO A PROCESO B 1 If (NoNota) { If (Nota) { 2 if (NoLeche) { 3 Comprar Leche; Comprar Leche 4 } 5 DejarNota } RetirarNota; 6 © Cesar Guisado A

Cambiando la intención de la nota ¿Trabaja esto? ¿Cómo sabemos? Cuando nos enfrentamos a programas paralelos complejos, no podemos depender de nuestra intuición o razonamiento informal. Necesitamos probar que los programas trabajan en forma correcta. ¿Qué podemos decir respecto de la solución anterior © Cesar Guisado A

¿Trabaja esto? ¿Cómo sabemos? Supongamos que B se va de vacaciones. A comprará leche solamente una vez y no comprará mas hasta que B regrese. Esto no realiza lo que queremos, no corresponde y nos llevara a morir de inanición. © Cesar Guisado A

Por tercera vez usar dos notas PROCESO A 1 Leave NoteA; 2 if (NoNoteB) { 3 if (NoMilk) { 4 Buy Milk; 5 } 6 7 Remove NoteA; © Cesar Guisado A

La tercera vez El proceso B es el mismo, excepto que se intercambia la Nota A y la nota B ¿Qué podríamos decir respecto de esta solucion? La solución es casi correcta. Solamente necesitamos una forma de decidir quien comprara la leche cuando ambos dejen una nota. (alguien tiene que estar en el lugar para asegurarse que el trabajo se haga) © Cesar Guisado A

Cuarta vez, en caso de empate A compra la leche Proceso A 1 Dejar Nota A; 2 if (NoNotaB) { 3 if (NoLeche) { 4 Comprar Leche; 5 } 6 } else { 7 while (NotaB) { 8 HacerNada; 9 10 if (NoHayLerche) { 11 ComprarLeche; 12 13 14 Remover NotaA; © Cesar Guisado A

Trabajo Descifre estas cuatro posibilidades en sus propias palabras Puede trabajar con un compañero Escriba sus conclusiones, y publíquelas en Jones No olvide firmar su nombre © Cesar Guisado A

Cuarta vez ¿Como sabemos si esto es correcto? Esta solución es correcta, pero tiene dos desventajas A podría tener que esperar mientras B esta comprando Mientras A espera esta consumiendo recursos ( ocupado mientras espera) © Cesar Guisado A