Sistemas Operativos. Concurrencia. Concurrencia de procesos. Concurrencia de procesos. Ejecución simultánea de procesos.

Documentos relacionados
Concurrencia: Exclusión mutua y Sincronización

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

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

Mensajes. Interbloqueo

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

Manipulación de procesos

Sistemas Distribuidos

Concurrencia entre Procesos.

un programa concurrente

Usuario. Programas de Aplicación. Sistema Operativo. Hardware. Figura 1. Sistema de cómputo estructurado por capas.

Herramientas Informáticas I Software: Sistemas Operativos

UNIVERSIDAD NACIONAL FEDERICO VILLARREAL FACULTAD DE INGENIERÍA ELECTRÓNICA E INFORMÁTICA SÍLABO

CAPITULO 6. Control de Concurrencia y Recuperación

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

Hilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010

SOLUCIONES. SISTEMAS OPERATIVOS Examen de la convocatoria extraordinaria de diciembre 2 de diciembre de 2010

Implementación de monitores POSIX

SISTEMAS OPERATIVOS Arquitectura de computadores

Concurrencia. Primitivas IPC con bloqueo

TEMA 5: Control de la Concurrencia en Java (API Estándar)

Tema 2 Introducción a la Programación en C.

Sistemas Operativos Ricardo Sanz

V.- V.-El El manejo de de las las Interrupciones

Sincronización. Arquitectura de Computadores

Introducción a los Sistemas Operativos

Funcionamiento de la computadora

PREGUNTAS INFORMÁTICA MONITOR UPB EXAMEN 1

Programación concurrente

APUNTES SOBRE PROCESOS Y DEADLOCK CONCEPTO DE PROCESO 1

Solución Examen Febrero 2006

TEMA II: ALMACENAMIENTO DE LA INFORMACIÓN

Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria

El modelo de Procesos

Introducción a los Sistemas Operativos

CÓMO TRABAJA TU SISTEMA OPERATIVO?

Principios de Computadoras II

INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:

Contenido. Sistemas de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida. Categorias de los Dispositivos de Entrada/Salida

Sistemas Operativos Administración de la Memoria

ESTRUCTURA BÁSICA DE UN ORDENADOR

Adaptación de la arquitectura linux lib de MaRTE OS a multiprocesadores

Definición de Sistema Operativo

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

Sistemas Operativos. Curso 2016 Procesos

Estatutos de Control C# Estatutos de Decisión (Selección)

Curso 0 de Informática

administración de combustible evolucionado

Señal de petición de Interrupción

FACULTAD DE INGENIERÍA DEPARTAMENTO DE INGENIERÍA INFORMÁTICA Y CIENCIAS DE LA COMPUTACIÓN CÓDIGO AÑO APLICACIÓN 2007 ELECT. COMP.

Microprocesadores. Procesadores IA-32 e Intel R 64 Tareas. Alejandro Furfaro

Organización del Computador 1 Memoria Cache

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

UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA Diseño con Microcontroladores

ADMINISTRACION DE LA MEMORIA. En memoria 1 solo proceso Desventajas:

Federico Peinado

Usando el Sistema Operativo

Procesos y Memoria. Administración de Memoria 26/10/2010 SISTEMAS OPERATIVOS

Objetivos. Objetivos. Arquitectura de Computadores. R.Mitnik

Escuela Politécnica Superior de Ingeniería Departamento de Ingeniería Informática

Servicios del Sistema Operativo (SO)

Sistemas Operativos [Procesos]

Memoria. Organización de memorias estáticas.

I.3. Interacción entre Procesos Concurrentes.

BUAP FACULTAD DE CIENCIAS DE LA COMPUTACIÓN SISTEMAS OPERATIVOS 2 PRACTICA 2 JAIME MORALES FLORES

PROGRAMACION CONCURRENTE

Introducción a la arquitectura de computadores

ARQUITECTURA BÁSICA DEL ORDENADOR: Hardware y Software. IES Miguel de Cervantes de Sevilla

