Sistemas Operativos Tema 7. Concurrencia
|
|
- Milagros Botella Ávila
- hace 7 años
- Vistas:
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. Sistemas Operativos Tema 3. 1 Procesamiento concurrente. Procesamiento concurrente: base de los sistemas operativos modernos (multiprogramados): Un conjunto de procesos que
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. 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
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
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
Concurrencia: deberes. Concurrencia: Exclusión Mutua y Sincronización. Concurrencia. Dificultades con la Concurrencia
Concurrencia: deberes Concurrencia: Exclusión Mutua y Sincronización Capítulo 5 Comunicación entre procesos Compartir recursos Sincronización de múltiples procesos Asignación del tiempo de procesador Concurrencia
Concurrencia: Exclusión mutua y Sincronización
Concurrencia: Exclusión mutua y Sincronización Prof. Carlos Figueira Basado en materiales de Yudith Cardinale (USB) Williams Stallings, Eugene Styer Concurrencia Múltiples aplicaciones Aplicaciones estructuradas
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
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
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
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
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
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
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;
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
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
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
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
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
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 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
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
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
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
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
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.
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
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,
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
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
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
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
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
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
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
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
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
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:
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
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
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
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
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
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
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
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
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)
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
- 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
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
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
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
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
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
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
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
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
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.