Sincronización de Procesos

Slides:



Advertisements
Presentaciones similares
Capítulo I Gestión de E/S 1.- Gestión de E/S 2.- Hardware de E/S 3.- Software de E/S.
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
GESTION DE PROCESOS.
Tabla de Contenido Concurrencia.
Mecanismo de semáforos
UNIX COMP 240.
Sistema operativo Componentes de un sistema operativo
III - Gestión de memoria
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Introducción a los Sistemas Operativos Memoria Virtual
TRABAJO DE SISTEMAS OPERATIVOS
Comunicación entre procesos en Linux
INSTALACIÓN Y MANTENIMIENTO DE SISTEMAS OPERATIVOS
Comunicación y sincronización de procesos Comunicación por tuberías.
Herramientas para el acceso directo a memoria en C++
HILOS Y COMUNICACIÓN ENTRE PROCESOS
Concurrencia: interbloqueo e inanición
Tema 10: Gestión de Memoria
Conceptos generales: Concurrencia: Existencia simultánea de varios procesos en ejecución. IMPORTANTE: EXISTENCIA SIMULTÁNEA NO IMPLICA EJECUCIÓN SIMULTÁNEA.
Sincronización de Procesos Semáforos Emely Arráiz Ene-Mar 08.
PAGINACIÓN Y SEGMENTACIÓN
UNIDAD 3 Conceptos de Sistemas Operativos.
Unidad III Administración de procesos
Process M.C. Juan Carlos Olivares Rojas Operating Systems February, 2009.
FACILIDADES IPC MC Hilda Castillo Zacatelco.
Sistemas Concurrentes: Paso de mensajes
IET110 Sistemas Operativos P04: Exclusión Mutua Prof. Jonathan MakucSlide: 1.
Tema 10.3: Asignación de Espacio No Contiguo. Tema 10.3: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.),
M.C. Juan Carlos Olivares Rojas
Asignación de Espacio No Contiguo
SISTEMAS OPERATIVOS.
Definición “ Un Sistema Operativo es un programa que actúa como interfaz entre el usuario y el hardware de un computador. Su propósito es proporcionar.
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Un sistema de gestión de bases de datos: Es un conjunto de programas que permite a los usuarios crear y mantener una base de datos. Por tanto, el SGBD.
Gestión de Procesos Gestión de Procesos Procesos Planificación CPU
Capítulo 7 Gestión de memoria.
Unidad III Mecanismos de protección M.C. Juan Carlos Olivares Rojas.
Sincronización de Procesos
Tema 9.6: Sincronización de Procesos
TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS
TEORIA DE LA INFORMACION INGENIERO ANYELO QUINTERO.
Teoría de Sistemas Operativos Sincronización Procesos Departamento de Electrónica 2º Semestre, 2003 Gabriel Astudillo Muñoz
1 Unidad IV Archivos en Java y C++ M.C. Juan Carlos Olivares Rojas.
COMPONENTES DEL SISTEMA OPERATIVO.
Elementos básicos del lenguaje
Memoria virtual.
Integrantes: Ma Carmen Zaragoza Santiago Leticia González Hernández Abraham Obispo Antonio Alexis González Ramírez Eduardo Hernández Tolentino.
Administrador de procesos
Introducción a los SOs.
Tema 8: Introducción a los SOs. Tema 8: 2 Silberschatz, Galvin and Gagne ©2005 Fundamentos de los Computadores (ITT, Sist. Electr.), Introducción.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Teoría de Sistemas Operativos Departamento de Electrónica 2º Semestre, 2002 Gabriel Astudillo Muñoz
SEMÁFOROS §Conceptos l Mecanismo para prevenir la colisión que se produce cuando dos o más procesos solicitan simultáneamente el uso de un recurso que.
Programación Procedural y Recursiva en C++
Informática III 2009 Ing. Estela D'Agostino 1 Programación secuencial vs programación concurrente Pascal, C, Fortran, Cobol Secuenciales único hilo de.
Estructura de los Sistemas Operativos
Unidad I Java y C++ : Similitudes y diferencias
Teoría de Sistemas Operativos Sincronización Procesos
Unidad 2 – Gestión de Procesos
Threads en Java  Threads: programas multitarea  Creación de threads  Ciclo de vida de un thread  Sincronización.
La estrategia de prevención del interbloqueo consiste, a grandes rasgos, en diseñar un sistema de manera que esté excluida, a priori, la posibilidad de.
UTFSM - Sistemas Operativos
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
Desarrollador Profesional de Juegos Programación III Unidad II introducción a Mutex Secciones críticas.
Presentado por : Grisales Ramírez Jhonier las capas del modelo osi.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Interfaz de programación de aplicación 5R1221. Las API’s API es la abreviatura de Aplication Programming Interface. Un API no es más que una serie de.
Desventajas Poco eficiente: lectura y escritura en disco es lenta Necesita otro mecanismo de sincronización para acceder a los datos Son los procesos.
1/50 Ing. Gerardo Chávez Malpartida Administración de Memoria SISTEMAS OPERATIVOS.
Sincronización de Procesos
Transcripción de la presentación:

Sincronización de Procesos M.C. Juan Carlos Olivares Rojas

Agenda El Problema de la Sección Crítica Sincronización de Hardware Semáforos Regiones crítica

Agenda Monitores Deadlocks

El Problema de la Sección Crítica Lo importante en un problema de compartición de recursos, no es la compartición del recurso en sí, sino el mecanismo de protección para poder acceder de manera controlada y equitativa al recurso. La sección crítica es la parte de código que se desea compartir con otros procesos concurrentes. Esta región debe ser en algunos casos mutuamente excluyente (mutex).

El Problema de la Sección Crítica En algunos casos como en las lecturas, el acceso concurrente a un recurso no tiene mayor complicaciones. En otros casos como en la escritura, se debe de controlar el acceso, ya que no hacerlo podría causar muchos problemas. Los recursos se pueden compartir dinámicamente (intercalados) y estáticamente (exclusivo).

Sincronización de Hardware La mejor forma de realizar sincronización de proceso es a través de mecanismos de hardware. La gran mayoría de microprocesadores que permiten multitarea tienen esquemas robustos de protección para la concurrencia de procesos. Se puede contar con registro base y límite para el acceso controlado a los recursos, o bien esquemas de prioridad.

Semáforos Desafortunadamente tener mecanismos de sincronización en hardware es sumamente costoso. Por este motivo la inmensa mayoría de los métodos de compartición de recursos se hacen a nivel de software. Cualquier recurso compartido en una computadora está asociado a una localidad de memoria, por este motivo la protección de memoria juega un papel muy importante en la sincronización de procesos

Semáforos Los semáforos son mecanismos que permiten sincronizar procesos para prevenir colisiones cuando uno o más procesos solicitan simultáneamente un recurso. Dijsktra los define como un objeto tipo entero en los cuales se puede aplicar dos operaciones: P (Proberen, comprobar) y V (Verhogen, incrementar), donde P sirve para obtener el recurso y V para liberarlo.

Semáforos Los semáforos son un mecanismo de IPC estandarizado por POSIX. Todos los mecanismos IPC tienen una entrada en una tabla especial con una llave definida por el usuario. Los posibles valores de la llave son IPC_PRIVATE, IPC_CREATE, IP_EXECL, entre otros.

Semáforos Cada entrada de la tabla tiene un registro de permisos (rw), información de estado y llamadas de control. Las llaves son del tipo key_t. Para crear una llave se utiliza: #include <types.h> #include <sys/ipc.h> key_t ftok(path, id)

Semáforos Las operaciones sobre un semáforo son semget para crear un semáforo o habilitar uno existente, semctl para realizar operaciones de control e inicialización, semop para realizar operaciones P y V. #include <sys/types.h> #include <sys/ipc.h> #include <sys/sem.h> int semget(key, nsems, semflg) 11

Semáforos int llave, semid; if((llave= ftok(“auxiliar”, ‘K’)) ==(key_t)-1) /*Tratamiento del error*/ if((semid= semget(llave, 4, IPC_CREAT | 0600)) == -1) /*Error al crear el semáforo*/ 12

Semáforos int semctl(semid, semnum, cmd, arg) union semun{ }arg; int val; struct semid_ds *buf; ushort *array; }arg; Las opciones de control son: GETVAL, SETVAL, GETPID, GETNCNT, GETZCNT, GETALL, SETALL, IPC_STAT, IPC_SET 13

Semáforos ushort asem; asem[0]=5; asem[1]=3; asem[2]=4; asem[3]=8; semctrl(semid, 0, SETALL, asem) valor = semctrl(semid, 3, GETVAL, 0) int semop(semid, sops, nsops) struct sembuf *sops; 14