Introducción a la Computación. Herramientas Informáticas. Omar Ernesto Cabrera Rosero Universidad de Nariño

1. INTRODUCCIÓN 1.1. Qué es un sistema operativo? El sistema operativo como máquina extendida El sistema operativo como gestor de

Pontificia Universidad Católica del Ecuador

Tarea #1 Comunicación y Sincronización entre Procesos

Capítulo 1 Introducción a la Computación

MANUAL DE USUARIO SOLUTION MANAGER PARA ENTERPRISE SUPPORT

3. Sistemas operativos

Diseño de sistemas concurrentes

TEMA III - Interrupciones en Sistemas en Tiempo Real

Secciones críticas y exclusión mutua

Copias de seguridad y recuperación Guía del usuario

Sistemas Operativos Practica 1: procesos y concurrencia.

Ejercicio 1 (3 puntos).-

Procesos. Planificación del Procesador.

M. C. Felipe Santiago Espinosa

Manual. de Instalación. Franklin USB Modem CDU-680.

Actualizaciones de software Guía del usuario

0.Principios del Microprocesador

Plataformas de soporte computacional: arquitecturas avanzadas,

Fundamentos de la Programación

Cómo actualizar tu laptop o tablet Toshiba con Windows a Windows 10

Las optimizaciones pueden realizarse de diferentes formas. Las optimizaciones se realizan en base al alcance ofrecido por el compilador.

El lenguaje C. #define MAX LINEA 1000 /* maximo tamanio de linea de entrada */

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente.

ESTRUCTURAS REPETITIVAS EN PHP

UNIVERSIDAD TECNOLOGICA DE HERMOSILLO TSU EN INFORMÁTICA MATERIA: BASES DE DATOS II AUTOR: M. C. Carlos Alfonso Gámez Carrillo

Area Académica: Sistemas Computacionales. Tema: Elementos de diseño de memoria caché

Profesor(a): Ing. Miriam Cerón Brito

Preliminares. Tipos de variables y Expresiones

Informática Electrónica Manejadores de Dispositivos (Device Drivers)

Programación Básica. Martin Méndez Facultad de Ciencias Universidad Autónoma de San Luis Potosí

Tema 2 Conceptos básicos de programación. Fundamentos de Informática

Transcripción:

Sistemas Operativos Concurrencia Mario Medina (mariomedina@udec.cl) Everybody understands what concurrency means? Two lies at once. Todos entienden qué significa concurrencia? Dos mentiras a la vez. Luis Felipe Cabrera Concurrencia Ejecución simultánea de procesos Sistema multiprogramado Provee a los procesos la ilusión de ejecución simultánea Sistema multiprocesador Permite la ejecución simultánea de procesos La velocidad relativa de ejecución de procesos es impredecible Procesos comparten recursos Competencia por recursos del sistema operativo Cooperación via recursos compartidos Cooperación via comunicación entre procesos Problemas de concurrencia Exclusión mutua Bloqueos mortales (deadlock) Inanición Sistemas Operativos, 2008-1 Sistemas Operativos, 2008-1 1 Sean dos procesos, A y B, que comparten una variable X, y que ambos quieren incrementar Incrementa X Incrementa X Al parecer, hay 2 casos: Se ejecuta A primero y luego B Se ejecuta B primero y luego A X siempre se incrementa en 2 A Lee X a un registro A Incrementa registro A Escribe registro en X Qué pasa si se ejecutan así? A Lee X a un registro A Incrementa registro A Escribe registro en X B Lee X a un registro B Incrementa registro B Escribe registro en X B Lee X a un registro B Incrementa registro B Escribe registro en X Falso! Operaciones no son atómicas Datos son leídos desde memoria a los registros del procesador Operaciones actúan sobre los registros Cada proceso tiene su propio conjunto de registros X se incrementa sólo una vez Cada proceso incrementa su propia copia local de X Una de las actualizaciones de X se pierde Sistemas Operativos, 2008-1 2 Sistemas Operativos, 2008-1 3

