Sistemas Operativos Tema 7. Concurrencia

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Sistemas Operativos Tema 7. Concurrencia"

Transcripción

1 Contenidos Sistemas Operativos Tema 7. Concurrencia Sistemas concurrentes El problema de la sección crítica Semáforos Monitores José Miguel Santos Alexis Quesada Francisco Santana 1 2 Bibliografía Contenidos Fundamentos de Sistemas Operativos q S. Candela, C.R. García, A. Quesada, F.J. Santana, J.M. Santos. Thomson, 2007 q Capítulo 3 Programación Concurrente q J.T. Palma, M.C. Garrido, F. Sánchez, A. Quesada q Capítulos 1, 2, 3, 4, 5 y 6 Principles of Concurrent and Distributed Programming q M. Ben-Ari. Prentice Hall, 1990 Concurrent Programming q A. Burns, G. Davies. Addison-Wesley, 1993 q Capítulo 7 Sistemas concurrentes El problema de la sección crítica Semáforos Monitores 3 4 Modelo del sistema Qué es concurrencia? Conjunto de procesos cooperativos q Red de cajeros automáticos q Sistema de reserva de billetes q Servidor de impresión q Definición de diccionario: coincidir en el espacio o en el tiempo dos o más personas o cosas. En Informática, se habla de concurrencia cuando hay una existencia simultánea de varios procesos en ejecución. Ojo, concurrencia existencia simultánea no implica ejecución simultánea

2 Paralelismo y concurrencia El paralelismo es un caso particular de la concurrencia. Se habla de paralelismo cuando ocurre la ejecución simultánea de instrucciones. Procesos cooperativos Necesidades de sincronización y comunicación Los procesos concurrentes tendrán necesidad de comunicarse información Además, será necesario en ocasiones detener a un proceso hasta que se produzca un determinado evento o se den ciertas condiciones à sincronización 7 8 Técnicas de sincronización Basadas en memoria compartida q Inhibición de Interrupciones q Espera activa q Semáforos q Regiones críticas q Monitores Basadas en el paso de mensajes q Canales q Buzones Ejemplo 1: modificación concurrente de una variable procedure Ejemplo1 is x:integer; procedure P1 is x:=x+10; end P1; procedure P2 is if x>100 then Put_Line (x); else Put_Line (x- 50); end if; end P2; x:=100; COBEGIN P1; P2; COEND; end Ejemplo1; 9 10 Ejemplo 2: bucles infinitos concurrentes procedure Ejemplo2 is contador:integer; procedure Cuenta is espera a que pase un coche contador := contador+1; end Cuenta; procedure Imprime; espera una hora Put( Coches que han pasado: ); Put (contador); contador:=0 end Imprime; contador:=0; COBEGIN Cuenta; Imprime; COEND; end Ejemplo2; Ejemplo 3: búfer limitado N: constant integer:=; type elemento is ; buffer: array(0..n- 1) of elemento; entra,sale: mod N:=0; contador: integer range 0..N:=0; Productor producir_algo (elem); exit when contador<n; buffer(entra):=elem; entra:=entra+1; contador:=contador+1; Consumidor exit when contador>0; elem:=buffer(sale); sale:=sale+1; contador:=contador- 1; consumir (elem);

3 Problema al modificar datos compartidos Ambas rutinas son correctas si se ejecutan por separado pero podrían NO funcionar si se ejecutan de manera concurrente Supongamos que contador contiene en un momento dado el valor 5 y que las instrucciones contador=contador+1 y contador=contador-1 se ejecutan de forma concurrente ( contador podría ser 4, 5 o 6!) contador = contador + 1 contador=contador-1 registro 1 := contador; registro 2 := contador; registro 1 := registro 1 +1; registro 2 := registro 2-1; contador : registro 1 ; contador := registro 2 ; T0: productor registro 1 := contador (registro 1 = 5) T1: productor registro 1 := registro 1 +1 (registro 1 = 6) T2: consumidor registro 2 := contador (registro 2 = 5) T3: consumidor registro 2 := registro 2-1 (registro 2 = 4) T4: productor contador := registro 1 (contador = 6) T5: consumidor contador := registro 2 (contador = 4) Contenidos Sistemas concurrentes El problema de la sección crítica Semáforos Monitores Sección crítica: modelo del sistema N procesos intentan acceder a un recurso compartido en un bucle infinito: Sección_No_Crítica (SNC); Pre_Protocolo; Sección_Crítica (SC); Post_Protocolo; Sección crítica: segmento de código donde se accede a datos compartidos con otros procesos Sección crítica: modelo del sistema (2) Nunca puede haber más de un proceso en la sección crítica (exclusión mutua) Los pre y post protocolos serán algoritmos para garantizar que se cumple la exclusión mutua Requisitos de la solución Importante Exclusión mutua Progreso: si ningún proceso está en sección crítica y hay procesos que desean entrar en su s.c., sólo estos últimos participarán en la decisión y ésta se tomará en un tiempo finito. Espera limitada: hay un límite para el número de veces que otros procesos pueden adelantarse a un proceso que quiere entrar en s.c. Suponemos que cada proceso se ejecuta a una velocidad distinta de cero No podemos hacer suposiciones acerca de las velocidades relativas de los procesos