Semáforos struct sembuf{ ushort sem_num; short sem_op; short sem_flg; }; Si semop es negativo se decrementará (P), si se incrementa (V) y si es 0 no hace nada. Las banderas son: IPC_WAIT, IPC_NOWAIT, SEM_UNDO 15

Semáforos struct sembuf operacines[4]; Operaciones[0].semnum = 1; Operaciones[0].sem_op = -1; Operaciones[0].sem_flg = 0; Operaciones[1].semnum = 4; Operaciones[1].sem_op = 1; Operaciones[1].sem_flg = 0; semop(semid, operaciones, 2); 16

Regiones críticas Las regiones críticas son otra forma de sincronización de procesos. Un semáforo en algunas ocasiones no puede sincronizar más de un recurso diferente a la vez por lo que se necesitan de mecanismos de control de concurrencia más elaborados. Otros mecanismos IPC que permiten sincronizar y proteger regiones críticas son las colas de mensajes .

Colas de Mensajes La filosofía de las colas de mensajes es similar a las tuberías, pero con mayor versatilidad. Una cola es una estructura de datos gestionada por el kernel, en la cual varios procesos pueden escribir sobre ella. El sincronismo para evitar colisión lo realiza el kernel.

Colas de mensajes #include <sys/msg.h> int msgget(key, msgflg) If((msqid= msgget(llave, IPC_CREATE | 0600)) == -1) /*Error al crear la cola de mensajes*/ msgctrl(msq, cmd, buf) sirve para leer y modificar la información estadística y de control de una cola. 19

Colas de mensajes Los comandos de control son: IPC_STAT, IPC_SET, IPC_RMID. Por ejemplo: msgctrl(msqid, IPC_RMID, 0); Las operaciones básicas de una cola de mensajes son enviar y recibir los mensajes que se realizan con las siguientes funciones: int msgsnd(msqid, msgp, msgsz, msgflg); int msgrcv(msqid, msqp, msgtyp, msgflag); 20

Cola de mensajes El parámetro msgtyp indica el tipo de mensaje que se desea leer: 0 para el primer mensaje, > 0 el primer mensaje de tipo msgtyp que haya en la cola, <0 lee el primer mensaje que sea menor o igual al valor absoluto de msgtyp y además sea el mensaje más pequeño de los que hay. 21

Cola de mensajes struct{ long tipo; char cadena[20]; }mensaje; strcpy(mensaje.cadena, “SD1”); mensaje.tipo = 1; longitud = strlen(mensaje.cadena) if(msgsnd(msqid,&mensaje,longitud,0)==-1) /*Err*/ if(msgrcv(msqid,&mensaje,longitud,1,0) ==-1) /*Er*/ 22

Monitores Es un procesos que se encarga de verificar el funcionamiento de algún recurso garantizando la exclusión mutua (mutex). En un monitor los procesos se bloquean y desbloquean. Pueden existir diversas implementaciones no estandarizadas de un monitor.

Monitores En Java los monitores están implementados de manera nativa con el modificador de los métodos syncronized. El monitor es el mecanismo que nos permite controlar el acceso a una región crítica, en este caso un método. También se puede utilizar semáforos como objetos mutex disponibles en el paquete java.util.concurrent.*;

Deadlocks Los interbloqueos son la parte más problemática de los mecanismos de sincronización. Un interbloqueo ocurre cuando un proceso A que utiliza un recurso no lo libera por que está en espera de otro recurso que el proceso B tiene y a su vez no libera por esperar el recurso de A. En casos de interbloqueo la concurrencia del sistema se ve eliminada.

Deadlocks Los interbloqueos pueden ser detectados a través de la verificación de un ciclo infinito. Desgraciadamente este problema se trata de un problema no deducible y por lo tanto no computable; es decir, es difícil saber si un programa realmente se bloqueo o si está en un ciclo activo. Existen muchos métodos para detectar los interbloqueos, a continuación se describen algunos.

Deadlocks El método de la avestruz es el más sencillo, consiste en agachar la cabeza y no hacer nada por el problema. El método de herir y esperar consiste en matar un proceso que esté el interbloqueo y esperar a que los procesos existentes se sincronicen. El procesos de herir y matar consiste en eliminar un proceso y asignar los recursos a los procesos de manera estática.

¿Preguntas, dudas y comentarios?