SOLUCIONES A ALGUNOS DE LOS EJERCICIOS DE SINCRONIZACION Y COMUNICACION ENTRE PROCESOS
|
|
- María Pilar Figueroa Vega
- hace 8 años
- Vistas:
Transcripción
1 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; process guardar; process calcular; suspend(); suspend(); suspend(); suspend(); guardar*; suspend(); recoger*; resume(pid1); calcular*; resume(pid2);... resume(pid1); resume(pid3); resume(pid4); process imprimir; pid1 = create("recoger"); suspend(); pid2 = create("guardar"); imprimir*; pid3 = create("calcular"); resume(pid3); pid4 = create("imprimir");... resume(pid1); resume(pid1); resume(pid3); Esta solución presupone que las llamadas a resume() siempre tienen un correspondiente suspend() que las espera. En un sistema operativo si se hace una llamada para reanudar un proceso que no está suspendido el efecto es normalmente nulo. Pero si esto tuviera lugar en este programa ocasionaría la pérdida de señalizaciones con los correspondientes fallos de precedencia, y su funcionamiento sería incorrecto. Si suponemos que resume() devuelve un valor TRUE o FALSE dependiendo de si ha reanudado o no efectivamente el proceso que pretendía, podrían suplirse todas las llamadas a resume() por while (! resume(pid i )) { ; pero aunque de este modo la lógica del problema estaría correctamente resuelta, sería a costa de pérdida de eficacia de la solución al introducir bucles de reanudaciones que consumen tiempo de UCP sin hacer trabajo útil. S1. a) Es segura, sin interbloqueo, y con posible aplazamiento indefinido.. Basta para ello advertir que inicialmente los valores de las variables c (global), d de p1 (local) y e de p2 (local) que intervienen en la negociación del acceso a la sección crítica forman la tripleta (1,0,0) y que las únicas operaciones que se efectúan son intercambios indivisibles sin modificación de valores. Por tanto los valores que se pueden alcanzar son: (1,0,0) ==> p1 y p2 están fuera de sus Secciones Críticas (0,1,0) ==> p1 está en su Sección Crítica, y p2 está fuera de la suya (0,0,1) ==> p1 está fuera de su Sección Crítica y p2 dentro de la suya Luego la exclusión mutua es segura. Para producirse interbloqueo deberían alcanzarse los valores (0,0,0): ambos procesos fuera y sin posibilidad de entrar, lo cual no es posible. El aplazamiento indefinido es posible puesto que no hay ningún mecanismo que impida que los valores estén oscilando entre (1,0,0) y (0,1,0), por ejemplo, sin dar opción a p2 a pasar a su sección crítica. b) La generalización a n procesos es inmediata. Sólo hay que repetir el esquema de cualquiera de los procesos p1 o p2 el número de veces que haga falta, para negociar la exclusión mutua con un (n+1)-tuple de valores de los cuales uno vale 1 y el resto 0. c) Si XCHG no fuera indivisible ya no se aseguraría la existencia invariante de uno y sólo un 1, y ello podría ocasionar fallos de exclusión mutua (ej. (0,1,1)) e interbloqueos (ej.(0,0,0)). 1
2 S3. a) Definición original con cola de espera WAIT: if (s == 0)) suspender en s.q; else s = s - 1; SIGNAL: if (! s.q vacía) reanudar un proceso de s.q; else s = s + 1; Definición alternativa con cola de espera WAIT: s := s - 1; if (s < 0)) suspender en s.q; SIGNAL: if (! s.q vacía) reanudar un proceso de s.q; {punto de interrupción s := s + 1; La operación de decremento juntamente con la comprobación del valor de s debe formar un todo indivisible en la operación wait. Para la operación signal basta que sean indivisibles separadamente la operación de reanudación condicional y la de incremento. b) El valor negativo indica Ocupado con operación de espera (wait) en curso y, en el caso de implementación con cola de espera, el numero de procesos que han pasado a esperar desde la última señalización c) Sí afecta a SIGNAL. Hace que el incremento del valor del semáforo se haga siempre y no solo en el caso de que no haya ningún proceso esperando en cola. Otra posibilidad: Siendo P b (s) y V b (s) las operaciones de espera y señalización sobre semáforos binarios, es decir, P b (s) while (s == 0) { ; y V b (s) s = 1; definimos wait(s) : P b (mutex) s = s - 1; if (s < 0) { V b (mutex); P b (retardo) V b (mutex); signal(s): Pb(mutex) s = s + 1; if (s <= 0) V b (retardo) else V b (mutex); S5. Declaraciones globales sem_t sillon, afeitado; mutex_t mutex; int sillas; boolean esperando; const int MAX = 5; Procesos Barbero() Cliente() 2
3 lock(mutex); if (sillas == 0) { esperando = TRUE; unlock(mutex); wait(sillon); unlock(mutex); esperando = FALSE sillas = sillas-1; unlock(mutex); Afeitar; post(afeitado); lock(mutex); if (sillas < MAX) { sillas = sillas+1; if (esperando) post(sillon); unlock(mutex); wait(afeitado); else unlock(mutex); Inicialización (programa principal): sillas = 0; esperando = FALSE; sem_init(sillon, 0); sem_init(afeitado, 0); mutex_init(mutex); Barbero(); Clientes() //tantas instancias de Cliente como se precise S5. Posible segunda solución. - Funciona? Barbero Clientes wait (sala); lock (mutex); lock (mutex); if (sillas < MAX) { sillas = sillas-1; unlock (mutex); post (sala); post (afeitando); sillas = sillas+1; Afeitar unlock (mutex); wait (afeitando) else unlock (mutex) Inicialización: sillas = 0; sem_init (afeitando, 1); sem_init (sala, 0); // sala, semáforo general mutex_init (mutex); Barbero(); Clientes(),...; S7. (a) El proceso LEER hace usos de dos procedimientos: leetarjeta (car) que lee un tarjeta de 80 columnas y rellena el array car de 80 caracteres put(buf, car) que coloca el carácter car en la posición siguiente del buffer ilimitado buf El proceso MODIFICAR hace uso de dos procedimientos get(buf, car) que toma el siguiente carácter del buffer ilimitado buf y lo asigna a car 3
4 put(buf, car) Si el buffer esta vacío se queda esperando El proceso IMPRIMIR hace uso de dos procedimientos get(buf, car) imprime(línea) que saca a la impresora el array línea de 125 caracteres Si los buffers los definimos así: typedef struct buffer { int indent, indsal; char elementos[infinito]; sem_t contador; BUFFER; los procedimientos get() y put() serán: get(buffer buf; char car) { wait(buf.contador); car = buf.elementos[buf.indsal] buf.indsal = buf.indsal + 1; put(buffer buf:; char car) { buf.elementos[indent] = car; buf.indent = buf.indent + 1; post(buf.contador); y los procesos quedarían básicamente de la siguiente forma, comunicados a través de dos buffer infinitos buf1 y buf2: Leer: i=0; while (! eof) { leetarjeta (car); for (i=0; i<80; i++) put(buf1,car[i]); put(buf1,' ') put(buf1,eof); Modificar: get(buf1, car1); while (! eof) { get(buf1,car2); if ((car1=='*') && (car2=='*')) { ristra = TRUE; put(buf2,'/'); else if (ristra) ristra = false; else put(buf2, car1); car1=car2; if (! ristra) put(buf2,car) Imprimir: i=0; while (! eof) { get(buf2,car); linea[i]=car; i=i+1; if (i == 125) { imprime(linea); i=0; if (i!= 0) imprime(linea); S8. (b) // program PCconCE; {productor/consumidor con cuenta de eventos const int n = 5; contadores producido, consumido; elementos deposito[n]; void PRODUCTOR(int id) { int ip; ip = 0; await(consumido, ip-n); deposito[ip % n] := producir(); ip = ip+1; advance(producido); 4
5 void CONSUMIDOR(int id) { int ic; ic = 0; await(producido, ic); consumir(deposito[ic % n]); ic = ic+1; advance(consumido) main() { initial_event(producido,0); initial_event(consumido,0); PRODUCTOR(0); CONSUMIDOR(0);. MVC1. Una posible solución a este problema, con semáforos, es la siguiente: // Program Fumadores; sem_t ingrediente[3]; sem_t s[6]; mutex mutex ; sem_t sem; int t; void Agente() { int i, j; end; i = random(2) + 1; j = i; while (j == i) j = random(2) + 1; wait(sem); post(ingrediente[i]); post(ingrediente[j]); end; void Ayuda(int id) { void Fumador(int id) { const int incr[3] = {1,2,4 const int nec[3] = (6,5,3); wait(ingrediente[id]); wait(s[nec[id]]); lock(mutex); t = 0; t = t + incr[id]; post(sem); post(s[t]); --- FUMA --- unlock(mutex); 5
6 main() { t = 0; sem_init(sem, 1); mutex_init(mutex, 1); Agente(); Ayuda(0);Ayuda(1); Ayuda(2); Fumador(0);Fumador(1);Fumador(2);. mutex se encarga de forzar la exclusión mutua al operar con t sem (Agente espera y Fumador[ ] señala) : permite que Agente saque un nuevo par de ingredientes t acumula los identificadores de hasta 2 ingredientes Resuelto con mutexes y variables condicionales // Program Fumadores; struct ingredientes {boolean tabaco,cerillas,papel; = {FALSE,FALSE,FALSE mutex_t ingr_mutex; cond_t ingr_cond; void Agente() { int i, j; i = random(2) + 1; j = i; while (j == i) j = random(2) + 1; lock (ingr_mutex) while (tabaco cerillas papel) wait(ingr_cond2, ingr_mutex) tabaco = (i == 0) (j == 0); cerillas = (i == 1) (j == 1); papel = (i == 2) (j == 2); broadcast(ingr_cond1); unlock (ingr_mutex) void FumadorTC() { lock(ingr_mutex); while (!(tabaco && cerillas)) wait(ingr_cond1, ingr_mutex); tabaco = FALSE; cerillas = FALSE; signal(ingr_cond2); unlock(ingr_mutex); --- FUMA --- void FumadorPC() { semejante a Fumador TC pero con papel y cerillas void FumadorTP { semejante a Fumador TC pero con tabaco y papel main() { 6
7 MVC4. // programa ascensor Fichero CONTROL.c Agente(); FumadorTC(); FumadorPC(); FumadorTP(); const int Npisos = 10; cond_t Petpisos[Npisos], aviso; int NpetPiso[Npisos]; mutex_t ctrlme; int piso_actual=1, piso_nuevo=-1, peticiones=0; void PulsarBoton(int piso) { lock(ctrlme); signalc(aviso); peticiones = peticiones+1; NpetPiso[piso]++; waitc(petpisos[piso],ctrlme); NpetPiso[piso]--; unlock(ctrlme); void EsperarPeticiones() { lock(ctrlme); if (peticiones == 0) waitc(aviso,ctrlme); unlock(ctrlme); void ElegirMasCercano(int& dist) { int i; boolean sigue; lock(ctrlme); i= 0; sigue = TRUE; while ((i <= Npisos) && sigue) { if ((piso_actual+i <= Npisos) && (NpetPiso[piso_actual+i]>0)) { piso_nuevo = piso_actual+i; dist = i; sigue = FALSE; else if ((piso_actual-i > 0) && (NpetPiso[piso_actual+i]>0)) { piso_nuevo = piso_actual -i; dist = -i; sigue = FALSE; i = i + 1; unlock(ctrlme); void SubirBajar() { lock(ctrlme); while (NpetPiso[piso_nuevo])>0) { signal(petpisos[piso_nuevo]); peticiones = peticiones-1; 7
8 piso_actual = piso_nuevo unlock(ctrlme); void pasajero() { int origen, destino; origen = random(npisos)+1; PulsarBoton(origen); do { destino = random(npisos)+1 while (destino == origen); PulsarBoton(destino); origen = destino; sleep(random(10)); void servidor() { integer dist, EsperarPeticiones; ElegirMasCercano(dist); sleep(abs(dist)); SubirBajar; main() { servidor; pasajero();pasajero();pasajero();...; MVC5. La definición de las operaciones P (wait) y V (signal) para semáforos acotados son las siguientes: P(s): while (s <= 0) { s := s - 1; V(s): while (s >= smax) { s := s + 1; El monitor que fuerza este comportamiento es el siguiente: Fichero (monitor) Sa const int smax = N, sem[ns]; cond_t c, d; mutex_t Saem void P(int s) { lock(saem); while (sem[s] <= 0) wait(c,saem); 8
9 sem[s]--; signal(d); // if (sem[s] < smax) signal(c); unlock(saem); void V(int s); lock(saem); if (sem[s] >= smax) wait(d, Saem); sem[s]++; signal(c); // if (sem[s] > 0) signal(c); unlock(saem); MVC6. Fichero (monitor) LyE { int nlect=0, Lesp=0, Eesp=0; bool ocupado=false; cond_t condl, conde; mutex_t LyEem; void IniciarL () { if (ocupado (Eesp > 0)) { Lesp = Lesp+1; wait(condl,lyeem); Lesp = Lesp-1; nlect = nlect+1; signalc(condl); void IniciarE() { if (ocupado (nlect!=0) { Eesp = Eesp+1; wait(conde,lyeem); Eesp = Eesp-1; ocupado = TRUE; void AcabarL() { nlect = nlect-1; if (nlect == 0) signal(conde); void AcabarE() { ocupado = FALSE; if (Lesp > 0) signal(condl); else signal(conde); Otra solución, si se dispone de la función empty(cola) que devuelve un valor lógico true o false: Fichero (monitor) LyE { int nlect=0; boolean ocupado=false; cond_t condl, conde; mutext_t LyEem; 9
10 void IniciarL() { if (ocupado!empty(conde)) wait(condl, LyEem); nlect = nlect+1; signal(condl); void IniciarE; if (ocupado (nlect!= 0)) wait(conde, LyEem); ocupado = TRUE; void AcabarL() { nlect = nlect-1; if (nlect == 0) signal(conde); void AcabarE() { ocupado = FALSE; if (!empty(condl)) signal(condl); else signal(conde); MVC7. // programa Filosofos; Fichero(monitor) Mpalillos int Palillos[5]={2,2,2,2,2 // rango 0..2; cond_t OK_Comer[5]; mutex_t Mpalem; int j; void Coger_Palillos (int i){ lock(mpalem); while (Palillos[i]!= 2) wait(ok_comer[i],mpalem); Palillos[(i+1) % 5] = Palillos[(i+1) % 5] - 1; Palillos[(i-1) % 5] = Palillos[(i-1) % 5] 1 unlock(mpalem); void Soltar_Palillos (int i) { lock(mpalem); Palillos[(I+1) % 5] = Palillos[(I+1) % 5] + 1; Palillos[(I-1) % 5] = Palillos[(I-1) % 5] + 1; signal(ok_comer[(i+1) % 5]); signal(ok_comer[(i-1) % 5]); unlock(mpalem); // MPalillos. void Filosofo (int i) { Pensar; Comer; Coger_Palillos(i); Soltar_Palillos(i); 10
11 main() { Filosofo(0); Filosofo(1); Filosofo(2); Filosofo(3); Filosofo(4); Demostración de la no existencia de interbloqueo: Si hubiera interbloqueo, nadie estaría comiendo SUMA (Palillos[]) = 10 todos están en espera SUMA (Palillos[]) <= 5 lo cual, evidentemente, es una contradicción. Puede existir aplazamiento indefinido al no haber una política que controle la actuación de los filósofos, por lo cual dos de ellos inmediatamente no consecutivos pueden cooperar para impedir la entrada a comer del filósofo intermedio. ME1. Basta sustituir wait por receive(mutex,msg) y signal por send(mutex, null) Lector receive(mutex, msg); nlect = nlect + 1; if (nlect == 1) receive(escr, msg); send(mutex, null); LEER receive(mutex, msg); nlect = nlect - 1; if (nlect == 0) send(escr, null); send(mutex, null); Otro proceso; Escritor: receive(escr, msg); ESCRIBIR; send(escr, null); Otro_proceso inicialización nlect = 0; send(mutex, null); send(escr, null); lectores; escritores; ME2. a) Mira alternativamente en cada buzón cada cierto tiempo boolean mirar(buzon, &msg) { receive(buzon, m); if (m!=null) {msg=m;return TRUE else {send(buzon, null); return FALSE; while (mirar(m1,msg)) procesar(msg); while (mirar(m2,msg)) procesar(msg); sleep(rato); b) Emplea un proceso separado para atender a cada buzón y se comunica con ellos a través de un buzón común P1: receive(m1,msg);send(miym2, msg); P2: receive(m2,msg);send(miym2, msg); receive(m1ym2, msg); procesar(msg); 11
12 Nota: el mensaje null enviado en el apartado a) debe tener la menor prioridad posible, para garantizar que siempre es el último del buzón. 12
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 detallesConcurrencia: 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 detallesConcurrencia 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 detallesConcurrencia. 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 detallesCDI 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 detallesEl 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 detallesEjemplos de conversión de reales a enteros
Ejemplos de conversión de reales a enteros Con el siguiente programa se pueden apreciar las diferencias entre las cuatro funciones para convertir de reales a enteros: program convertir_real_a_entero print
Más detallesPROGRAMACIÓ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 detallesConcurrencia: 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 detallesTema 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 detallesSISTEMAS OPERATIVOS AVANZADOS
SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3
Más detallesExamen escrito de Programación 1
Examen escrito de Programación 1 Escuela de Ingeniería y Arquitectura Departamento de Informática e Ingeniería de Sistemas 2 de septiembre de 2015 Se debe disponer sobre la mesa en lugar visible un documento
Más detallesObjetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la
Más detallesSOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
Más detalles7. Manejo de Archivos en C.
7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de
Más detallesSistemas Operativos Práctica 4
Sistemas Operativos Práctica 4 Ing. Andrés Bustamante afbustamanteg@unal.edu.co Ingeniería de Sistemas Facultad de Ingeniería Universidad de la Amazonia 2009 1. Objetivo El objetivo de la práctica es que
Más detallesRESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA
UNED Centro Asociado de Cádiz RESUMEN DE CONCEPTOS BASICOS DE PROGRAMACION JAVA 1. OBJETOS Cualquier elemento del programa es un objeto. Un programa es un conjunto de objetos que se comunican entre sí
Más detallesTEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;
TEMA 5. CONTROL DE FLUJO DEL PROGRAMA 5.1 Sentencias Una sentencia es una expresión seguida de un punto y coma. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ; El ; es obligatorio
Más detallesPROGRAMACION 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 detallesMemoria compartida y semáforos r/w. La página del manual que podría servir para describir estas funciones es la siguiente:
(3 ptos) Memoria Compartida y Semáforos R/W 1. Objetivo En esta práctica se pretende crear una librería que dé la funcionalidad de un semáforo para resolver problemas con múltiples lectores y escritores
Más detallesTema 5 Sentencias de control de flujo. Fundamentos de Informática
Tema 5 Fundamentos de Informática Sentencias de Control Tipos de sentencias de control: Comprobación lógica para bifurcar el flujo de un programa. Sentencias de control condicional o alternativo Comprobación
Más detallesIntroducción a la programación orientada a objetos
Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases 3. El tipo Struct 4. Diferencias entre Class y Struct 5. Pilares de la Programación
Más detallesImplementació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 detallesProblemas de Redes de Computadores. Conjunto de problemas 1
Problemas de Redes de Computadores. Ingeniería Técnica en Informática de Gestión Conjunto de problemas 1 Pregunta 1.1: Si configuro mi servidor Web para que no acepte conexiones desde la dirección IP 130.206.1.1,
Más detallesSIMM: 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 detallesMensajes. (versión preliminar)
Mensajes (versión preliminar) Ejemplo: productor/consumidor con buffer de tamaño 0 void produce(item *p_it); void consume(item *p_it); int nmain() { ntask cons= nemittask(consproc); ntask prod= nemittask(prodproc,
Más detallesEn cualquier caso, tampoco es demasiado importante el significado de la "B", si es que lo tiene, lo interesante realmente es el algoritmo.
Arboles-B Características Los árboles-b son árboles de búsqueda. La "B" probablemente se debe a que el algoritmo fue desarrollado por "Rudolf Bayer" y "Eduard M. McCreight", que trabajan para la empresa
Más detallesTema 4. Gestión de entrada/salida
Tema 4. Gestión de entrada/salida 1. Principios de la gestión de E/S. 1.Problemática de los dispositivos de E/S. 2.Objetivos generales del software de E/S. 3.Principios hardware de E/S. 1. E/S controlada
Más detallesRepública Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda. Lenguaje C++ Contadores y Acumuladores
República Bolivariana de Venezuela Aldea Universitaria Liceo Fray Pedro de Agreda Prof. Elías Cisneros. Lenguaje C++ Contadores y Acumuladores Usted es libre de: * Copiar, distribuir y comunicar públicamente
Más detallesExamen de Fundamentos de sistemas distribuidos
Examen de Fundamentos de sistemas distribuidos Tiempo total: 2 horas Problema: Programa: Rendezvous con semáforos(5 puntos) Utilizando como único mecanismo de sincronización los semáforos descritos en
Más detalles1. Ejemplo de clase : La clase Cuenta 2. Uso de la clase Cuenta. 3. Métodos y objetos receptores de mensajes (Importante)
1. : La clase Cuenta. Uso de la clase Cuenta 3. Métodos y objetos receptores de mensajes (Importante) 1 Una clase para cuentas de un banco Vamos a modelar con una clase, un nuevo tipo de datos, donde los
Más detallesMONITORES 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 detallesPROGRAMACIÓN EN JAVA
SISTEMAS INFORMÁTICOS INDUSTRIALES curso 2007-2008 PROGRAMACIÓN EN JAVA PRÁCTICA 3: Comunicación entre tareas. Modelo productor / consumidor. Objetivos Implementar una aplicación en Java en la que existan
Más detallesIngenierí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 detallesPráctica 2: Simón dice
Práctica 2: Simón dice Fecha de entrega: 31 de enero de 2016 0.- Descripción del juego (Wikipedia.org) Simon dice es un juego electrónico, creado por Ralph Baer, que consiste en reproducir una secuencia
Más detallesContenidos. Archivos en C++ Archivos en C++ Introducción
Contenidos 1. Introducción. 2. Manipulación de ficheros. 3. Organización de archivos. 4. Tipo de almacenamiento. 5. Biblioteca de flujos. 6. Operaciones asociadas a archivos: Abrir fichero, Cerrar fichero,
Más detallesProblema 1 (3 puntos)
Examen parcial de Sistemas Operativos, 30 de Abril de 2004. Segundo curso de Ingenierías Técnicas de Informática de Sistemas y de Gestión, URJC. Contesta cada pregunta en una hoja separada. No olvides
Más detallesEjercicio 1 (2 puntos. Tiempo: 25 minutos)
Fecha de publicación de notas: jueves 18 de Julio. Fecha de revisión: viernes 19 de Julio a las 10:00h. Despacho C-209. Ejercicio 1 (2 puntos. Tiempo: 25 minutos) Se desea desarrollar un programa en C
Más detallesEstructuras de repetición hacer-mientras y repita hasta
Estructuras de repetición hacer-mientras y repita hasta Programación 1 Cátedra de Programación Departamento de Computación Escuela de Ingeniería de Sistemas Hacer mientras Diagrama de flujo Acciones S1
Más detallesArreglos. // Incluir E/S y Librerías Standard #include <stdlib.h> #include <stdio.h>
Arreglos Introducción. En los temas anteriores se han estudiado los diferentes tipos de datos simples de C++, usados para representar valores simples como enteros, reales o caracteres. Sin embargo, en
Más detallesPAGOS DOMICILIADOS - GESTIÓN DE PAGOS PAGOS DOMICILIADOS Y GESTIÓN DE PAGOS
PAGOS DOMICILIADOS Y GESTIÓN DE PAGOS 1 INDICE GESTIÓN DE PAGOS DOMICILIADOS 3 Incorporar beneficiarios manualmente 4 Anulación de pagos domiciliados o gestión de pagos 7 Importar beneficiarios de un fichero
Más detallesun 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 detallesDEFINICION. Ing. M.Sc. Fulbia Torres Asignatura: Estructuras de Datos Barquisimeto 2006
ARBOLES ESTRUCTURAS DE DATOS 2006 DEFINICION Un árbol (tree) es un conjunto finito de nodos. Es una estructura jerárquica aplicable sobre una colección de elementos u objetos llamados nodos; uno de los
Más detallesPROGRAMACION 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 detallesSistema de Liquidación Directa Manual del Servicio de Comunicación de Datos Bancarios
Sistema de Liquidación Directa Manual del Servicio de Comunicación Subdirección General de Afiliación, Cotización y Gestión del Sistema RED Julio de 2015 INDICE 1 Servicio de Comunicación... 4 1.1 Introducción...
Más detallesPontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación
Pontificia Universidad Católica de Chile Escuela de Ingeniería Departamento de Ciencia de la Computación Competencias IIC1103 Introducción a la Programación (I/2010) Interrogación 1 13 de Abril de 2010
Más detallesModulo 1 El lenguaje Java
Modulo 1 El lenguaje Java 13 - Codificación en Java Una de las grandes diferencias entre Java y Pascal en cuando a la codificación es que Java se trata de un lenguaje de los llamados case sensitive Esto
Más detallesEJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO)
EJERCICIOS DE PROGRAMACIÓN RELACIÓN VII (EJERCICIOS DE REPASO) Luis José Sánchez 1. Realiza un programa que sume los 100 números siguientes a un número entero y positivo introducido por teclado. Se debe
Más detallesGESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD
GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...
Más detallesCierre y Apertura de ejercicio. Gestión - Contabilidad
Cierre y Apertura de ejercicio. Gestión - Contabilidad Cliente : Cooperativa Madrileña de Ferreteros, soc. coop. Referencia : I-3-PC-02 / 000041 Asunto : Cierre y apertura de ejercicio. Gestión Contabilidad
Más detallesIngeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009
Ingeniería Informática. Curso 3º. Sistemas Operativos Examen Final. TEORIA. 4 de Septiembre de 2009 1. [PROCESOS] a) Considerar el siguiente código: void main() { int j=10; pid_t pid; for (int i=0; i
Más detallesInformática I. While & do While
Asignatura: Informática I Trabajo práctico Nº5 While & do While Estructura repetitiva MIENTRAS o while En C la sentencia while (condición o expresión) instrucciones; es seguramente la más utilizada. La
Más detallesMANUAL DE AYUDA PARA LA IMPORTACIÓN DE DATOS AL LIBRO REGISTRO DE OPERACIONES ECONÓMICAS
Se ha incorporado al programa de ayuda del Libro Registro de Operaciones Económicas publicado por la Diputación Foral de Bizkaia un módulo que permite realizar la importación de los registros de dicho
Más detallesPráctica 8: Barreras
Arquitectura y Tecnología de Computadores 14 de febrero de 2014 Objetivos Aprender a utilizar las variables condición y las barreras de la biblioteca Pthreads. Diseñar e implementar una barrera: Barrera
Más detallesHilos, comunicación y competencia entre procesos. Dr. Alonso Ramírez Manzanares 2-Sep-2010
Hilos, comunicación y competencia entre procesos Dr. Alonso Ramírez Manzanares 2-Sep-2010 Implementación de procesos Se mantiene una tabla de procesos con una entrada por cada proceso: Con lo cual tenemos
Más detallesIntroducción a la Firma Electrónica en MIDAS
Introducción a la Firma Electrónica en MIDAS Firma Digital Introducción. El Módulo para la Integración de Documentos y Acceso a los Sistemas(MIDAS) emplea la firma digital como método de aseguramiento
Más detallesManual de Usuario. XCPDriver
Manual de Usuario XCPDriver Manual del software de control XCPDriver 1. INTRODUCCIÓN... 2 2. AÑADIR TERMINALES... 2 3. PROCESOS... 3 4. TRANSFIRIENDO FICHAJES... 4 5. PROGRAMANDO TARJETAS... 4 6. MUESTREO
Más detallesExamen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1
Examen Junio- Grupo A Lunes 17 de Junio - Programación en C++ Pág. 1 ÍNDICE ÍNDICE... 1 1.1 Ejercicio 1: Máquina Expendedora (3.5 ptos.)... 1 1.2 Ejercicio 2: Clase Circulo (1.0 pto.)... 3 1.3 Ejercicio
Más detallesTema 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 detallesUNIDADES FUNCIONALES DEL ORDENADOR TEMA 3
UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:
Más detallesCOPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA
COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador
Más detallesPráctica 2: El problema de la sección crítica
Práctica 2: El problema de la sección crítica Programación de Sistemas Concurrentes y Distribuidos Grado de Ingeniería Informática Dpto. de Informática e Ingeniería de Sistemas, Escuela de Ingeniería y
Más detallesReceta 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 detallesTRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8.
TRADUCTORES, COMPILADORES E INTÉRPRETES. EJERCICIOS TEMA 5, 6, 7 y 8. 1.) (HOLUB). Escribir un traductor que reconozca definiciones de C siguiendo el estilo antiguo, tal como: prueba(uno, dos, tres, cuatro,
Más detallesProgramación. Ejercicios Tema 4 Estructuras de Control Repetitivas
Ejercicios Tema 4 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero Jose A. Iglesias Martínez Jose Luis Mira SOLUCIONES 1. Escriba un programa en C que
Más detallesUna vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.
11. RECIBOS. Desde esta opción de Menú vamos a completar el proceso de gestión de los diferentes tributos, generando recibos, informes de situación, impresiones, etc. 11.1. GENERACIÓN DE RECIBOS. Una vez
Más detallesNemoTPV SAT Manual de usuario 1. NemoTPV SAT APLICACIÓN DE GESTIÓN DE SERVICIO TÉCNICO PARA PUNTOS DE VENTA DE EUSKALTEL
NemoTPV SAT Manual de usuario 1 NemoTPV SAT APLICACIÓN DE GESTIÓN DE SERVICIO TÉCNICO PARA PUNTOS DE VENTA DE EUSKALTEL NemoTPV SAT Manual de usuario 2 Ante un problema, lo importante no es saber solucionarlo,
Más detallesGENERACIÓN DE TRANSFERENCIAS
GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base
Más detallesServicio de Alta, Baja, Modificación y Consulta de usuarios Medusa
Documentos de Proyecto Medusa Documentos de: Serie: Manuales Servicio de Alta, Baja, Modificación y Consulta del documento: Fecha 22 de febrero de 2007 Preparado por: José Ramón González Luis Aprobado
Más detallesBibliotecas Escolares. Perfil de Lector.
Bibliotecas Escolares. Perfil de Lector. 2012 Como usuario Lector de AbiesWeb, podrás acceder al catálogo de fondos, solicitar reservas, ver tus préstamos activos, ver el historial de tus lecturas, escribir
Más detalles4 Pruebas y análisis del software
4 Pruebas y análisis del software En este capítulo se presentan una serie de simulaciones donde se analiza el desempeño de ambos sistemas programados en cuanto a exactitud con otros softwares que se encuentran
Más detallesManual del Usuario. Sistema de Help Desk
Manual del Usuario Sistema de Help Desk Objetivo del Manual El siguiente manual tiene como objetivo proveer la información necesaria para la correcta utilización del sistema Help Desk. Describe los procedimientos
Más detallesExamen de Fundamentos de sistemas operativos
Examen de Fundamentos de sistemas operativos Tiempo total: 2 horas. Problema: Implementación de canales con Rendez (monitores) Implemente canales con buffering para enteros mediante variables condición
Más detallesÁrboles. Cursos Propedéuticos 2015. Dr. René Cumplido M. en C. Luis Rodríguez Flores
Árboles Cursos Propedéuticos 2015 Dr. René Cumplido M. en C. Luis Rodríguez Flores Contenido de la sección Introducción Árbol genérico Definición y representación Árboles binarios Definición, implementación,
Más detallesINSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO
INSTITUTO POLITECNICO NACIONAL. ESCUELA SUPEIRIOR DE INGENIERIA MECANICA Y ELECTRICA. UNIDAD CULHUACAN. INTEGRANTES: FLORES ACOLTZI ONESIMO MARCEL SANTOS ARIEL MARTINEZ AGUILAR GILBERTO. MATERIA: ESTRUCTURA
Más detallesADEUDOS DOMICILIADOS SEPA ERP Microsa
ADEUDOS DOMICILIADOS SEPA Fecha revisión: 02/12/2013 1. Introducción normas SEPA A partir del 1 de febrero de 2014 serán obligatorios los pagos SEPA conforme al Reglamento UE nº 260/2012 de 14 de marzo
Más detallesBenemérita Universidad Autónoma del Estado de Puebla
Benemérita Universidad Autónoma del Estado de Puebla Facultad de Cs. De la Computación Programación Concurrente y Paralela Práctica de Laboratorio No. 5 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detallesManual del Usuario Inscripción de Proyectos al Fondo de Fomento Formulario On-line
Manual del Usuario Inscripción de Proyectos al Fondo de Fomento Formulario On-line Índice Pantallas de inscripción...2 Pantalla de ingreso - Login (index.htm):...2 Mensajes de Error...2 Pantalla de inscripción
Más detallesOPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B)
APRENDERAPROGRAMAR.COM OPERADORES LÓGICOS Y DE COMPARACIÓN EN PHP. PRIORIDADES. EJEMPLOS. EJERCICIOS RESUELTOS. (CU00818B) Sección: Cursos Categoría: Tutorial básico del programador web: PHP desde cero
Más detallesTema 2. El lenguaje de programación Java (Parte 1)
Programación en Java Tema 2. El lenguaje de programación Java (Parte 1) Luis Rodríguez Baena Facultad de Informática Elementos del lenguaje (I) El juego de caracteres. No utiliza ASCII, sino Unicode de
Más detallesManual del módulo TRAZABILIDAD EUROWIN 8.0 SQL BALANCES CONTABLES
Manual del módulo TRAZABILIDAD EUROWIN 8.0 SQL BALANCES CONTABLES 1 Documento: docew_balancescontables Edición: 03 Nombre: Balances contables de Eurowin 8.0 SQL Fecha: 29-01-2010 Tabla de contenidos 1.
Más detallesPreliminares. Tipos de variables y Expresiones
Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un
Más detallesActivación de un Escritorio Remoto
Activación de un Escritorio Remoto La activación de un Escritorio Remoto se realiza en dos fases, en la primera se habilita a un Usuario de un ordenador para que pueda admitir una conexión remota, la segunda
Más detallesSistemas 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Índice ÍNDICE...1 1. EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.)...1 2. EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4
Pág.1 Índice ÍNDICE...1 1. EJERCICIO 1: CÁLCULO FINANCIERO (5 PTOS.)...1 2. EJERCICIO 2: AGENCIA DE COLOCACIONES (5 PTOS.)...4 1. Ejercicio 1: Cálculo Financiero (5 ptos.) Desde un banco se le ha encargado
Más detallesINTRODUCCIÓN AL TIPO COMPUESTO CADENA CONTENIDOS
CONTENIDOS 1. Introducción a las cadenas 2. Definición 3. Declaración de cadenas 4. Inicialización de cadenas 5. Escritura y Lectura de datos tipo cadena 6. Funciones de manipulación de cadenas 7. Arrays
Más detallesTema 2: La clase string
: string Programación 2 Curso 2013-2014 Índice 1 Cadenas de caracteres en C 2 Entrada / salida 3 entre vectores de caracteres y string 4 5 Cadenas de caracteres en C En C, las cadenas de caracteres tienen
Más detallesESTRUCTURA DE DATOS: ARREGLOS
ESTRUCTURA DE DATOS: ARREGLOS 1. Introduccion 2. Arreglos - Concepto - Caracteristicas 3. Arreglos Unidimensionales 4. Arreglos Bidimensionales 5. Ventajas del uso de arreglos 6. Ejemplo 1. Introducción
Más detallesSistemas 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 detallesLaboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO
Laboratorio 7 Motor de búsqueda web basado en el TAD Árbol Binario de Búsqueda GUIÓN DEL LABORATORIO 1.- Objetivos del laboratorio Diseño de clases en C++ Comprensión y uso del TAD Árbol Binario de Búsqueda
Más detallesAcceso a la aplicación de solicitud de subvenciones (Planes de Formación 2014)
Acceso a la aplicación de solicitud de subvenciones (Planes de Formación 2014) Pantalla general de acceso Desde ella se accede a las diferentes convocatorias para poder completar y enviar las solicitudes.
Más detalles4º ESO 1. ECUAC. 2º GRADO Y UNA INCÓGNITA
4º ESO 1. ECUAC. 2º GRADO Y UNA INCÓGNITA Una ecuación con una incógnita es de segundo grado si el exponente de la incógnita es dos. Ecuaciones de segundo grado con una incógnita son: Esta última ecuación
Más detallesSe guardan en archivos con extencion c y los cabezales con extension h
Se guardan en archivos con extencion c y los cabezales con extension h Tipos de Variables: Tipo Tamaño(bytes) Limite inferior Limite superior char 1 -- -- unsigned char 1 0 255 short int 2-32768 +32767
Más detallesVersión 2.01. Página 2 de 29
Versión 2.01 Página 2 de 29 Índice Instalación del dispositivo... 4 Protección de CashDro... 4 Configuración de CashDro... 5 Monedas / billetes... 6 Billetes... 6 Monedas... 6 Alertas... 7 Más Opciones...
Más detallesEjemplo de tipo fijo CALCULADOR CONTABLE
CALCULADOR CONTABLE Ejemplo de tipo fijo Supongamos un préstamo de 100.000 concedido el 05/10/2008 a devolver en 120 mensualidades iguales, siendo la primera el 5/11/2009. El préstamo se concedió a un
Más detallesSegunda práctica de Programación 2
Segunda práctica de Programación 2 La segunda práctica consistirá en el diseño y posterior implementación como proyecto de Netbeans de dos versiones sobre el mismo problema. El tema central de ambas versiones
Más detallesEstructura de datos y de la información Boletín de problemas - Tema 7
Estructura de datos y de la información Boletín de problemas - Tema 7 1. Un concesionario de coches tiene un número limitado de M modelos, todos en un número limitado de C colores distintos. Cuando un
Más detallesProf. Dr. Paul Bustamante
Carné: Nombre: Informática II Fundamentos de Programación Prof. Dr. Paul Bustamante INDICE 1. INTRODUCCIÓN... 1 Pag.1 1.1 EJERCICIO1: CÁLCULO DEL IMC (3.0 PTS.)... 1 1.2 EJERCICIO2: OPERADOR VIRTUAL DE
Más detallesContenidos. Funciones (suplemento) Funciones. Justificación del uso de Funciones
Contenidos 1. Justificación del uso de funciones. 2. Declaración de funciones: prototipos. 3. Prototipos y ficheros de cabecera. 4. Polimorfismo (sobrecarga de funciones). 5. Argumentos formales y actuales.
Más detalles15 CORREO WEB CORREO WEB
CORREO WEB Anteriormente Hemos visto cómo funciona el correo electrónico, y cómo necesitábamos tener un programa cliente (Outlook Express) para gestionar los mensajes de correo electrónico. Sin embargo,
Más detalles