4 Solución trivial: cortar la multiprogramación Si suspendemos la multiprogramación, desaparece el problema de acceso a los datos compartidos pero perdemos todas las ventajas de la multiprogramación Hay que buscar una solución menos radical Solución del hardware: inhibir las interrupciones Antes de que un proceso entre en su sección crítica, se inhiben las interrupciones Así es imposible que el proceso sea expulsado de la CPU mientras está accediendo al dato compartido Al salir de la SC, se rehabilitan las interrupciones Inhibir las interrupciones: problemas Mientras un proceso está en SC, se suspende toda la concurrencia en el sistema à no se le da oportunidad a otros procesos que no están accediendo al recurso compartido Esta técnica no se puede implementar en un multiprocesador Soluciones con espera activa La sincronización se basa en que un proceso espera mediante la comprobación continua de una variable, manteniendo ocupada la CPU. Soluciones Software Soluciones Hardware Intento ingenuo: usar un indicador de disponibilidad - - variable global - - indica si la sección crítica está libre libre: boolean := true; - - código que ejecuta cada proceso sección no crítica exit when libre; libre := false; sección crítica libre := true; Primer intento serio: variable turno (solución para dos procesos) turno: positive range 1..2 := 1; SNC1; exit when turno=1; SC1; turno:=2; SNC2; exit when turno=2; SC2; turno:=1; proceso 1 proceso

5 Discusión del primer intento Segundo intento: avisadores Exclusión mutua? Espera limitada? Progreso? SNC1; exit when libre2; libre1:=false; SC1; libre1:=true; libre1, libre2: boolean := true; SNC2; exit when libre1; libre2:=false; SC2; libre2:=true; proceso 1 proceso Tercer intento SNC1; libre1:=false; exit when libre2; SC1; libre1:=true; libre1,libre2: boolean := true; SNC2; libre2:=false; exit when libre1; SC2; libre2:=true; proceso 1 proceso 2 Algoritmo de Peterson - FUNCIONA!! libre1, libre2: boolean := true; turno: positive range 1..2 := 1; SNC1; libre1:=false; turno:= 2; exit when libre2 or turno=1; SC1; libre1:=true; SNC2; libre2:=false; turno:= 1; exit when libre1 or turno=2; SC2; libre2:=true; Solución para N procesos: Algoritmo de la panadería (Lamport) cogiendonumero: array(1..n) of boolean := (others=>false); num: array(1..n) of natural := (others=>0); - código del proceso i Sección no crítica (i); cogiendonumero(i):=true; num(i) := 1 + MAX(num(1) num(n)); cogiendonumero(i):=false; for j in 1..N exit when not cogiendonumero(j); exit when i=j or num(j)=0 or num(j)>num(i) or (num(j)=num(i) and j>i); Sección crítica (i); numero(i):=0; Soluciones hardware Inhibir interrupciones (muy drástico) Instrucciones atómicas test-and-set o SWAP

6 Instrucciones atómicas Ejemplos de algoritmos Inventadas en los años 60. Permiten evaluar y asignar un valor a una variable de forma atómica. test-and-set(b): Pone B a true y devuelve el antiguo valor de B. (Evaluar-y-Asignar(B)) SWAP(A,B): Intercambia los valores de A y B. (Intercambiar(A,B)) Si disponemos de estas instrucciones, se simplifica muchísimo el problema de la sección crítica. Sección no crítica; exit when Test_and_Set(llave)=false; Sección crítica; llave:=false; usando test-and-set usando swap Sección no crítica; aux:=true; - - variable local! Swap(llave,aux); exit when aux=false; Sección crítica; llave:=false; Solución completa (test-and-set) esperando: array(0..n- 1) of boolean := (others => false); cerradura: boolean := false; j: mod N; llave:boolean; SNCi; esperando(i):=true; llave:=true; while esperando(i) and llave llave:=test_and_set(cerradura); esperando(i):=false; SCi; j:=i+1; while (j/=i) and not esperando(j) j:=j+1; if j=i then cerradura:=false; else esperando(j):=false; end if; Contenidos Introducción El problema de la sección crítica Semáforos Monitores Semáforos Edsger Dijkstra, 1965 Objetivo: herramienta universal para sincronizar procesos, que sirva como componente básico para construir algoritmos concurrentes Concepto de semáforo Dijkstra lo definió como una variable entera S con dos operaciones atómicas: P(S): esperar a que S>0; S:=S-1; V(S): S:=S+1; NOTA: el semáforo no puede adquirir valores negativos

7 Semáforos: otras notaciones P(s) = wait(s) = espera (s) V(s) = signal(s) = señal (s) (se utilizan varias notaciones para las operaciones de los semáforos, pero todas significan lo mismo) Ejemplo: sección crítica resuelta con semáforos Usamos un único semáforo inicializado a uno. Sección no crítica wait(s) Sección crítica signal(s) end; Semáforos: esperar por eventos y condiciones Se asocia un semáforo, inicializado a cero, al evento por el que queremos esperar. Cuando un proceso ha hecho que se cumpla una determinada condición, lo indica ejecutando un signal(c). Un proceso esperará a que la condición sea cierta mediante un wait(c). P1 S1; signal(c); S2; end; P2 R1; wait(c); R2; end; Semáforos: ejercicios Ejercicios q a.-) Resolver el problema de la sección crítica con n procesos q b.-) Resolver diversos problemas de sincronización b.1.-) Sean P1 y P2 dos procesos concurrentes. Modificar el código de ambos procesos de forma que el conjunto de sentencias R2 del proceso 2 se ejecute después de que se haya ejecutado el conjunto de sentencias S1 del proceso 1. P1 S1; S2; end; P2 R1; R2; end; Semáforos: ejercicios q b.2.-) Realizar un pequeño programa que se ajuste al siguiente diagrama (o grafo) de precedencia (suponiendo que disponemos de las herramientas siguientes: sentencia concurrente co/coend ) Semáforos: ejercicios q b.3.-) Realizar un pequeño programa que se ajuste al siguiente diagrama (o grafo) de precedencia (suponiendo que disponemos de las herramientas siguientes: sentencia concurrente co/coend y semáforos) A C A C B D B D

