SINCRONIZACIÓN DE PROCESOS
|
|
|
- Adrián Figueroa Poblete
- hace 8 años
- Vistas:
Transcripción
1 SINCRONIZACIÓN DE PROCESOS 1
2 Introducción Los procesos acceden a datos o recursos compartidos El acceso puede provocar que el estado final de los datos no sea correcto, generando incoherencias debido a manipulaciones concurrentes El acceso debe ser controlado, deben emplearse herramientas que garanticen la exclusión mutua Existen herramientas que permiten esto, pero tanto el sistema operativo como el hardware deben ofrecer características que soporten las mismas 2
3 Instrucción Test-and-Set Es una instrucción empleada para testear y escribir en un lugar en memoria de manera atómica (sin interrupción). Lectura y escritura sin interrupciones. El testeo puede ser una comparación frente a un valor por ejemplo. El valor es dependiente del resultado del test Un procesador realizando una instrucción Test-and-Set sobre una dirección de memoria impide que cualquier otro procesador pueda realizarla cerrando el bus de memoria Con esta instrucción se facilita la creación de semáforos y otras herramientas de sincronización Enlace and set 3
4 Semáforos Introducidos por Edsger Dijkstra en 1968 Herramienta de sincronización que brinda una solución al problema de la exclusión mutua restringiendo el acceso simultáneo a los recursos compartidos Permiten resolver la mayoría de los problemas de sincronización entre procesos y forma parte del diseño de muchos sistemas operativos y de lenguajes de programación concurrentes Si bien son útiles para sincronizar procesos, no pueden evitar deadlocks El valor de un semáforo representa la cantidad de instancias libres de un recurso determinado 4
5 Semáforos Los semáforos consisten en: - una variable que puede tomar valores en un rango acotado de enteros positivos - una cola de procesos que están en espera del recurso - un conjunto de funciones permitidas Operaciones P(Semaforo s) { // Adquirir Recurso wait until s > 0, then s s 1; P = down = wait = acquire /* Testear y decrementar s, debe ser una operación atómica */ V(Semaforo s) { // Liberar Recurso s s+1; /* debe ser atómico */ V = up = signal = release Init(Semaforo s, Valor v) { s v; La atomicidad de las operaciones se obtiene mediante el uso de instrucciones tipo test-and-set o desactivación de interrupciones, dicha atomicidad es fundamental para evitar las condiciones de competencia 5
6 Semáforos Para evitar el busy-waiting ( un semáforo tiene asociada una cola de procesos Entero Cola de espera 6
7 Semáforos binarios Actúan como indicador de condición registrando si un recurso está o no disponible Son denominados mutex cuando se inician en 1 pues su función principal es la de garantizar la exclusión mutua Un semáforo binario sólo puede tomar dos valores: 0 y 1 Si, para un semáforo binario S, S = 1 entonces el recurso está disponible y el proceso lo puede utilizar; si S = 0 el recurso no está disponible y el proceso debe esperar Si un proceso hace un down sobre un semáforo binario que vale: 1 decrementará de manera atómica el valor del semáforo dejándolo en 0 0 provocará que el proceso invocante quede dormido en el semáforo Si un proceso hace un up sobre un semáforo que vale: 1 el semáforo permanecerá con el valor 1 y el proceso seguirá su ejecución 0 el semáforo se incrementa sólo si no hay procesos dormidos en el si tiene procesos dormidos continuará en 0 y se despertará a uno de dichos procesos 7
8 Semáforos Uso de semáforos para obtener exclusión mutua semaforo mutex = 1 Proceso P1() { /* RC */ Proceso P2() { /* RC */ Uso de semáforos para sincronización de procesos P2 debe ejecutarse luego de P1 semaforo s = 0 Proceso P1() {... /* RC */ up(s); Proceso P2() { down(s); /* RC */... 8
9 Semáforos n-arios o de conteo o generales Útiles para representar n instancias de un tipo de recurso o para permitir el acceso a una región critica a n procesos Toman valores de 0 a n Su comportamiento es similar a los de los semáforos binarios 9
10 Semáforos n-arios implementado con semáforos binarios SemaforoGeneral { int valor = K SemaforoBinario wait = 0 SemaforoBinario mutex = 1 down(semaforogeneral S) { down(s.mutex) if (S.valor <= 0) { S.valor = S.valor 1; up(s.mutex); down(s.wait); else { S.valor = S.valor 1; up(s.mutex); up(semaforogeneral S) { down(s.mutex) if (S.valor < 0) { up(s.wait); S.valor = S.valor + 1; up(s.mutex); 10
11 Fumadores Para poder confeccionar un cigarro y fumarlo se precisan 3 ingredientes: - Tabaco - Papel - Fósforo Hay 3 fumadores deseosos de fumar, cada uno de ellos tiene una cantidad ilimitada de uno de estos ingredientes Existe un arbitro que permite a los fumadores hacer sus cigarros seleccionando dos fumadores para que coloquen un item cada uno sobre la mesa, luego notifica al tercero para que advierta que los dos componentes faltantes están disponibles. El proceso advertido toma los ítems, arma un cigarro y fuma... El arbitro ve la mesa vacía y nuevamente elige dos fumadores... semaforo fumador[3] ={0,0,0; semaforo mesa = 1; Arbitro while (1) { down(mesa); //elegir fumadores i y j //para que pongan items //hacer que k fume up(fumador[k]); Fumador(i) while true { down(fumador[i]); //hacer un cigarro up(mesa); //fumar el cigarro 11
12 Buffer acotado - Productor/Consumidor Un proceso, Productor, coloca items en un buffer de determinado tamaño (N) Cuando el buffer esté completamente lleno se va a dormir El Consumidor extrae los items, cuando el buffer está vacío se va a dormir count = número de items existentes en el buffer - El Productor chequea count==n? SI dormir NO count = count El Consumidor chequea count==0? SI dormir NO count = count 1 12
13 Buffer acotado - Productor/Consumidor Cada proceso verifica si el otro proceso debe o no continuar durmiendo #define N 10 int count = 0; void productor() { int item; void consumidor() { int item; while(1) { item = producir_item(); if (count == N) sleep(); poner_item(item); count = count + 1; if (count == 1) wakeup(consumidor); while(1) { if (count == 0) sleep(); item = sacar_item(item); count = count 1; if (count == N 1) wakeup(productor); 13
14 Buffer acotado - Productor/Consumidor Los semáforos resuelven el problema del despertar perdido Se utilizan tres semáforos - full: cuenta el número de entradas ocupadas en el buffer - empty: cuenta el número de entradas vacías en el buffer - mutex: para garantizar la exclusión mutua void productor() { int item; #define N 10 semaforo mutex = 1 semaforo empty = N semaforo full = 0 while(1) { item = producir_item(); down(empty); poner_item(item); up(full); void consumidor() { int item; while(1) { down(full); item = sacar_item(item); up(empty); 14
15 Lectores y Escritores Modela el acceso a una base de datos Muchos procesos en competencia intentan leer y escribir en ella Pueden existir muchos lectores simultáneos Cuando actúa un escritor no pueden estar presentes otros lectores ni escritores semaforo mutex = 1; semaforo db = 1; int rc = 0; void escritor() { while (1) {... down(db); escribir_db(); up(db); void lector() { while (1) { rc = rc + 1; if (rc == 1) down(db); leer_db(); rc = rc 1; if (rc == 0) up(db); Prioridad para los lectores 15
16 Barbero Dormilón 1 barbero 1 silla de peluquero N sillas si no hay clientes el barbero se duerme en la silla cuando llega el primer cliente debe despertar al barbero si llegan más cliente mientras el barbero corta el cabello de un cliente se sientan en la silla (si las hay) o salen de la peluquería #define SILLAS 5 semaforo clientes = 0 /* Numero de clientes en espera */ semaforo barbero = 0 semaforo mutex = 1 int espera = 0 void barbero() { while (1) { down(clientes); espera = espera 1; Si no hay clientes se duerme up(barbero); Barbero listo para trabajar cortar_cabello(); void cliente() { if (espera < SILLAS) { espera = espera + 1 up(clientes); down(barbero); tomar_corte(); else { Despierta al barbero Si el barbero está ocupado espera Si no hay sillas libres se retira sin tomar servicio 16
17 Cena de los filósofos Típico problema donde un conjunto de procesos compiten por recursos compartidos Definido por Dijkstra en 1965, Hoare propuso la fantasía 5 filósofos = 5 procesos (N=5) Cada filósofo precisa 2 palillos (recursos) para comer (ejecutarse) arroz IZQ DER i i%n (i 1)%N
18 Cena de los filósofos: Solución 1 #define N 5 #define IZQ(i) i%n #define DER(i) (i 1)%N void filosofo (int i) { while (1) { pensar(); tomar_palillo(izq(i)); tomar_palillo(der(i)); comer(); soltar_palillo(izq(i)); soltar_palillo(der(i)); Problema Sincronización puede llevar a DEADLOCK 18
19 Cena de los filósofos: Solución 2 (con semáforos) #define N 5 #define IZQ(i) i%n #define DER(i) (i 1)%N semaforo mutex = 1 void filosofo (int i) { while (1) { pensar(); tomar_palillo(izq(i)); tomar_palillo(der(i)); comer(); soltar_palillo(izq(i)); soltar_palillo(der(i)); Problema Problema Come Sincronización un sólo filósofo puede a llevar la vez a Máx. Paralelismo DEADLOCK = 2 19
20 Cena de los filósofos: Solución 3 #define N 5 #define IZQ i%n #define DER (i 1)%N #define PENSAR 0 #define APETITO 1 #define COMER 2 semaforo mutex=1; int estado[n]; semaforo s[n]; //todos en cero void filosofo(int i) { while (1) { pensar(); tomar_palillo(i); comer(); poner_palillo(i); void tomar_palillo(int i) { estado[i] = APETITO; test(i); down(s[i]); void poner_palillo(int i) { estado[i] = PENSAR; test(izq(i)); test(der(i)); void test(int i) { if (estado[i]==apetito && estado[izq(i)]!=comer && estado[der(i)]!=comer) { estado[i] = COMER; up(s[i]); 20
21 Monitores Se debe prestar especial atención al usar semáforos void barbero() { while (1) { down(clientes); espera = espera 1; up(barbero); cortar_cabello(); Esta primitiva de alto nivel fue introducida por Hoare en 1974 Hansen 1975 Con monitores la exclusión muta está garantizada void barbero() { while (1) { down(clientes); espera = espera 1; up(barbero); cortar_cabello(); Un monitor es una colección de procedimientos, variables y estructuras de datos Los procesos pueden invocar a los procedimientos de un monitor cuando lo deseen, pero no tienen acceso directo a las estructuras de datos internas 21
22 Monitores Sintaxis modelo monitor modelo { int i; condition c; //variable local del monitor //variable de condición procedimiento P1() {... procedimiento P2() {... procedimiento P3() {... //inicialización de variables Sólo un proceso puede estar activo dentro del monitor Si el monitor está ocupado y un segundo proceso intenta ingresar, éste se bloquea Los monitores son construcciones de los lenguajes de programación 22
23 Monitores Generalmente el compilador del lenguaje que soporta monitores implementa la exclusión mutua mediante semáforos Usando monitores, basta con transformar las secciones críticas en procedimientos de monitor con el fin de lograr la exclusión mutua Cómo se realiza el bloqueo de procesos? Mediante variables de condición + operaciones WAIT y SIGNAL - si un proceso de monitor no puede/debe continuar ejecuta un WAIT en alguna variable de condición - el proceso se bloquea y permite que otro proceso ingrese al monitor - el nuevo proceso despertará al proceso dormido mediante SIGNAL sobre la misma variable de condición Un SIGNAL sobre una variable que no bloquea ningún proceso se pierde, no se mantiene historia Así no existen dos procesos activos en el monitor? Hoare: suspender al proceso que hace SIGNAL y reanudar al proceso antes dormido Hansen: el proceso que hace SIGNAL debe salir del monitor inmediatamente 23
24 Monitores monitor ProductorConsumidor { int count; condition lleno, vacio; procedimiento poner() { if (count == 10) wait(lleno) poner_item() count = count + 1 if (count == 1) signal(vacio) count = 0; procedimiento sacar() { if (count == 0) wait(vacio) sacar_item() count = count 1 if (count == 9) signal(lleno) procedimiento Productor() { while(1) { producir_item() ProductorConsumidor.poner procedimiento Consumidor() { while(1) { producir_item() ProductorConsumidor.sacar 24
25 Monitores: Desventajas Los monitores son un concepto a nivel lenguaje de programación Muchos lenguajes de programación no poseen monitores 25
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
Implementación de monitores POSIX
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
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
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
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
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 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
Monitores. Implementación de un Buffer con monitores
Monitores Los monitores corresponden a la segunda herramienta de sincronización que veremos en el curso. Se usan para garantizar la exclusión mutua en secciones críticas y para esperar la ocurrencia de
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
Programación Concurrente y Paralela. P(S) ; sección crítica P(S);
2.5.2 Monitores Los semáforos, a pesar de su sencillez de uso, son el equivalente a las instrucciones goto y el manejo de apuntadores en los lenguajes de programación imperativos: son muy susceptibles
El problema de los Filósofos
El problema de los Filósofos Problemas de Programación Concurrente Solución con Semáforos Para evitar una situación de interbloqueo se limita el número de filósofos en disposición de comer a 4. PROGRAM
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
SEC. 2.2 COMUNICACIÓN ENTRE PROCESOS 63
62 PROCESOS CAP. 2 permanecerá dando vueltas en su ciclo hasta que se asigne FALSE a interested[0], cosa que sólo sucede cuando el proceso O invoca leave_region para salir de su región crítica. Consideremos
PROGRAMACION CONCURRENTE Y DISTRIBUIDA
PROGRAMACION CONCURRENTE Y DISTRIBUIDA V.2 Redes de Petri: Análisis y validación. J.M. Drake 1 Capacidad de modelado y capacidad de análisis El éxito de un método de modelado es consecuencia de su capacidad
Estructuras de control
Estructuras de control Introducción Los algoritmos vistos hasta el momento han consistido en simples secuencias de instrucciones; sin embargo, existen tareas más complejas que no pueden ser resueltas empleando
Programación Concurrente Recopilación de teoría referente a la materia
UNIVERSIDAD AMERICANA Programación Concurrente Recopilación de teoría referente a la materia Ing. Luis Müller 2011 Esta es una recopilación de la teoría referente a la asignatura Programación Concurrente,
SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS
SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS 1. Con las tres llamadas create, suspend, y resume, la estructura del programa sería la siguiente: process recoger;
Elementos de un programa en C
Elementos de un programa en C Un programa en C consta de uno o más archivos. Un archivo es traducido en diferentes fases. La primera fase es el preprocesado, que realiza la inclusión de archivos y la sustitución
2.2 Nombres, Ligado y Ámbito
2.2 Nombres, Ligado y Ámbito Ligado estático y dinámico, reglas de ámbito y prueba de tipos. Conceptos Nombres e Identificadores Variables Tipos Ámbito Constantes Nombres Identificador que designa en el
Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.
Tipos de Datos Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial. Entrada de datos Procesamientos de datos Salida de resultados Los
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
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
Monitores Ing. Iván Medrano Valencia
Universidad Nacional de San Antonio Abad del Cusco Departamento Académico de Informática Programación Concurrente y Distribuida Práctica 5 1. OBJETIVO. Ing. Iván Medrano Valencia En esta práctica, comprobaremos
Métodos para escribir algoritmos: Diagramas de Flujo y pseudocódigo
TEMA 2: CONCEPTOS BÁSICOS DE ALGORÍTMICA 1. Definición de Algoritmo 1.1. Propiedades de los Algoritmos 2. Qué es un Programa? 2.1. Cómo se construye un Programa 3. Definición y uso de herramientas para
Estructuras en LabVIEW.
Estructuras en LabVIEW. Sumario: 1. Ejecución según el flujo de datos. 2. Estructuras básicas disponibles en LabVIEW. a) Estructura Sequence. b) Estructura Case. c) Estructura For Loop. d) Estructura While
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
Introducción a las sentencias de control
INSTRUCCIONES DE CONTROL CONTENIDOS 1. Introducción a las sentencias de control. 2. Instrucciones o sentencias condicionales: IF, IF-ELSE, SWITCH. 3. Instrucciones o sentencias repetitivas o iterativas:
Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL
Ciclos Fundamentos de Programación Recordando Estructuras de Control Básicas: Una secuencia es una serie de estatutos que se ejecutan uno después de otro. Selección (condición) ejecuta diferentes estatutos
Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática
Programación de Computadores 4 Iteraciones y Decisiones Prof. Javier Cañas Universidad Técnica Federico Santa María Departamento de Informática Contenido 1 Introducción 2 Operadores Relacionales y Lógicos
Expresiones y sentencias
Expresiones y sentencias Expresión Construcción (combinación de tokens) que se evalúa para devolver un valor. Sentencia Representación de una acción o una secuencia de acciones. En Java, todas las sentencias
Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav
Sistemas Operativos Dr. Luis Gerardo de la Fraga E-mail: [email protected] http://cs.cinvestav.mx/~fraga Departamento de Computación Cinvestav 12 de junio de 2015 Dr. Luis Gerardo de la Fraga Cinvestav,
Definición de Memoria
Arquitectura de Ordenadores Representación de Datos en Memoria Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática Definición de Memoria DRM-1 La memoria
Estructuras de Control
Algorítmica y Lenguajes de Programación Estructuras de Control Estructuras de Control. Introducción Hasta ahora algoritmos han consistido en simples secuencias de instrucciones Existen tareas más complejas
Otras formas de Sincronización en Java
75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2008 Facultad de Ingeniería Universidad de Buenos Aires Otras formas de Sincronización en Java java.util.concurrent Class Exchanger
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
Solución Examen Febrero 2006
Solución Examen Febrero 2006 Lea detenidamente las siguientes instrucciones. No cumplir los requerimientos puede implicar la pérdida del examen. Formato Indique su nombre completo y número de cédula en
Comunicación y Sincronización con Monitores Resumen del Tema
Notas de clase de Programación Concurrente Comunicación y Sincronización con Monitores Resumen del Tema Dpto de Lenguajes y Ciencias de la Computación Universidad de Málaga María del Mar Gallardo Melgarejo
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
Fundamentos de programación
Fundamentos de programación Estructuras de Control Estructuras de control Estructuras de control Estructura secuencial Estructura alternativa Sentencias if, if else Sentencias if else anidadas El operador
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
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
Estatutos de Control C# Estatutos de Decisión (Selección)
SELECCIÓN Estatutos de Control C# Estatutos de Decisión (Selección) IF Condición THEN Estatuto1 ELSE Estatuto2 Estatuto1 Statement Condición... Antes de ver esta presentación: Lee el Capítulo correspondiente
ESCUELA SUPERIOR DE INFORMATICA SISTEMAS OPERATIVOS PROBLEMAS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS
ESCUELA SUPERIOR DE INFORMATICA SISTEMAS OPERATIVOS PROBLEMAS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS 1. En lugar de utilizar señales, resolver el problema de la sincronización entre procesos que
SISTEMAS OPERATIVOS PROCESOS CONCURRENTES UNIDAD III
SISTEMAS OPERATIVOS PROCESOS CONCURRENTES UNIDAD III Mas Publicaciones Sala de Prensa - Noticias Testimonios Página de Inicio 1 Karen Suzely Sandoval Diaz ID: UB6571SSE13056 INDICE No. Página INTRODUCCIÓN...
Algoritmos y programas. Algoritmos y Estructuras de Datos I
Algoritmos y programas Algoritmos y Estructuras de Datos I Primer cuatrimestre de 2012 Departamento de Computación - FCEyN - UBA Programación funcional - clase 1 Funciones Simples - Recursión - Tipos de
Sistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
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
Sincronización. Arquitectura de Computadores
Sincronización Arquitectura de Computadores J. Daniel García Sánchez (coordinador) David Expósito Singh Javier García Blas Óscar Pérez Alonso J. Manuel Pérez Lobato Grupo ARCOS Departamento de Informática
Java: Programación Multithread
Qué es un thread? Java: Programación Multithread Hasta el momento hemos desarrollado programas secuenciales con un único thread: en cualquier instante durante la ejecución de un programa hay un único punto
Mercedes Granda Departamento de Electrónica y Computadores. Las propiedades de las redes de Petri nos permiten
22//22 REDES DE PETRI: PROPIEDADES Y MÉTODOS DE ANÁLISIS PROGRAMACIÓN CONCURRENTE MASTER EN COMPUTACIÓN DEPARTAMENTO DE ELECTRÓNICA Y COMPUTADORES UNIVERSIDAD DE CANTABRIA CURSO 22/3 REDES DE PETRI: PROPIEDADES
Exclusión mutua. Gustavo Romero. 14 de febrero de 2014. Arquitectura y Tecnología de Computadores
Exclusión mutua Gustavo Romero Arquitectura y Tecnología de Computadores 14 de febrero de 2014 Gustavo Romero Exclusión mutua (1/109) Índice 1 Introducción 2 Usuario 3 Hardware Cerrojos Gestión de interrupciones
PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY
PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY ALGORITMO DEFINICIÓN: CONSISTE EN LA DESCRIPCIÓN CLARA Y DETALLADA DEL PROCEDIMIENTO A SEGUIR PARA ALCANZAR LA SOLUCIÓN A UN PROBLEMA EN DONDE SE ESTABLECE
TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL
1 TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL TECNOLOGÍA DE LA COMPUTADORA FACILITADOR: PARTICIPANTE: DAVID, CHIRIQUÍ 2015 2 Qué es un programa? Un programa informático es un conjunto
Concurrencia en.net David Jesús Horat Flotats
Concurrencia en.net David Jesús Horat Flotats ÍNDICE 1. Introducción n a.net 2. Sincronización n en.net 2.1 Contextos sincronizados 2.2 Método M Synchronized 2.3 Regiones de código c sincronizado 2.4 Sincronización
Notación Asintótica 2
Notación Asintótica 2 mat-151 1 Éxamen Rápido (6 minutos) Cada operación fundamental usa c milisegundos, cuánto tiempo toma contar hasta 1,000,000? Cuál es el valor de N? Cuál es el órden de complejidad
SISTEMAS INFORMÁTICOS DE TIEMPO REAL
SISTEMAS INFORMÁTICOS DE TIEMPO REAL Sistemas operativos de tiempo real Manuel Agustín Ortiz López Área de Arquitectura y Tecnología de Computadores Departamento de Arquitectura de Computadores, Electrónica
Redes (IS20) Ingeniería Técnica en Informática de Sistemas. CAPÍTULO 5: Subcapa de acceso al medio
Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es CAPÍTULO 5: Subcapa de acceso al medio ÍNDICE Curso 2002-2003 - Redes (IS20) -Capítulo 5 1 Tipos de redes: de difusión y
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
28/09/2012. Interfaz con Dispositivos de Salida. Interfaz con Dispositivos de Entrada. Port Mapped. Memory mapped. Interfaz con Dispositivos I/O
Interfaz con Dispositivos I/O Interfaz con Dispositivos de Salida y Salida Unidad 4, Segunda Parte Port Mapped Memory mapped 1 2 Ejecución de la Instrucción OUT Ejecución de la instrucción OUT Dirección
Fundamentos de Programación Visual Basic
Pág. N. 1 Fundamentos de Programación Visual Basic Familia: Editorial: Tecnología de información y computación Macro Autor: Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-236-3 N. de páginas: 280
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Operadores y Expresiones [email protected] Primer programa en Java 2 Comentarios en Java Comentario tradicional (multi-línea) Comentario de línea Comentario
Herramientas computacionales para la matemática MATLAB: Estructuras de control
Herramientas computacionales para la matemática MATLAB: Estructuras de control Verónica Borja Macías Mayo 2012 1 Estructuras de control ESTRUCTURAS DE REPETICIÓN: BUCLES Los bucles permiten repetir las
Instrucciones. No hable durante el experimento o usted será inmediatamente excluido del mismo! Buena suerte!
Instrucciones Gracias por participar en este experimento sobre toma de decisiones! Usted recibirá quetzales por haber venido al experimento; esos quetzales son suyos independiente de los resultados del
Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo
Algoritmos En general, no hay una definición formal de algoritmo. Muchos autores los señalan como listas de instrucciones para resolver un problema abstracto, es decir, que un número finito de pasos convierten
Guía rápida para gestionar el puerto paralelo del PC
Guía rápida para gestionar el puerto paralelo del PC Descarga desde: http://eii.unex.es/profesores/jisuarez/descargas/ip/guia_rapida_pp.pdf José Ignacio Suárez Marcelo Universidad de Extremadura Escuela
Algoritmos y Programas
Introducción a la Programación Pontificia Universidad Javeriana Generado con LAT E X Febrero de 2010 Recorderis Algoritmos Recorderis Estado Una configuración determinada del sistema en un tiempo-espacio
Práctica 3: Monitoreo y Depuración de Programas
ITESM Campus Monterrey Depto. de Ing. Eléctrica Laboratorio de Teleingeniería Práctica 3: Monitoreo y Depuración de Programas Objetivo: Que el alumno comprenda la utilidad de monitorear un programa en
Sistemas Operativos. Curso 2014 Estructura de los sistemas operativos
Sistemas Operativos Curso 2014 Estructura de los sistemas operativos Agenda Componentes de un sistema operativo. Servicios del sistema operativo (system services). Llamados a sistema (system calls). Estructura
Mensajes. (versión preliminar)
Mensajes (versión preliminar) Ejemplo: productor/consumidor con buffer de tamaño 0 void produce(item *p_it); void consume(item *p_it); int nmain() { ntask cons= nemittask(consproc); ntask prod= nemittask(prodproc,
Sistemas Operativos: Programación de Sistemas. Curso Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J.
Tema 5 : Comunicación entre Procesos mediante Tuberías Sistemas Operativos: Programación de Sistemas Oscar Déniz Suárez Alexis Quesada Arencibia Francisco J. Santana Pérez Curso 2006-07 Introducción Algunas
Overview GeneXus - Demo: 2.Cómo obtener el ejecutable de la KB y declaración de algunas reglas del negocio.
Overview GeneXus - Demo: 2.Cómo obtener el ejecutable de la KB y declaración de algunas reglas del negocio. En la primera parte de esta demo creamos nuestra base de conocimiento y la transacción de facturas
LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO
LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO Práctica 3: Memorias Objetivos Comprender qué es y cómo funciona un banco de registros Comprender cómo se realiza
PROGRAMACIÓN CONCURRENTE
PROGRAMACIÓN CONCURRENTE 1 INTRODUCCIÓN 2 EXCLUSIÓN MUTUA 3 BLOQUEO MEDIANTE EL USO DE VARIABLES COMPARTIDAS 3.4 ALGORITMO DE PETERSON 3.5 ALGORITMO DE DEKKER 4 SEMÁFOROS 4.1 EXCLUSION MUTUA CON SEMÁFOROS
Guía práctica de estudio 05: Diagramas de flujo
Guía práctica de estudio 05: Diagramas de flujo Elaborado por: M.C. Edgar E. García Cano Ing. Jorge A. Solano Gálvez Revisado por: Ing. Laura Sandoval Montaño Guía práctica de estudio 05: Diagramas de
Paso de mensajes. Lecturas: Burns & Wellings, Cap.??? Transparencias y apuntes de la asignatura. Filosofía cliente-servidor.
Paso de mensajes Lecturas: Burns & Wellings, Cap.??? Transparencias y apuntes de la asignatura Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la Creative Commons
Sistemas operativos. Hasta ahora hemos visto. Relación programa-sistema operativo Gestión de memoria
Sistemas operativos UPCO ICAI Departamento de Electrónica y Automática 1 Hasta ahora hemos visto Relación programa-sistema operativo Gestión de memoria Reserva para la ejecución Pilas, heap, memoria de
Desarrollar un programa en SIMATIC S7 con codificación AWL que simule un sistema en el que una entrada digital active una salida digital.
Ejercicio 1 Desarrollar un programa en SIMATIC S7 con codificación AWL que simule un sistema en el que una entrada digital active una salida digital. Es recomendable que en este programa ya se comience
CAPÍTULO 9. DIAGRAMAS DE
CAPÍTULO 9. DIAGRAMAS DE ACTIVIDAD 1. Introducción Los diagramas de actividad son uno de los diagramas UML que muestran el comportamiento dinámico del sistema. Esencialmente, consisten en un diagrama de
Fundamentos de Programación. Flujo de Control I: Estructuras selectivas
Fundamentos de Programación Flujo de Control I: Estructuras selectivas El Flujo de Control de un Programa Un algoritmo puede ser construido utilizando combinaciones de tres estructuras de control de flujo
Test : Conteste exclusivamente en una HOJA DE LECTURA ÓPTICA, no olvidando marcar que su tipo de examen es A.
SISTEMAS INFORMÁTICOS I Junio 2003 INGENIERÍA EN INFORMÁTICA - Código Carrera 55 - Código Asignatura 077 Tipo de Examen: A NO SE PERMITE EL USO DE NINGÚN MATERIAL Tiempo: 2 horas Apellidos: Nombre: DNI:
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.
Cristian Blanco
UNIDAD DIDÁCTICA 8. ANÁLISIS Y DISEÑO ORIENTADO A OBJETOS. DIAGRAMAS DE COMPORTAMIENTO En el siguiente enlace tienes una descripción y algunos ejemplos de todos los diagramas UML.: http://jms32.eresmas.net/tacticos/uml/umlindex.html
Introducción a los Sistemas Operativos
Introducción a los Sistemas Operativos Pedro Corcuera Dpto. Matemática Aplicada y Ciencias de la Computación Universidad de Cantabria [email protected] 1 Índice General Conceptos sobre ordenadores Concepto
Principios de Computadoras II
Departamento de Ingeniería Electrónica y Computadoras Ing. Ricardo Coppo [email protected] Qué es un Objeto? Un objeto es una instancia de una clase Las clases actuán como modelos que permiten la creación
ESTRUCTURAS ALGORITMICAS
ESTRUCTURAS ALGORITMICAS El proceso de resolución de problemas en un ordenador conduce a la escritura de un programa y su ejecución. Las fases en el desarrollo de un programa pueden resumirse de la siguiente
Tema 2 Introducción a la Programación en C.
Tema 2 Introducción a la Programación en C. Contenidos 1. Conceptos Básicos 1.1 Definiciones. 1.2 El Proceso de Desarrollo de Software. 2. Lenguajes de Programación. 2.1 Definición y Tipos de Lenguajes
324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
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
Operadores y Expresiones
Operadores y Expresiones Los programas Java constan de datos, sentencias de programas y expresiones. Una expresión es normalmente, una ecuación matemática, tal como 3 * x + 5 * z. En esta expresión, los
A l g o r i t m o s. Seguridad en Internet ALGORITMOS. www.upibi.net
ALGORITMOS Objetivos Introducir el concepto de algoritmo y sus características. Mostrar las diferentes técnicas para representar algoritmos. Introducir la programación estructurada y el diseño descendiente.
Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison
Algoritmos Intro Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison La Computadora Las computadoras trabajan con una base de 0 y 1 llamado sistema binario. En principio todo lo que sucede en un dispositivo
ESTRUCTURAS REPETITIVAS
DOCENTE: Ing. Ronald Rentería Ayquipa MARCO TEÓRICO: ESTRUCTURAS REPETITIVAS La programación estructurada es un paradigma que consiste en la organización de un código en bloques conformados por estructuras
6.2 Interfaz del Programa de Diseño de una Guía Circular.
6.1 Introducción. En este capítulo se presentarán los resultados obtenidos con respecto al software; es decir la interfaz ya terminada, tanto para el Programa de diseño de una guía de onda circular, como
Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.
Programación Básica Arturo Vega González [email protected] Division de Ciencias e Ingenierías Universidad de Guanajuato Campus León Sesión 5 Universidad de Guanajuato, DCI, Campus León 1 / 31 Universidad
Diseño arquitectónico 1ª edición (2002)
Unidades temáticas de Ingeniería del Software Diseño arquitectónico 1ª edición (2002) Facultad de Informática objetivo Los sistemas grandes se descomponen en subsistemas que suministran un conjunto relacionado
3. PROGRAMACION CONCURRENTE
3. PROGRAMACION CONCURRENTE INTRODUCCION Actualmente observamos que el paradigma orientado a objetos, solo podemos ejecutar un equipo a la vez como máximo en cambio con la introducción de las hebras concurrentes(programación
Estructuras de control
Estructuras de control El flujo secuencial de acciones en un algoritmo puede ser alterado por medio de las denominadas estructuras de control, las cuales se resumen a continuación: Estructuras de selección
