Implementación de monitores POSIX
|
|
|
- David Peralta Casado
- hace 10 años
- Vistas:
Transcripción
1 Implementación de monitores POSIX Ampliación de Sistemas Operativos (prácticas) E.U. Informática en Segovia Universidad de Valladolid Programación concurrente: Problemática Presencia de condiciones de carrera Una condición de carrera se produce cuando la ejecución de un conjunto de operaciones concurrentes sobre una variable compartida deja la variable en un estado inconsistente con las especificaciones de corrección Además, el resultado final depende de la velocidad relativa en que se ejecutan las operaciones Solución a las condiciones de carrera En general, no se puede controlar cuándo se producen cambios de contexto entre los hilos involucrados Por lo tanto, se tiene que lograr que los programas concurrentes sean correctos a pesar de que se produzcan cambios de contexto en cualquier lugar del código Para ello, una posible solución para garantizar la corrección de un programa concurrente es sincronizar el acceso a variables compartidas Sincronización En este contexto, sincronizar significa imponer un orden en la ejecución de zonas de código (pertenecientes a diferentes hilos) que acceden a variables compartidas Estas zonas de código se denominarán secciones críticas EUI-SG/INFOR.UVA.ES ASO_PR02_
2 El problema de la sección crítica (1) El problema de la sección crítica se caracteriza por: Tener N procesos/hilos que se ejecutan concurrentemente, compitiendo por acceder a un conjunto de datos compartidos Cada proceso o hilo Tiene, al menos, una zona de código en la que se accede a datos compartidos y que se denomina sección crítica Puede tener además otras zonas de código en que no se acceden a dichos datos. Estas zonas se consideran secciones de código genéricas y se referirá a ellas como sección restante El problema de la sección crítica trata de encontrar un protocolo que defina la entrada y la salida de una sección crítica, que impida la ocurrencia de condiciones de carrera protocolo de entrada sección CRÍTICA protocolo de salida sección RESTANTE EUI-SG/INFOR.UVA.ES ASO_PR02_ El problema de la sección crítica (2) Requisitos de cualquier solución al problema de la sección crítica: El protocolo diseñado debe satisfacer las tres condiciones siguientes: Exclusión mutua: si un proceso está ejecutando su sección crítica, ningún otro proceso puede estar ejecutando la suya Progreso: si ningún proceso está ejecutando su sección crítica y hay otros que desean entrar a las suyas, entonces la decisión de qué proceso entrará en la sección crítica se toma en un tiempo finito y sólo depende de los procesos que desean entrar Espera limitada: Después de que un proceso haya solicitado entrar en su sección crítica, existe un límite en el número de veces que se permite que otros procesos entren a sus secciones críticas Y todo ello, suponiendo que... Los procesos se ejecutan a velocidad no nula La corrección no ha de depender de hacer suposiciones sobre la velocidad relativa de ejecución de los procesos EUI-SG/INFOR.UVA.ES ASO_PR02_
3 El problema de la sección crítica: clasificación de soluciones (1) Existen varias alternativas a la hora de implementar el protocolo de entrada (y salida) de la sección crítica Soluciones de tipo software El protocolo se implementa con código a nivel de usuario, sin mecanismos añadidos. Por ejemplo, los algoritmos de Dekker. Soluciones de tipo hardware Se aprovechan de instrucciones máquina especiales (inhabilitación interrupciones, instrucciones test and set) para implementar el protocolo Soluciones con soporte del sistema operativo El protocolo se implementa mediante mecanismos proporcionados por el sistema operativo, a través de llamadas al sistema (semáforos, cerrojos de exclusión mutua, variables de condición, etc.) Soluciones con soporte del lenguaje de programación (construcciones lingüísticas) Algunos lenguajes de programación poseen tipos de datos especiales que garantizan su acceso en exclusión mutua de forma automática, como por ejemplo, Ada95, Java EUI-SG/INFOR.UVA.ES ASO_PR02_ El problema de la sección crítica: clasificación de soluciones (2) Java, Ada Aplicaciones Construcciones Lingüísticas Sistema Operativo Hardware Monitores Regiones críticas Tipos protegidos... Semáforos Mutex Eventos Variables de condición... Inhabilitación de interrupciones Instrucciones test_and_set C, C++ Programación de sistemas Aplicaciones C Drivers EUI-SG/INFOR.UVA.ES ASO_PR02_
4 Soluciones a nivel del lenguaje de programación Algunos lenguajes de programación incorporan tipos de datos específicos, y/o construcciones lingüísticas que permiten al programador, solucionar el problema de la sección crítica de forma más cómoda, ya que: Garantizan la exclusión mutua de forma automática Aportan una solución a la suspensión voluntaria de los procesos/hilos dentro de secciones de código en exclusión mutua Fuerzan el uso de un determinado estilo de programación Generalmente, el compilador del lenguaje de programación utiliza soluciones a nivel del sistema operativo para implementar esas características especiales Existen numerosas soluciones a este nivel (1) Soluciones definidas teóricamente Monitores Regiones críticas (2) Soluciones reales de lenguajes de programación existentes: Objetos protegidos de Ada95 Objetos de sincronización de Java EUI-SG/INFOR.UVA.ES ASO_PR02_ Monitor Concepto de monitor (1) Es un tipo abstracto de datos que encapsula: Tanto un conjunto de variables (internas) Como una serie de operaciones de acceso de forma que: Los procesos/hilos pueden únicamente invocar a las operaciones de acceso Las variables internas sólo pueden ser accedidas desde el código de las operaciones de acceso (concepto de encapsulamiento, propio de los tipos abstractos de datos) El código de las operaciones se ejecuta en exclusión mutua de forma automática No es necesario protegerlo con ningún mecanismo añadido Se proporciona además un mecanismo general de suspensión, basado en variables denominadas condición Los procesos/hilos pueden suspenderse en una variable condición Otro proceso/hilo puede despertar a un proceso/hilo suspendido anteriormente EUI-SG/INFOR.UVA.ES ASO_PR02_
5 Concepto de monitor (2) Monitor Variables privadas variables variables condición de datos Operaciones de acceso (Zona mutex) Entrada Colas de hilos Suspendidos en variables condición Salida La zona mutex se abandona si el hilo se suspende en una variable condición Cola de entrada al monitor (mutex) Hilos EUI-SG/INFOR.UVA.ES ASO_PR02_ Sintaxis Concepto de monitor (3) type nombre_monitor = monitor... Declaración de variables procedure entry P1 (...);... Código de P1 end; function entry F2 (...);... Código de F2 end Código de inicialización end; Variables internas al monitor: variables compartidas variables de condición Métodos de acceso: única vía de acceso a las variables compartidas Exclusión mutua automática Inicialización: Se invoca automáticamente al instanciar el monitor y antes de ser accedido por ningún proceso Se utiliza para la inicialización de las variables del monitor EUI-SG/INFOR.UVA.ES ASO_PR02_
6 Concepto de monitor (4) Variables de tipo condición: En ocasiones es necesario definir esquemas complejos de sincronización, en los que un proceso/hilo debe suspenderse dentro del código del monitor Para ello el programador del monitor puede declarar, como variables internas del monitor, variables de tipo condición ( condition ) var x: condition; Sobre estas variables condition se pueden realizar las siguientes operaciones: x.wait; Causa la suspensión (en una cola asociada a x) del proceso que invocó la operación x.signal; Se reanuda (si existe) un proceso suspendido en la cola asociada a x. Si no existe ninguno, no tiene efecto x.awaited; Retorna el número de procesos suspendido en la cola de la variable de condición x EUI-SG/INFOR.UVA.ES ASO_PR02_ Concepto de monitor (5) Ejemplo: Productor/consumidor (pseudo-pascal) type buffer_acotado = monitor const N = 100; contador, entrada, salida: integer; lleno, vacio: condition; buffer: array[0..n-1] of integer; procedure entry insertar (item: interger); if (contador = N) then lleno.wait; contador:= contador +1; buffer[entrada] := item; entrada:= (entrada+1)mod N; vacio.signal; end; (...) (...) procedure entry extraer (var item: integer); if (contador = 0) then vacio.wait; contador:= contador 1; item:= buffer[salida]; salida:= (salida+1) mod n; lleno.signal; end; entrada:= 0; salida:= 0; contador:= 0; end; EUI-SG/INFOR.UVA.ES ASO_PR02_
7 Variantes de monitor Qué ocurre cuando un hilo despierta a otro en un signal? El hilo que ejecuta la operación signal (P) se encuentra en estado en ejecución El hilo que se despierta del wait (Q) pasa a estado preparado Existe entonces un problema Dos hilos (P y Q) pueden resultar ser elegidos por el sistema operativo para continuar su ejecución y, ambos están dentro del código del monitor Esto viola la definición de monitor, que garantiza automáticamente la exclusión mutua dentro del código del monitor Existen tres alternativas para solucionar el problema Cada alternativa fue aportada por un autor diferente, resultando tres variantes: (1) Modelo de Hoare Cuando P despierta a Q, P se espera (se suspende) hasta que Q sale del monitor, o vuelve a suspenderse en otra variable de condición (2) Modelo de Lampson y Redell Cuando P despierta a Q, Q se espera (se suspende hasta que P sale del monitor, o se suspende en una variable de condición (3) Modelo de Brinch-Hansen Si algún procedure entry de un monitor tiene una operación signal, esta tiene que ser la última instrucción del procedimiento, de modo que se soluciona el problema por construcción EUI-SG/INFOR.UVA.ES ASO_PR02_ POSIX Implementación de monitores en POSIX Proporciona primitivas muy simples (mutex y variables de condición) para conseguir la sincronización de hilos de ejecución, en comparación con los monitores Sin embargo, su metodología de programación resulta en un modelo muy parecido al concepto de monitor, en concreto al modelo de Lampson y Redell A continuación, se muestra una implementación genérica de monitores de tipo Lampson y Redell utilizando primitivas POSIX Ello permitiría traducir directamente un monitor concreto en términos de primitivas POSIX, teniendo una forma de convertir un código teórico en una aplicación real Se hará manualmente, lo que haría un compilador de un hipotético lenguaje de programación que soportara monitores, al compilar un programa con monitores en un sistema operativo compatible con el estándar POSIX EUI-SG/INFOR.UVA.ES ASO_PR02_
8 Implementación de monitores en POSIX Implementación: exclusión mutua Cada procedure entry del monitor se convierte en una función en C que debe ser protegida en exclusión mutua Como todos los procedure entry tienen que excluirse mutuamente entre ellos, se necesita un único cerrojo de exclusión mutua (mutex) para proteger todo el código Debe definirse una única variable global mutex que se denominará mutex_monitor Cada procedure entry se traducira de la siguiente forma: procedure entry p1 (param);... end; void p1 (param); {... ptrhead_mutex_unlock(&mutex_monitor); EUI-SG/INFOR.UVA.ES ASO_PR02_ Implementación de monitores en POSIX Implementación: gestión de la suspensión en variables de condición Dentro de cada procedure entry, puede haber instrucciones wait y signal sobre ciertas variables de tipo condition Por cada variable condition x se necesita una variable de condición POSIX, que se denominará cond_x Cada instrucción x.wait se traduce por una llamada pthread_cond_wait Cada instrucción x.signal se convierte en una llamada pthread_cond_signal Hay que prestar especial atención a las condiciones lógicas en que los procesos se suspenden en las operaciones x.wait y se despiertan en las operaciones x.signal, puesto que probablemente habrá que ajustar las condiciones ligeramente en el código POSIX Adicionalmente, en POSIX, se puede despertar a todos los procesos suspendidos en una variable de condición por medio de la llamada pthread_cond_broadcast EUI-SG/INFOR.UVA.ES ASO_PR02_
9 Implementación de monitores en POSIX Implementación: gestión de la suspensión en variables de condición Opción 1: (utilizando if) if (condicion1) then x.wait; if (_condicion1_) pthread_cond_wait(&cond_x, &mutex_monitor); if (condicion2) then x.signal; if (_condicion2_) pthread_cond_signal(&cond_x); Opción 2: (utilizando while) while (condicion1) x.wait; if (condicion2) while (x.awaited > 0) x.signal; while (_condicion1_) pthread_cond_wait(&cond_x, &mutex_monitor); if (_condicion2_) pthread_cond_broadcast(&cond_x); EUI-SG/INFOR.UVA.ES ASO_PR02_ Implementación de monitores en POSIX Implementación: gestión de la suspensión en variables de condición Opción 1: (utilizando if) Ventajas: Cuando condicion2 es verdadero, sólo se despierta un hilo, y este, sin volver a comprobar su condicion1, pasa a ejecutar su sección crítica. Esto hace que la sobrecarga computacional sea pequeña Inconvenientes: Cuando el hilo que estaba suspendido en una variable condición se activa (la variable condición ha recibido un signal), no vuelve a comprobar el valor de la condicion1, por lo que no está seguro de estar ejecutando la sección crítica bajo las condiciones establecidas en condicion1. Esto debe asegurarse como parte de condicion2, de forma que sólo se despierten hilos cuando se cumplan sus condiciones de ejecución. Usando este modelo de programación es fácil cometer errores Opción 2: (utilizando while) Ventajas: Como cada hilo que estaba suspendido en una variable condición, comprueba la condicion1 cada vez que se despierta, el programador puede despreocuparse de las condiciones bajo las cuales ejecuta operaciones signal. Típicamente, se ejecuta pthread_cond_broadcast cada vez que condicion1 puede haber cambiado. Esto da lugar a un modelo de programación sencillo Inconvenientes: Mayor sobrecarga computacional EUI-SG/INFOR.UVA.ES ASO_PR02_
10 Implementación de monitores en POSIX Ejemplo: Lectores y Escritores Problema de sincronización entre procesos/hilos que se da cuando éstos quieren compartir concurrentemente un recurso representado por un objeto de datos (por ejemplo, un fichero, una base de datos, un registro de una base de datos,...) y, además, determinados procesos/hilos únicamente desean leer el contenido del objeto compartido, mientras que otros desean actualizarlo (es decir, leer y escribir) A los primeros se les denomina procesos/hilos lectores y a los segundos escritores Diferentes versiones según se dé prioridad a unos u otros en el acceso: Prioridad en la lectura: ningún lector debe esperar salvo que un escritor haya obtenido ya permiso para usar el objeto compartido. Es decir, ningún lector debe esperar a que otros lectores acaben por el simple hecho de que un escritor esté esperando. Puede originar inanición en los escritores Prioridad en la escritura: una vez que un escritor está esperando, debe realizar su escritura tan pronto como sea posible. Es decir, si un escritor está esperando, ningún lector nuevo debe iniciar su lectura. Puede generar inanición en los lectores EUI-SG/INFOR.UVA.ES ASO_PR02_ Implementación de monitores en POSIX Ejemplo: Lectores y Escritores Variables globales y programa principal int nlec= 0, nesc= 0; w_lec= 0; w_esc= 0; pthread_mutex_t mutex_monitor; pthread_cond_t cond_lec, cond_esc; int main(int argc, char *argv[]) { pthread_t pid_lec[n_lec], pid_esc[n_esc]; int i; int escritores= N_ESC, lectores= N_LEC; pthread_mutex_init(&mutex_monitor, NULL); pthread_cond_init(&cond_lec, NULL); pthread_cond_init(&cond_esc, NULL); for (i=0; i<escritores; i++) pthread_create(&(pid_esc[i]), NULL, func_esc, NULL); for (i=0; i<lectores; i++) pthread_create(&(pid_lec[i]), NULL, func_lec, NULL); for (i=0; i<lectores; i++) pthread_join(pid_lec[i], NULL); for (i=0; i<escritores; i++) pthread_join(pid_esc[i], NULL); EUI-SG/INFOR.UVA.ES ASO_PR02_
11 Implementación de monitores en POSIX Ejemplo: Lectores y Escritores Definición de los hilos Monitor void *func_esc(void * p) { int i; for (i=0; i<escriturasxhilo; i++) { pre_escribir(); escribir(); post_escribir(); void *func_lec(void * p) { int i; for (i=0; i<lecturasxhilo; i++) { pre_leer(); leer(); post_leer(); EUI-SG/INFOR.UVA.ES ASO_PR02_ Implementación de monitores en POSIX Ejemplo: Lectores y Escritores (versión prioridad lectores) void pre_leer() { while (nesc > 0) { w_lec++; pthread_cond_wait(&cond_lec, &mutex_monitor); w_lec -; nlec++; pthread_cond_signal(&cond_lec); void post_leer() { nlec -; if (nlec == 0) pthread_cond_signal(&cond_esc); void pre_escribir() { while ( (nesc > 0) (nlec > 0) ) { w_esc++; pthread_cond_wait(&cond_esc, &mutex_monitor); w_esc -; nesc++; void post_escribir() { nesc -; if (w_lec > 0) pthread_cond_signal(&cond_lec); else pthread_cond_signal(&cond_esc); EUI-SG/INFOR.UVA.ES ASO_PR02_
12 Implementación de monitores en POSIX Ejemplo: Lectores y Escritores (versión prioridad escritores) void pre_leer() { while ( (nesc > 0) (w_esc > 0) ) { w_lec++; pthread_cond_wait(&cond_lec, &mutex_monitor); w_lec -; nlec++; pthread_cond_signal(&cond_lec); void post_leer() { nlec -; if (nlec == 0) pthread_cond_signal(&cond_esc); void pre_escribir() { while ( (nesc > 0) (nlec > 0) ) { w_esc++; pthread_cond_wait(&cond_esc, &mutex_monitor); w_esc -; nesc++; void post_escribir() { nesc -; if (w_esc > 0) pthread_cond_signal(&cond_esc); else pthread_cond_signal(&cond_lec); EUI-SG/INFOR.UVA.ES ASO_PR02_
Concurrencia. Primitivas IPC con bloqueo
Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región
CDI Exclusión mutua a nivel alto. conceptos
conceptos El concepto de usar estructuras de datos a nivel alto libera al programador de los detalles de su implementación. El programador puede asumir que las operaciones están implementadas correctamente
Concurrencia entre Procesos.
Concurrencia entre Procesos. Sistemas Operativos Tema 3. 1 Procesamiento concurrente. Procesamiento concurrente: base de los sistemas operativos modernos (multiprogramados): Un conjunto de procesos que
Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia
Concurrencia: deberes Concurrencia: Exclusión Mutua y Sincronización Capítulo 5 Comunicación entre procesos Compartir recursos Sincronización de múltiples procesos Asignación del tiempo de procesador Concurrencia
Concurrencia: Exclusión mutua y Sincronización
Concurrencia: Exclusión mutua y Sincronización Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer Concurrencia Múltiples aplicaciones Aplicaciones estructuradas
Tema 4. Gestión de entrada/salida
Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada
PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores
PROGRAMACIÓN CONCURRENTE Tema 5 Monitores 1 Indice Definición de los monitores Sincronización condicional usando monitores Algunos problemas con monitores 2 Problemas de las regiones críticas condicionales
Modulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
un programa concurrente
Introducción un programa concurrente asumimos que tengamos un programa concurrente que quiere realizar acciones con recursos: si los recursos de los diferentes procesos son diferentes no hay problema,
Sistemas Operativos Temas 4, 5 y 6. Jorge García Duque Despacho: B-202 Tutorías: Lunes 16:00-18:00 y Martes 16:00-20:00
Sistemas Operativos Temas 4, 5 y 6 Jorge García Duque Despacho: B-202 Tutorías: Lunes 16:00-18:00 y Martes 16:00-20:00 Índice Tema 4: Herramientas de Sincronización de Alto Nivel. Regiones Críticas. Monitores.
1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:
Universidad de Las Palmas de Gran Canaria Escuela Universitaria de Informática Facultad de Informática Sistemas Operativos Examen parcial, 11 de mayo de 2002 SOLUCIONES Calificación 1 2 3 4 5 1 (2 5 puntos)
SISTEMAS OPERATIVOS AVANZADOS
SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3
4. Programación Paralela
4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios
Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)
QUÉ SON CONCEPTOS PARAMÉTRICOS? Los conceptos paramétricos de Presto permiten definir de una sola vez una colección de conceptos similares a partir de los cuales se generan variantes o conceptos derivados
SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008
SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS
Capítulo 1 Introducción a la Computación
Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:
Mensajes. Interbloqueo
CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya ([email protected]) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE II.3 Sincronización basada en memoria compartida: Semáforos J.M. Drake 1 Procesos concurrentes y memoria compartida. Si los diferentes procesos de un programa concurrente tienen
SOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
Sistemas Operativos Práctica 4
Sistemas Operativos Práctica 4 Ing. Andrés Bustamante [email protected] Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Receta general para resolver problemas de sincronización con semáforos
Receta general para resolver problemas de sincronización con semáforos La primera vez que te enfrentas a la tarea de implementar una solución a un problema de sincronización entre procesos, es normal que
Elementos requeridos para crearlos (ejemplo: el compilador)
Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción
7. Manejo de Archivos en C.
7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de
Ejemplos de conversión de reales a enteros
Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print
Control Digital en PC con MS-DOS
Control Digital en PC con MS-DOS Abel Alberto Cuadrado Vega 19 de abril de 2006 1. Introducción Un PC puede ser utilizado para realizar un sistema de control digital. Para ello necesita lo siguiente: tarjeta
Introducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Tema 3. Monitores Programación Concurrente
Tema 3. Monitores Programación Concurrente Depto. de Lenguajes y Sistemas Informáticos Universidad de Granada Contenidos 1. Concepto de Monitor 1.1. Fundamento teórico de los monitores 1.2. Sintaxis de
DISCOS RAID. Se considera que todos los discos físicos tienen la misma capacidad, y de no ser así, en el que sea mayor se desperdicia la diferencia.
DISCOS RAID Raid: redundant array of independent disks, quiere decir conjunto redundante de discos independientes. Es un sistema de almacenamiento de datos que utiliza varias unidades físicas para guardar
Hilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010
Hilos, comunicación y competencia entre procesos Dr. Alonso Ramírez Manzanares 2-Sep-2010 Implementación de procesos Se mantiene una tabla de procesos con una entrada por cada proceso: Con lo cual tenemos
MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar
MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un
Trey-SAT Pag. 1. Manual de usuario
Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión
Práctica 2: El problema de la sección crítica
Práctica 2: El problema de la sección crítica Programación de Sistemas Concurrentes y Distribuidos Grado de Ingeniería Informática Dpto. de Informática e Ingeniería de Sistemas, Escuela de Ingeniería y
PROGRAMACION CONCURRENTE Y DISTRIBUIDA. II.5 Sincronización basada en memoria compartida: Monitores
PROGRAMACION CONCURRENTE Y DISTRIBUIDA II.5 Sincronización basada en memoria compartida: Monitores J.M. Drake 1 Monitor Son módulos que encierran los recursos o variables compartidas como componentes internos
Sistemas Operativos. Características de la Multiprogramación. Interacción entre Procesos. Características de la Multiprogramación
Universidad Simón Bolívar Departamento de Electrónica y Circuitos EC3731 Arquitectura del Computador II Prof. Osberth De Castro Prof. Juan C. Regidor Sistemas Operativos Concurrencia y Sincronización de
Estructuras de Sistemas Operativos
Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar
PROGRAMACION CONCURRENTE
PROGRAMACION CONCURRENTE II.4 Sincronización basada en memoria compartida: Regiones críticas J.M. Drake 1 Regiones críticas Son bloques de código que al ser declarados como regiones críticas respecto de
LiLa Portal Guía para profesores
Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista
En cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Introducción a la Firma Electrónica en MIDAS
Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento
Visual Basic 1. Empleo de módulos y Procedimientos. Procedimientos definidos por el usuario
Empleo de módulos y Procedimientos Procedimientos definidos por el usuario Según lo que hemos visto hasta ahora, Visual Basic, almacena el código en módulos. Hay tres clases de módulos: formularios (.frm),
Capítulo 9. Archivos de sintaxis
Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta
Unidad 1. Fundamentos en Gestión de Riesgos
1.1 Gestión de Proyectos Unidad 1. Fundamentos en Gestión de Riesgos La gestión de proyectos es una disciplina con la cual se integran los procesos propios de la gerencia o administración de proyectos.
ESTRUCTURA DE DATOS: ARREGLOS
ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción
Práctica 5. Curso 2014-2015
Prácticas de Seguridad Informática Práctica 5 Grado Ingeniería Informática Curso 2014-2015 Universidad de Zaragoza Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas
Unidad II: Administración de Procesos y del procesador
Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros
INTERRUPCIONES. La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales:
INTERRUPCIONES La comunicación asíncrona de los sistemas periféricos con la CPU, en ambos sentidos, se puede establecer de dos maneras fundamentales: a)consultas (POLLING): Se comprueban cíclicamente,
SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA
SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura
Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente
Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.
TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.
TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.
Benemérita Universidad Autónoma del Estado de Puebla
Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto
SEGURIDAD Y PROTECCION DE FICHEROS
SEGURIDAD Y PROTECCION DE FICHEROS INTEGRIDAD DEL SISTEMA DE ARCHIVOS ATAQUES AL SISTEMA PRINCIPIOS DE DISEÑO DE SISTEMAS SEGUROS IDENTIFICACIÓN DE USUARIOS MECANISMOS DE PROTECCIÓN Y CONTROL INTEGRIDAD
15 CORREO WEB CORREO WEB
CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,
Unidad 1: Conceptos generales de Sistemas Operativos.
Unidad 1: Conceptos generales de Sistemas Operativos. Tema 2: Estructura de los sistemas de computación. 2.1 Funcionamiento de los sistemas de computación. 2.2 Ejecución de instrucciones e interrupciones
Anexo B. Comunicaciones entre mc y PC
Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación
- Bases de Datos - - Diseño Físico - Luis D. García
- Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo
2) Tenemos un sistema informático con una sola CPU que está gestionada mediante una cola multinivel con realimentación.
EJERCICIOS DE PLANIFICACIÓN: 1) Un sistema informático posee los siguientes recursos: - una CPU - tres unidades de almacenamiento UAM1, UAM2 y UAM3. En nuestro sistema tenemos dos tipos de procesos: Tipo
Instalar protocolo, cliente o servicio nuevo. Seleccionar ubicación de red. Práctica - Compartir y conectar una carpeta
Configuración de una red con Windows Aunque existen múltiples sistemas operativos, el más utilizado en todo el mundo sigue siendo Windows de Microsoft. Por este motivo, vamos a aprender los pasos para
INTRODUCCION A LA PROGRAMACION DE PLC
INTRODUCCION A LA PROGRAMACION DE PLC Esta guía se utilizará para estudiar la estructura general de programación de um PLC Instrucciones y Programas Una instrucción u orden de trabajo consta de dos partes
UNIVERSIDAD DE SALAMANCA
UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA
Introduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
MANUAL COPIAS DE SEGURIDAD
MANUAL COPIAS DE SEGURIDAD Índice de contenido Ventajas del nuevo sistema de copia de seguridad...2 Actualización de la configuración...2 Pantalla de configuración...3 Configuración de las rutas...4 Carpeta
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA
Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)
Benemérita Universidad Autónoma del Estado de Puebla
Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 4 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Edición de Ofertas Excel Manual de Usuario
Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE
Capítulo IV. INTERBLOQUEO E INANICIÓN
Capítulo IV. INTERBLOQUEO E INANICIÓN Interbloqueo: [MAEKAMA] Se define como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros.
INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS
INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se
Utilidades de la base de datos
Utilidades de la base de datos Desde esta opcion del menú de Access, podemos realizar las siguientes operaciones: Convertir Base de datos Compactar y reparar base de datos Administrador de tablas vinculadas
Tema 3: Concurrencia de procesos
Tema 3: Concurrencia de procesos Yolanda Blanco Fernández [email protected] Concurrencia, Tiempo Real y Paralelismo Concurrencia: Convivencia de un conjunto de procesos en un mismo ordenador. Sistemas
Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.
El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los
GENERACIÓN DE CÓDIGO
GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información
El soporte del sistema operativo. Hace que un computador sea más fácil de usar. Permite que los recursos del computador se aprovechen mejor.
El soporte del sistema operativo Objetivos y funciones del sistema operativo Comodidad Hace que un computador sea más fácil de usar. Eficiencia Permite que los recursos del computador se aprovechen mejor.
Guía paso a paso para la cumplimentación del formulario de candidatura
Guía paso a paso para la cumplimentación del formulario de candidatura INDICE 1. INSTRUCCIONES GENERALES... 2 2. PARTENARIADO... 4 3. GRUPOS DE TAREAS... 8 4. INDICADORES... 14 5. CUMPLIMENTACIÓN DEL RESTO
Arquitectura de Aplicaciones
1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento
McAfee Security-as-a-Service
Guía de solución de problemas McAfee Security-as-a-Service Para utilizar con el software epolicy Orchestrator 4.6.0 Esta guía proporciona información complementaria relacionada con la instalación y el
Una variable de clase escalar tiene un nivel de indirección igual a 1. Por ejemplo, las variables i, b y x definidas como se muestra a continuación.
Descripción de la semántica de ALFA En esta descripción sólo se mencionarán los aspectos en los que el lenguaje de programación ALFA pueda diferir de otros lenguajes de programación de alto nivel. Se sobreentienden
Gestión de Permisos. Bizagi Suite. Copyright 2014 Bizagi
Gestión de Permisos Bizagi Suite Gestión de Permisos 1 Tabla de Contenido Gestión de Permisos... 3 Definiciones... 3 Rol... 3 Perfil... 3 Permiso... 3 Módulo... 3 Privilegio... 3 Elementos del Proceso...
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido
App para realizar consultas al Sistema de Información Estadística de Castilla y León
App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez [email protected] Dirección General de Presupuestos y Estadística Consejería de Hacienda
Consultas con combinaciones
UNIDAD 1.- PARTE 2 MANIPULACIÓN AVANZADA DE DATOS CON SQL. BASES DE DATOS PARA APLICACIONES Xochitl Clemente Parra Armando Méndez Morales Consultas con combinaciones Usando combinaciones (joins), se pueden
INSTALACIÓ N A3ERP. Informática para empresas INTRODUCCIÓN CONSIDERACIONES GENERALES DE LA INSTALACIÓN PAQUETES DE INSTALACIÓN PREDEFINIDOS
Página 1 de 20 INSTALACIÓ N A3ERP INTRODUCCIÓN La instalación de a3erp v9 ha sufrido una trasformación importante respecto a sus versiones anteriores. Cualquier instalación exige la existencia de un pc
Java Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Procesos. Planificación del Procesador.
Procesos. Planificación del Procesador. Sistemas Operativos. Tema 2. Concepto de Proceso. Una definición sencilla: Programa en ejecución. Entidad pasiva Programa RECURSOS CPU Memoria Ficheros Dispositivos
GENERACIÓN DE ANTICIPOS DE CRÉDITO
GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos
Algorítmica y Lenguajes de Programación. Ordenación (i)
Algorítmica y Lenguajes de Programación Ordenación (i) Ordenación. Introducción A lo largo del curso hemos visto distintas formas de almacenar datos: Vectores. Matrices. Ficheros Listas (pilas y colas)
Acronis License Server. Guía del usuario
Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE
WINDOWS 2008 4: SERVIDOR DHCP
1.- CONCEPTOS PREVIOS: WINDOWS 2008 4: SERVIDOR DHCP DHCP (Dynamic Host Configuration Protocol = protocolo de configuración dinámica de host) es un protocolo que simplifica la configuración de los parámetros
Curso Completo de Electrónica Digital
CURSO Curso Completo de Electrónica Digital Departamento de Electronica y Comunicaciones Universidad Pontifica de Salamanca en Madrid Prof. Juan González Gómez Capítulo 4 CIRCUITOS COMBINACIONALES 4.1.
Caravel Modernization Tool: Tipos de Proyectos. Caravel Modernization Tool: Tipos de Proyectos
Caravel Modernization Tool: Tipos de s La familia Caravel Modernization Tool Caravel Modernization Insight es una utilidad perteneciente a la familia Caravel Modernization Tool. Esta familia, integrada
OPERACIONES EN RÉGIMEN DE COMPUESTA
OPERACIONES EN RÉGIMEN DE COMPUESTA Las operaciones en régimen de compuesta se caracterizan porque los intereses, a diferencia de lo que ocurre en régimen de simple, a medida que se van generando pasan
Curso de Java POO: Programación orientada a objetos
Curso de Java POO: Programación orientada a objetos Luis Guerra Velasco Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Introducción a la POO 2 Herencia y polimorfismo 3 Empaquetado de proyectos
Tema 11. Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. 11.1.1. MULTIPROGRAMACIÓN.
Tema 11 Soporte del Sistema Operativo 11.1. REQUERIMIENTOS DE LOS SISTEMAS OPERATIVOS. El sistema operativo es básicamente un programa que controla los recursos del computador, proporciona servicios a
Centro de Capacitación en Informática
Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.
Sistemas de archivos distribuidos. Alvaro Ospina Sanjuan [email protected]
Sistemas de archivos distribuidos Alvaro Ospina Sanjuan [email protected] >Abstracción del sistema operativo para representar y organizar los recursos de almacenamiento >Se debe hacer la
MICQ. Trabajo Práctico Final Seminario de Ingeniería en Informática I 75.35. Facultad de Ingeniería, UBA. Junio 2002. Cátedra: Pablo Cosso
MICQ Facultad de Ingeniería, UBA. Junio 2002 Trabajo Práctico Final Seminario de Ingeniería en Informática I 75.35 Cátedra: Pablo Cosso Alumno: Diego Fernando Montaldo 75.300 1 de 1 Introducción Este documento
Tema 3. Medidas de tendencia central. 3.1. Introducción. Contenido
Tema 3 Medidas de tendencia central Contenido 31 Introducción 1 32 Media aritmética 2 33 Media ponderada 3 34 Media geométrica 4 35 Mediana 5 351 Cálculo de la mediana para datos agrupados 5 36 Moda 6
UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3
UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:
15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores.
UNIDAD TEMÁTICA 5: MULTIPROCESADORES. 15. Arquitectura de los multiprocesadores. 16. Multiprocesadores de memoria compartida. 17. Multicomputadores. 15-1 TEMA 15: ARQUITECTURA DE LOS MULTIPROCESADORES.
Sistema de Facturación de Ventas WhitePaper Enero de 2007
Sistema de Facturación de Ventas WhitePaper Enero de 2007 Ronda Guglielmo Marconi, 9 Parque Tecnológico 46980 Paterna Valencia Spain T +34 96 338 99 66 [email protected] Please Recycle PrefSuite Document
Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica. Base de Datos I. Maestra: Martha E. Evangelista Salazar
Universidad de Colima Facultad de Ingeniería Mecánica y Eléctrica Base de Datos I Maestra: Martha E. Evangelista Salazar Introducción a los conceptos de Bases de Datos a).- Definiciones básicas sobre bases