8 Semáforos: implementación con espera activa También llamados spinlocks wait(s): while s<=0 do nada; s:=s- 1; signal(s): s:=s+1; Semáforos: implementación sin espera activa Suponemos que el SO proporciona unas operaciones para bloquear y desbloquear procesos type Semáforo is record valor:integer; L: Lista<Proceso>; end record; wait(s): s.valor := s.valor- 1; if s.valor<0 then L.insertar(procesoActual); bloquear(procesoactual); end if; signal(s): s.valor := s.valor+1; if s.valor<=0 then L.extraer(proceso); despertar(proceso); end if; Semáforos: la implementación debe garantizar atomicidad Es crítico que las operaciones se ejecuten de forma atómica Entorno uniprocesador: q Inhibir interrupciones Entorno multiprocesador: q Instrucciones hardware especiales q Aplicar un algoritmo de sección crítica con espera activa Semáforos binarios Los semáforos vistos reciben el nombre de semáforo general o semáforo de conteo Un semáforo que sólo puede tomar los valores 0 y 1 recibe el nombre de semáforo binario Ejercicio Implementación de un semáforo de conteo con semáforos binarios Problemas clásicos de sincronización Problema del búfer limitado Problema de los lectores y escritores q 1er problema: prioridad para los lectores q 2º problema: prioridad para los escritores Problema de los filósofos comensales

9 Búfer limitado Productor producir un elemento elem wait(hayhuecos); wait(cerradura); buffer(entra):=elem; entra:=entra+1; signal(cerradura); signal(hayelementos); N: constant integer:=; type elemento is ; buffer: array(0..n- 1) of elemento; entra,sale: mod N:=0; hayelementos: Semaphore :=0; hayhuecos: Semaphore :=N; cerradura: Semaphore :=1; wait(hayelementos); wait(cerradura); elem:=buffer(sale); sale:=sale+1; signal(cerradura); signal(hayhuecos); consumir elemento elem Consumidor Lectores y escritores Esquema útil para gestionar el acceso a una base de datos: q Puede haber varios lectores accediendo a la BD de forma concurrente q Sólo puede haber un escritor trabajando q No puede haber lectores y escritores al mismo tiempo q y si se puede, que no haya inanición Lectores y escritores: dos variantes Primera variante: prioridad para los lectores q Si un escritor está esperando, se le pueden adelantar otros lectores q Ojo, riesgo de inanición para los escritores Segunda variante: prioridad para los escritores q Si hay escritores esperando por la BD, los lectores que van llegando nuevos se deben esperar hasta que todos los escritores finalicen q Ahora hay riesgo de inanición para los lectores Lectores y escritores: 1ª variante Lector wait(cerradura); nlectores:=nlectores+1; if nlectores=1 then wait(escritura); signal(cerradura); LEER DE LA BD; wait(cerradura); nlectores:=nlectores- 1; if nlectores=0 then signal(escritura); signal(cerradura); cerradura: Semaphore :=1; escritura: Semaphore :=1; nlectores: natural :=0; wait(escritura); ESCRIBIR EN LA BD; signal(escritura); Escritor Lectores y escritores: 2ª variante cerrojo : Semaphore := 1; escribiendo : boolean := false; nlec,nesc : natural := 0; Lector wait(cerrojo); while escribiendo or nesc>0 signal(cerrojo); wait(cerrojo); nlec := nlec + 1; signal(cerrojo); leer de la BD wait(cerrojo); nlec := nlec 1; signal(cerrojo); Escritor wait(cerrojo); nesc := nesc + 1; while escribiendo or nlec>0 signal(cerrojo); wait(cerrojo); nesc := nesc - 1; escribiendo := true; signal(cerrojo); escribir en la BD wait(cerrojo); escribiendo := false; signal(cerrojo); Los filósofos