Table 5.2 Process Interaction Aquésedebeelproblema? Carrera Dos o más procesos comparten un objeto Variable Flag Archivo Posición de memoria Dos o más procesos compiten por un objeto Procesos independientes pueden competir por recursos del sistema operativo Accesos a la variable interfieren entre sí Difícil de detectar A veces ocurre, a veces no No hay un sistema de control de acceso Si A está usando X, entonces B no puede usar X Exclusión mutua Ejecución correcta de un programa no debe depender de velocidad relativa de procesos Degree of Awareness Relationship Influence that one Process Has on the Other Processes unaware of each other Processes indirectly aware of each other (e.g., shared object) Processes directly aware of each other (have communication primitives available to them) Competition Cooperation by sharing Cooperation by communication process independent of the action of others process may depend on information obtained from others process may depend on information obtained from others Potential Control Problems Mutual exclusion Deadlock (renewable Mutual exclusion Deadlock (renewable Data coherence Deadlock (consumable Sistemas Operativos, 2008-1 4 Exclusión mutua Coherencia de datos y sección Exigencia básica para la concurrencia de procesos Procesos A y B comparten un recurso X Datos Archivos Memoria Dispositivos (impresora, pantalla, etc.) Sistema Monoprocesador Interrupciones pueden detener ejecución en cualquier punto Sistema Multiprocesador Dos procesos ejecutándose simultáneamente pueden acceder a la misma variable global Necesario proteger variables compartidas Controlar el código que accede a la variable Sección Parte del programa que accede a recursos compartidos Sean dos procesos, A y B, que comparten variables X e Y En ambos se cumple que X = Y X=X+1 Y = 2*Y Y=Y+1 X = 2*X Qué pasa si se ejecutan así? nuevo X: 2*(X + 1) nuevo Y: 2*Y + 1 X=X+1 Y=Y+1 Y = 2*Y X = 2*X Ya no se cumple que X=Y Se cumple exclusión mutua sobre las variables Necesario definir correctamente sección Sistemas Operativos, 2008-1 5 Sistemas Operativos, 2008-1 6

Requisitos para exclusión mutua Exclusión mutua por hardware 1. Sólounprocesoestáen la sección en un momento dado 2. Un proceso interrumpido en la sección no no interfiere con el resto 3. No debe haber bloqueos mortales o inanición 4. Si ningún proceso está en la sección, cualquier proceso que quiere entrar puede hacerlo sin demora 5. No hay suposiciones sobre velocidad relativa de procesos 6. No hay suposiciones sobre el número de procesadores 7. Los procesos permanecen en la sección por un período finito Soluciones al problema de exclusión mutua Soluciones por hardware Soluciones por software a nivel de procesos Soluciones por software a nivel de sistema operativo Deshabilitación de Interrupciones Proceso se ejecuta hasta que termina o realiza llamada al sistema Exclusión mutua garantizada Proceso /* Sección no */ /* Deshabilita interrupciones */ /* Sección */ /* Rehabilita interrupciones */ /* Resto del programa */ Limita multiprogramación Eficiencia del sistema baja Solución no sirve en sistemas multiprocesadores Entrega control de interrupciones al usuario Error en programa de usuario paraliza sistema Sistemas Operativos, 2008-1 7 Sistemas Operativos, 2008-1 8 Instrucciones de máquina especiales Test-And-Set Instrucción realiza dos o más acciones sobre una posición de memoria en un único ciclo de instrucción Instrucción no puede ser interrumpida (Instrucciones atómicas) Ventajas Aplicable a cualquier número de procesadores Simple y fácil de verificar Fácil de definir varias secciones s Desventajas Procesador espera en ciclo ocioso (Busy Wait) Puede producirse inanición Puede producirse bloqueo mortal Test-And-Set(i) if(i == 0) { i = 1; return 1; } else return 0; Instrucción examina el valor de posición de memoria i si i = 0,locambiapor1yretorna1 si i = 1, retorna 0 Ejemplo int lock; while (Test-And-Set(lock) == 0) /* No hacer nada */ /* Sección */ lock = 0; Sistemas Operativos, 2008-1 9 Sistemas Operativos, 2008-1 10

Exchange Soluciones por software a nivel de procesos Exchange(mem1, mem2) int temp; temp = mem1; mem1 = mem2; mem2 = temp; Intercambia los contenidos de las posiciones de memoria mem1 y mem2 en forma atómica Extensible a n procesos Ejemplo int key = 1; int lock; while (key == 1) Exchange(key, lock); /* Sección */ Exchange(key, lock); Acceso a sección por turnos Variable int turno compartida while(turno!= 0) while(turno!= 1) Procesos se alternan estrictamente en ingresar a la sección Solución no aprovecha plenamente concurrencia de procesos Qué pasasip 0 es mucho más rápido que P 1? Si P 0 falla, P 1 se bloquea permanentemente Solución: Cada proceso tiene su propia señal n lock + key i = n i=1 Sistemas Operativos, 2008-1 11 Sistemas Operativos, 2008-1 12 Otro intento Tercer intento Definir un vector compartido int flag[2] Un proceso puede preguntar por el flag del otro Siflages0,elotroprocesonoestá en sección while(flag[1] == 1) while(flag[0] == 1) Si P 0 falla fuera de su sección, P 1 puede entrar en su sección Solución no garantiza exclusión mutua! 1. P 0 ejecuta while() y encuentra flag[1] == 0 2. P 1 ejecuta while() y encuentra flag[0] == 0 3. P 0 ejecuta flag[0] = 1 y entra en sección 4. P 1 ejecuta flag[1] = 1 y entra en sección Avisar que se desea entrar en sección while(flag[1] == 1) while(flag[0] == 1) Solución garantiza exclusión mutua Solución puede causar Bloqueo Mortal 1. P 0 ejecuta flag[0] = 1 2. P 1 ejecuta flag[1] = 1 3. P 0 ejecuta while() y encuentra flag[1] == 1 4. P 1 ejecuta while() y encuentra flag[0] == 1 Ambos procesos esperan indefinidamente por el otro Sistemas Operativos, 2008-1 13 Sistemas Operativos, 2008-1 14

Cuarto intento Algoritmo de Dekker Ceder la sección si otro proceso desea entrar while(flag[1] == 1) { while(flag[0] == 1) { Solución garantiza exclusión mutua Solución puede causar Bloqueo Vital 1. P 0 ejecuta flag[0] = 1 2. P 1 ejecuta flag[1] = 1 3. P 0 ejecuta while() y encuentra flag[1] == 1 4. P 1 ejecuta while() y encuentra flag[0] == 1 5. P 0 ejecuta flag[0] = 0 6. P 1 ejecuta flag[1] = 0 Ambos procesos esperan indefinidamente por el otro Cambio en velocidad relativa permitiría romper bloqueo Requiere de vector flag[] ydevariableintturno flag[n] avisa que proceso n desea entrar a la sección turno determina prioridad de ingreso en caso de conflicto while(flag[1] == 1) { while(flag[0] == 1) { if(turno == 1) { if(turno == 0) { while(turno == 1) while(turno == 0) /* No hacer nada */; /* No hacer nada */; Sistemas Operativos, 2008-1 15 Sistemas Operativos, 2008-1 16 Algoritmo de Peterson Requiere de vector flag[] ydevariableintturno flag[n] avisa que proceso n desea entrar a la sección turno determina prioridad de ingreso en caso de conflicto while(flag[1] == 1 while(flag[0] == 1 && turno == 1) && turno == 0) /* No hacer nada */; /* No hacer nada */; Similar a algoritmo de Dekker Más simple de entender e implementar Lo primero que un proceso hace es ceder el turno Como Dekker, usuario debe implementar algoritmo correctamente en su código Sistemas Operativos, 2008-1 17