10 Los filósofos: modelo simple Filósofos: ojo al interbloqueo palillo: array(0..4) of Semaphore := (others=>1); wait(palillo(i)); wait(palillo(i+1 mod 5)); COMER; signal(palillo(i)); signal(palillo(i+1 mod 5); PENSAR; La solución anterior puede entrar en un estado de bloqueo mutuo entre todos los filósofos à interbloqueo Posibles soluciones: q Algoritmo asimétrico filósofos pares/impares q Impedir a más de cuatro filósofos entrar a pedir los palillos q Coger los dos palillos de forma atómica (o coges los dos, o no coges ninguno) Los semáforos ayudan, pero tienen limitaciones Los semáforos son una herramienta de bajo nivel, que requiere un uso disciplinado y cuidadoso. Es muy fácil cometer errores de uso con semáforos. Veamos algunos ejemplos dónde está el fallo? Sem = 0 P (sem) sección crítica V (sem) dónde está el fallo? Más problemas Sem = 1 void rutina_en_exclusion_mutua () { P (Sem) código de sección crítica if ( error ) return; más código de sección crítica V (sem) Dos procesos que acceden a recursos compartidos: qué ocurre al ejecutarlos al mismo tiempo? Proceso 1 P (impresora) P ( disco ) usar disco e impresora V (disco) V (impresora) Proceso 2 P (disco) P ( impresora ) usar disco e impresora V (impresora) V (disco)

11 Herramientas de alto nivel Regiones críticas condicionales Objetivo: introducir en el lenguaje de programación herramientas de sincronización que sean más seguras que los semáforos Ejemplos: q Regiones críticas q Monitores y variables condición Abstracción de un bloque de código que accede a recursos compartidos. Garantiza exclusión mutua. El código sólo se ejecuta si la condición asociada a la región crítica es cierta. Ejemplo: region Búfer when Nelementos > 0 { // este código se ejecuta en exclusión mutua // y sólo se ejecuta si Nelementos > 0 consumir un elemento del búfer Nelementos = Nelementos 1; Regiones críticas condicionales Contenidos Se plantearon en 1972 (Brinch Hansen, Pascal Concurrente) Gran fuerza expresiva, el código queda mucho más legible y compacto Problema: implementación muy costosa, comparada con el código escrito a mano con semáforos Por ese motivo, nunca llegaron a prosperar como herramienta de uso común Introducción El problema de la sección crítica Semáforos Monitores Monitor Propuesto por Hoare (1972) Tipo abstracto de datos q Estructura de datos privada q Operaciones públicas + q Exclusión mutua q Sincronización (variables condición) Monitor: ejemplo básico monitor Contador { // operaciones públicas public Contador () { valor = 0; public void incrementa() { valor++; public int actual() { return valor; int valor; // variable interna privada ; Contador.incrementa(); V = Contador.actual(); Si varios procesos intentan manipular el monitor al mismo tiempo, van entrando de uno en uno: no puede haber más de un proceso trabajando con el monitor en cada momento

12 Monitor: estructura interna Variables condición Una variable condición sirve para gestionar una cola de espera por el monitor Dos operaciones q x.wait à bloquea al proceso y lo mete en la cola x q x.signal à desbloquea a un proceso de la cola x ; si no hay procesos en x, no hace nada Variables condición: ejemplo Monitor con variables condición monitor Contador { Condition cola; public Contador () { valor = 0; public void BloqueaHastaQueValgaDiez() { if ( valor < 10 ) { cola.wait(); public void Incrementa() { valor++; if ( valor == 10 ) { cola.signal(); int valor; ; colas asociadas a las variables condición x e y x y datos compartidos operaciones código de inicialización cola de ingreso Qué ocurre tras un signal Qué ocurre cuando un proceso P realiza una operación signal sobre una variable condición x y existe un proceso suspendido Q asociado a dicha variable? Estilo Hoare à se reanuda Q inmediatamente Estilo Mesa à Q se desbloquea, pero espera a que P abandone el monitor El estilo Mesa es el más utilizado en los lenguajes de programación actuales Qué ocurre tras un signal (2) Si varios procesos están suspendidos por la condición x y algún proceso ejecuta x.signal, qué proceso se reanuda? q FIFO à desbloqueamos al más antiguo q Por prioridades à conveniente en sistemas de tiempo real

13 Ejemplo: un semáforo implementado con un monitor monitor Semáforo { int valor; Condition cola; public Semáforo (int val) { valor = val; public void P() { while ( valor == 0 ) { cola.wait(); valor- - ; public void V() { valor++; cola.signal(); ; Ejemplo: búfer limitado monitor Búfer { Condition hayhuecos, hayitems; int nitems = 0; const int N = ; public void insertar (Item x) { while ( nitems==n ) { hayhuecos.wait(); introducir x en el búfer nitems++; hayitems.signal(); public Item extraer() { while ( nitems==0 ) { hayitems.wait(); Item x = extrae algo nitems- - ; hayhuecos.signal(); return x; ; Cómo se implementa un monitor monitor MiMonitor { public void oper1 ( ) { public void oper2 ( ) { ; El compilador genera un código parecido a este: El cerrojo garantiza que no puede haber más de un proceso dentro del monitor class MiMonitor { Semáforo cerrojo = 1; public void oper1 ( ) { cerrojo.p(); cuerpo de oper1 cerrojo.v(); public void oper2 ( ) { cerrojo.p(); cuerpo de oper2 cerrojo.v(); ; Cómo se implementa un monitor: variables condición monitor MiMonitor { Condition c; c.wait(); c.signal(); ; monitor MiMonitor { Semáforo cerrojo = 1; Semáforo c_queue = 0; int c_count = 0; c_count++; cerrojo.v(); // 1. libero el monitor c_queue.p(); // 2. me bloqueo en la cola cerrojo.p(); // 3. cuando me desbloqueen // debo recuperar el monitor if (c_count>0) { // si hay alguien esperando c_count- - ; // lo desmarco c_queue.v(); // y lo desbloqueo Monitores: ejemplos más avanzados Lectores y escritores (1) monitor BaseDatos { public EmpiezaLectura() { public TerminaLectura() { public EmpiezaEscritura() { public TerminaEscritura() { ; void Leer() { // Lo que debe ejecutar un lector BaseDatos.EmpiezaLectura(); leer de la BD BaseDatos.TerminaLectura(); void Escribir() { // Lo que debe ejecutar un escritor BaseDatos.EmpiezaEscritura(); escribir en la BD BaseDatos.TerminaEscritura();

14 Lectores y escritores (2) monitor BaseDatos { Condition leer, escribir; int nlec=0, lecesperan=0; bool escribiendo = false; public EmpiezaLectura() { while (escribiendo) { lecesperan++; leer.wait(); lecesperan- - ; nlec++; leer.signal(); // desbloquea en cadena al resto Lectores y escritores (y 3) ; public EmpiezaEscritura() { while (nlec>0 escribiendo) { escribir.wait(); escribiendo = true; public TerminaEscritura() { escribiendo = false; if (lecesperan > 0) { leer.signal(); else { escribir.signal(); public TerminaLectura() { nlec- - ; if (nlec==0) { escribir.signal(); Filósofos (1): especificación del monitor monitor MesaFilósofos { // estado interno del sistema const int N=5; Condition puedecomer[n]; enum Estado { pensando, hambriento, comiendo ; Estado estado[n] = { others => pensando ; // operaciones públicas (ver siguientes páginas) public CogePalillos ( int filosofo ) { public SueltaPalillos ( int filosofo ) { Filósofos (2): ejemplo de uso void VidaDelFilósofo ( int unfilosofo ) { { piensaunpoco(); MesaFilósofos.CogePalillos (unfilosofo); comearroz(); MesaFilósofos.SueltaPalillos (unfilosofo); // operación auxiliar interna private compruebaquepuedecomer ( int filosofo ) { ; Filósofos (3): rutina auxiliar // operación privada dentro del monitor MesaFilósofos private compruebaquepuedecomer ( int filosofo ) { int vecinoderecha = (filosofo+1) % N; int vecinoizquierda = (filosofo- 1+N) % N; if ( estado[vecinoizquierda]!= comiendo && estado[vecinoderecha]!= comiendo ) { estado[filosofo] = comiendo; puedecomer[filosofo].signal(); Filósofos (y 4): operaciones públicas del monitor public CogerPalillos ( int filosofo ) { estado[filosofo] = hambriento; compruebaquepuedecomer(filosofo); if ( estado[filosofo]!= comiendo ) { puedecomer[filosofo].wait(); public SoltarPalillos ( int filosofo ) { estado[filosofo] = pensando; int vecinoderecha = (filosofo+1) % N; int vecinoizquierda = (filosofo- 1+N) % N; compruebaquepuedecomer (vecinoderecha); compruebaquepuedecomer (vecinoizquierda);

Concurrencia entre Procesos.

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

Más detalles

Implementación de monitores POSIX

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

Más detalles

PROGRAMACION CONCURRENTE

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

Más detalles

Tema 3. Monitores Programación Concurrente

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

Más detalles

Tema 3: Concurrencia de procesos

Tema 3: Concurrencia de procesos Tema 3: Concurrencia de procesos Yolanda Blanco Fernández yolanda@det.uvigo.es Concurrencia, Tiempo Real y Paralelismo Concurrencia: Convivencia de un conjunto de procesos en un mismo ordenador. Sistemas

Más detalles

Mensajes. Interbloqueo

Mensajes. Interbloqueo CONCURRENCIA DE PROCESOS Preparado por: Angel Chata Tintaya (angelchata@hotmail.com) Resumen Los procesos comparten variables globales, comparten y compiten por recursos, se ejecutan simultáneamente intercalándose

Más detalles

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

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

Más detalles

Concurrencia: Exclusión mutua y Sincronización

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

Más detalles

El problema de los Filósofos

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

Más detalles

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

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

Más detalles

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

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

Más detalles

PROGRAMACIÓN CONCURRENTE. Tema 5 Monitores

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

Más detalles

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 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

Más detalles

CDI Exclusión mutua a nivel alto. conceptos

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

Más detalles

SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS

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;

Más detalles

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

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

Más detalles

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 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

Más detalles

Secciones críticas y exclusión mutua

Secciones críticas y exclusión mutua Secciones críticas y exclusión mutua Lecturas: Andrews, secciones 3.1, 3.2, 3.3, 3.4 Ben-Ari, sección 2.2 Manuel Carro Universidad Politécnica de Madrid Este texto se distribuye bajo los términos de la

Más detalles

Receta general para resolver problemas de sincronización con semáforos

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

Más detalles

Concurrencia. Primitivas IPC con bloqueo

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

Más detalles

Estructuras de control

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

Más detalles

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 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

Más detalles

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González.

Programcaión Básica. Secuencias de Control y Repetición. Arturo Vega González. Programación Básica Arturo Vega González a.vega@ugto.mx 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

Más detalles

Ciclos. Recordando Estructuras de Control Básicas: SELECCIÓN (condición) SECUENCIAL

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

Más detalles

fundamentos de programación (unidad 4) programación estructurada en Java

fundamentos de programación (unidad 4) programación estructurada en Java fundamentos de programación (unidad 4) programación estructurada en Java Para ver una copia completa de la licencia, acudir a la dirección http://creativecommons.org/licenses/by-nc-sa/2.5/es/legalcode.es

Más detalles

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO

UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO UNIDAD ACADÉMICA PROFESIONAL TIANGUISTENCO LICENCIATURA EN PRODUCCIÓN INDUSTRIAL. UNIDAD DE APRENDIZAJE: PROGRAMACIÓN Créditos institucionales de la UA: 6 Material visual: Diapositivas Unidad de competencia

Más detalles

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 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.

Más detalles

Introducción a los Sistemas Operativos

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 corcuerp@unican.es 1 Índice General Conceptos sobre ordenadores Concepto

Más detalles

un programa concurrente

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,

Más detalles

Comunicación y sincronización de procesos

Comunicación y sincronización de procesos Sistemas Operativos I Tema 4 Comunicación y sincronización de procesos Equipo de Sistemas Operativos DISCA / DSIC UPV Comunicación y sincronización de procesos Objetivos Presentar dos alternativas básicas

Más detalles

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

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

Más detalles

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

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

Más detalles

CAPÍTULO 8. Comunicación y sincronización basada en variables compartidas

CAPÍTULO 8. Comunicación y sincronización basada en variables compartidas CAPÍTULO 8. Comunicación y sincronización basada en variables compartidas 8 Comunicación y sincronización basada en variables compartidas...2 8.1 Exclusión mutua y condición de sincronización....2 8.2

Más detalles

Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.

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

Más detalles

Estructuras en LabVIEW.

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

Más detalles

Estructuras de Control

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

Más detalles

Exclusión mutua. Gustavo Romero. 14 de febrero de 2014. Arquitectura y Tecnología de Computadores

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

Más detalles

2.2 Nombres, Ligado y Ámbito

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

Más detalles

Introducción a las sentencias de control

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:

Más detalles

PROGRAMACION CONCURRENTE

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

Más detalles

Tema 2. El lenguaje JAVA

Tema 2. El lenguaje JAVA Tema 2. El lenguaje JAVA Nomenclatura habitual Variables Tipos de variables Tipos primitivos Referencias Arrays Operadores Operadores de Java Precedencia de operadores Sentencias de control Sentencias

Más detalles

Fundamentos de programación

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

Más detalles

ESTRUCTURAS REPETITIVAS

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

Más detalles

2 Control de procesos y sincronización

2 Control de procesos y sincronización 2 Control de procesos y sincronización En los sistemas multiprogramados se define el proceso como entidad representante de la ejecución de un programa en un determinado contexto. Aunque hoy en día se ha

Más detalles

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. 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

Más detalles

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

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

Más detalles

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

Area Académica: Sistemas Computacionales. Tema: Elementos de diseño de memoria caché Area Académica: Sistemas Computacionales Tema: Elementos de diseño de memoria caché Profesor: Raúl Hernández Palacios Periodo: 2011 Keywords: Memory, cache memory. Tema: Elementos de diseño de memoria

Más detalles

1 (2 5 puntos) Responda con brevedad y precisión a las siguientes preguntas:

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)

Más detalles

I.3. Interacción entre Procesos Concurrentes.

I.3. Interacción entre Procesos Concurrentes. PROGRAMACION CONCURRENTE I.3. Interacción entre Procesos Concurrentes. J.M. Drake 1 Interacción entre Procesos Concurrentes Modelos de interacción entre procesos. Problemas de sincronización y exclusión

Más detalles

1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt).

1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt). 1. Equivalencia de herramientas. Implemente las primitivas de las regiones críticas condicionales con semáforos. (2pt). La respuesta a esta pregunta se encuentra en el texto base de la asignatura em las

Más detalles

Manipulación de procesos

Manipulación de procesos Manipulación de procesos Las primeras computadoras solo podían manipular un programa a la vez. El programa tenía control absoluto sobre todo el sistema. Con el desarrollo vertiginoso del hardware ese panorama

Más detalles

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

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

Más detalles

CAPITULO 6. Control de Concurrencia y Recuperación

CAPITULO 6. Control de Concurrencia y Recuperación CAPITULO 6 Control de Concurrencia y Recuperación 6.1 Protocolos de Bloqueo Un protocolo de bloqueo nace de la necesidad creada cuando una transacción solicita un bloqueo de un modo particular sobre un

Más detalles

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa

Inicio del programa. Entrada de datos. Proceso de datos. Salida de datos. Fin del programa PROGRAMACIÓN 10. Prof. Dolores Cuiñas H. Recuerde que estos son apuntes muy simplificados que deberá completar con la bibliografía recomendada APUNTES Nº 4 ESTRUCTURA SECUENCIAL GENERAL La estructura secuencial

Más detalles

Guía práctica de estudio 05: Diagramas de flujo

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

Más detalles

Examen Febrero de 2012

Examen Febrero de 2012 Examen Febrero de 2012 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 cada

Más detalles

TEMA 4. ESTRUCTURAS DE CONTROL

TEMA 4. ESTRUCTURAS DE CONTROL M.P. Sesmero, P. de Toledo, F.J. Ordoñez, J. Gómez-Romero, J.A. Iglesias, J.L. Mira Programación TEMA 4. ESTRUCTURAS DE CONTROL Grado en Ingeniería en Tecnologías Industriales Programación CONTENIDOS 4.1.

Más detalles

Solución Examen Febrero 2006

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

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

TECNICO SUPERIOR EN INFORMÁTICA EMPRESARIAL MÓDULO INTRUCCIONAL

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

Más detalles

PROGRAMACIÓN CONCURRENTE

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

Más detalles

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación.

la solución a una ecuación cuadrática solicitando al usuario los términos de dicha ecuación. ALGORITMOS SECUENCIALES: La estructura secuencial es aquella en la que una acción (instrucción) sigue a otra en secuencia. Las tareas se suceden de tal modo que la salida de una es la entrada de la siguiente

Más detalles

Secretos de la Programación Concurrente

Secretos de la Programación Concurrente Secretos de la Programación Concurrente Stuart Perez, Luis Castro Autómatas y Compiladores, Escuela de Ciencias de la Computación e Informática, San Pedro de Montes de Oca, Costa Rica jstuartp@gmail.com

Más detalles

Nombre de la asignatura : Sistemas de Computación Código : Nivel (semestre de la carrera) : 7 : Ingeniería Civil Informática Nº de créditos : 4

Nombre de la asignatura : Sistemas de Computación Código : Nivel (semestre de la carrera) : 7 : Ingeniería Civil Informática Nº de créditos : 4 I IDENTIFICACION Nombre de la asignatura : Sistemas de Computación Código : 503429 Nivel (semestre de la carrera) : 7 Carrera : Ingeniería Civil Informática Nº de créditos : 4 Duración : Un semestre Pre-requisitos

Más detalles

Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005

Ingeniería Superior de Informática. Curso 3º. Sistemas Operativos. Examen Final. TEORÍA. 31 de Enero de 2005 Ingeniería Superior de Informática. Curso º. Sistemas Operativos. Examen Final. TEORÍA. de Enero de 005 Nombre: DNI:. ( puntos). La TFA es la tabla que, en UNIX, guarda los punteros de posición de cada

Más detalles

Instrucciones de control

Instrucciones de control Instrucciones de control Instrucciones de control de flujo C# ofrece un conjunto de sentencias similar al de C, C++ o Java. A continuación se estudian muy brevemente cada una de ellas. if if se utiliza

Más detalles

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

Tema 2 Conceptos básicos de programación. Fundamentos de Informática Tema 2 Conceptos básicos de programación Fundamentos de Informática Índice Metodología de la programación Programación estructurada 2 Pasos a seguir para el desarrollo de un programa (fases): Análisis

Más detalles

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el????

Programación. Tema 8: Tablas Hash. Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Programación. Tema : Tablas Hash /Mayo/ Apuntes elaborados por: Eduardo Quevedo, Aaron Asencio y Raquel López Revisado por: Javier Miranda el???? Tema : Tabla Hash Las tabla hash aparece para conseguir

Más detalles

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO

Control de Flujo. Estructuras de Control! Experiencia Educativa de Algorítmica CONTROL DE FLUJO Control de Flujo Estructuras de Control Experiencia Educativa de Algorítmica 1 Introducción El estilo de como escribimos y analizamos un algoritmo se convierte en una de las principales características

Más detalles

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura

UNIVERSIDAD DEL CARIBE UNICARIBE. Escuela de Informática. Programa de Asignatura UNIVERSIDAD DEL CARIBE UNICARIBE Escuela de Informática Programa de Asignatura Nombre de la asignatura : Sistema Operativo II Carga académica : 4 créditos Modalidad : Semi-presencial Clave : INF-223 Pre-requisito

Más detalles

Desde los programas más simples escritos en un lenguaje de programación suelen realizar tres tareas en forma secuencial.

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

Más detalles

CÓMO TRABAJA TU SISTEMA OPERATIVO?

CÓMO TRABAJA TU SISTEMA OPERATIVO? CÓMO TRABAJA TU SISTEMA OPERATIVO? AUTORÍA MARÍA CATALÁ CARBONERO TEMÁTICA SISTEMAS OPERATIVOS ETAPA CICLO MEDIO Y SUPERIOR DE INFORMÁTICA Resumen Los sistemas operativos nacen de la informática. Su función

Más detalles

Sistemas Distribuidos

Sistemas Distribuidos Sistemas Distribuidos Exclusion Mutua: Memoria Compartida. Ramiro De Santiago Lopez. 28/01/2014 Exclusion Mutua (ME) Un proceso excluye temporalmente a todos los demás para usar un recurso compartido.

Más detalles

Monitores Ing. Iván Medrano Valencia

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ás detalles

CONCEPTOS BASICOS DEL LENGUAJE JAVA

CONCEPTOS BASICOS DEL LENGUAJE JAVA CONCEPTOS BASICOS DEL LENGUAJE JAVA NOMENCLATURA GENERAL En Java se distinguen las letras mayúsculas y minúsculas. Las reglas del lenguaje respecto a los nombres de variables son muy amplias y permiten

Más detalles

Monitores. Implementación de un Buffer con monitores

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

Más detalles

Java para no Programadores

Java para no Programadores Java para no Programadores Programa de Estudio Java para no Programadores Aprende a programar con una de las tecnologías más utilizadas en el mercado de IT. Este curso está orientado a quienes no tienen

Más detalles

Concurrencia en.net David Jesús Horat Flotats

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

Más detalles

PROGRAMACION ORIENTADA A OBJETOS EN C++

PROGRAMACION ORIENTADA A OBJETOS EN C++ PROGRAMACION ORIENTADA A OBJETOS EN C++ 1- INTRODUCCIÓN El lenguaje C++ representa el resultado de los esfuerzos realizados para proporcionar las ventajas de la programación Orientada a Objetos a un lenguaje

Más detalles

4. Operadores Operador asignación

4. Operadores Operador asignación Programación orientada a objetos con Java 43 4. Operadores Objetivos: a) Describir los operadores (aritméticos, incrementales, de relación, lógicos y de asignación) y los tipos de dato primitivos sobre

Más detalles

Diseño de sistemas concurrentes

Diseño de sistemas concurrentes Diseño de sistemas concurrentes Manuel Carro Universidad Politécnica de Madrid Necesidad de diseño Hasta ahora, problemas ya cerrados: Número de procesos, recursos Código de procesos Especificación de

Más detalles

Cada examen debe superarse con al menos un 4 para hacer media.

Cada examen debe superarse con al menos un 4 para hacer media. Concurrencia Pau Arlandis Martínez Sobre las normas Profesores Ángel Herranz 2309 Julio Mariño 2308 Cada lunes se entregará un problema que debe resolverse antes del jueves. Únicamente sirven para practicar

Más detalles

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html

Enlaces relacionados: http://otn.oracle.com/tech/pl_sql/index.html 1.INTRODUCCION PL/SQL (Procedural Language ó Programming Language, según distintas fuentes, aunque la oficial es la primera) es el lenguaje utilizado por Oracle como extensión al SQL, y que nos va a permitir

Más detalles

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

Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Threads (hilos) Java nos ofrece la clase Thread y la interfaz Runable que permiten que varios procesos estén funcionando de forma concurrente. Conceptos: Proceso (thread o hilo): es un programa en ejecución

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

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

Más detalles

Algoritmos. Intro. Prof. Raquel Torres Peralta / Gerardo Sanchez S. Unison

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

Más detalles

Sincronización. Arquitectura de Computadores

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

Más detalles

Estructuras Repetitivas

Estructuras Repetitivas Estructuras Repetitivas Se solicita al operador que ingrese tres números enteros cualesquiera. En base a estos números, mostrar por pantalla cual es el mayor de todos. Diag. De Flujos Pseudocódigo Matlab

Más detalles

Elementos léxicos del lenguaje de programación Java

Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Elementos léxicos del lenguaje de programación Java Palabras reservadas Identificadores Literales Operadores Delimitadores Comentarios Apéndices Operadores

Más detalles

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño?

- Bajo que condiciones el algoritmo de planifiación de procesos FIFO (FCFS) resultaría en el tiempo de respuesta promedio más pequeño? Sistemas Operativos. Grado Ingeniería Informática. TGR-2.1 Procesos. Noviembre 2014 Problemas para hacer en clase FIFO cpu C A 1. Dos procesos A y B tienen una ráfaga de CPU de 50 ms y un proceso C tiene

Más detalles

Computación II. Introducción a Visual Basic

Computación II. Introducción a Visual Basic Computación II Introducción a Visual Basic Introducción a Visual Basic Microsoft Visual Basic es un conjunto de herramientas que posibilitan el desarrollo de aplicaciones para Windows de una manera rápida

Más detalles

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION

ALGORITMOS, ESTRUCTURAS Y PROGRAMACION VICERRECTORADO ACADÉMICO DIRECCIÓN DE GESTIÓN, DESARROLLO E INNOVACIÓN CURRICULAR FACULTAD: INGENIERIA ESCUELAS: COMPUTACION - SISTEMA UNIDAD CURRICULAR: ALGORITMOS, ESTRUCTURAS Y PROGRAMACION FECHA DE

Más detalles

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5

Planificaciones Algoritmos y Programación I. Docente responsable: AZCURRA DIEGO ANDRES. 1 de 5 Planificaciones 7540 - Algoritmos y Programación I Docente responsable: AZCURRA DIEGO ANDRES 1 de 5 OBJETIVOS Objetivos estratégicos: -Desarrollar el concepto algorítmico. -Aplicar técnicas de programación

Más detalles

CAPÍTULO 1. CONCEPTOS FUNDAMENTALES

CAPÍTULO 1. CONCEPTOS FUNDAMENTALES CAPÍTULO 1. CONCEPTOS FUNDAMENTALES 1.1 Introducción La idea de programación concurrente siempre estuvo asociada al mundo de los Sistemas Operativos (SSOO). No en vano, los primeros programas concurrentes

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

PROGRAMACIÓN. UNIDAD II. ALGORITMO PROFA : HAU MOY

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

Más detalles

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones

INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL. Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones INTELIGENCIA EN REDES DE COMUNICACIONES PRÁCTICA FINAL BLACKJACK Ignacio Ribas Ramos Miguel Flecha Lozano Ingeniería de Telecomunicaciones 1. Explicación del juego de cartas del Blackjack El Blackjack

Más detalles

Programación Concurrente y Paralela. P(S) ; sección crítica P(S);

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

Más detalles

Sistemas Operativos II TEMA 1. Contenido

Sistemas Operativos II TEMA 1. Contenido TEMA 1 Contenido 1.1. Introducción 1.2. Requisitos Hardware 1.2.1. Mecanismo de Interrupciones 1.2.2. Protección de Memoria 1.2.3. Repertorio de Instrucciones Reservadas 1.2.4. Reloj de Tiempo Real 1.3.

Más detalles