PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES.
|
|
- Natalia Castilla Salinas
- hace 6 años
- Vistas:
Transcripción
1 PROBLEMAS CLÁSICOS. EL PROBLEMA DE LOS FILÓSOFOS COMENSALES. Cinco filósofos pasan su vida pensando y comiendo. Los filósofos comparten una mesa circular rodeada por cinco sillas, una para cada uno de ellos. En el centro de la mesa se encuentra una fuente de arroz, y también sobre la mesa hay cinco palillos chinos. Cuando un filósofo piensa, no interactúa con sus colegas. Ocasionalmente, un filósofo tiene hambre y trata de coger los dos palillos que están más cerca de él (los palillos colocados entre él y sus vecinos de la derecha y de la izquierda). Un filósofo sólo puede coger un palillo a la vez y, obviamente, no puede ser el que está en la mano de un vecino. Cuando un filósofo hambriento tiene sus dos palillos al mismo tiempo come sin soltarlos. Cuando termina de comer, coloca ambos palillos sobre la mesa y comienza a pensar otra vez. La situación de los Filósofos comensales. El problema de los filósofos comensales se considera un problema de sincronización clásico, pero no por su importancia práctica sino porque es un ejemplo de una gran clase de problemas de control de concurrencia. Una solución sencilla consiste en representar cada palillo con un semáforo. Un filósofo trata de coger el palillo ejecutando una operación wait en ese semáforo; suelta sus palillos ejecutando signal en los semáforos correspondientes. Así, los datos compartidos son: palillo:array [0..4] of semáforo; donde todos los elementos de palillo reciben un valor inicial de 1. A continuación se presenta un programa que simula esta situación. program Filo01; (* Filosofos comensales - semáforos versión 1 *) const N = 5; palillo : array [1..N] of semaphore; (* binario *) I : integer; process type filosofos(numero : integer); writeln('pensando el ',numero); sleep(random(5)); (* PENSANDO *) wait(palillo[numero]); wait(palillo[(numero mod N) + 1]); writeln('comiendo el ',numero); sleep(random(5)); (* COMIENDO *) signal(palillo[numero]); signal(palillo[(numero mod N) + 1]); end; (* filosofos *) procfil: array[1..n] of filosofos; for I := 1 to N do initial(palillo[i],1); co for I := 1 to N do procfil[i](i); coend end. 1
2 - Pascal-FC for IBM PC compatibles - - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling filo01... Compilation complete - Interpreter Version P5.3 - Program filo01... execution s... Pensando el 1Pensando el 4 Comiendo el 5 Pensando el 3 Comiendo el 1 Comiendo el 5 Pensando el 3 Comiendo el 5 Aunque esta solución garantiza que dos vecinos no pueden comer simultáneamente, hay que rechazarla porque existe la posibilidad de crear un bloqueo mutuo. Suponga que los cinco filósofos tienen hambre al mismo tiempo y cada uno coge el palillo que está a su izquierda; todos los elementos del arreglo palillo serán iguales a cero. Cuando cada filósofo trata de coger el palillo a su derecha, su ejecución se aplazará eternamente. A continuación se presentan ias posibles soluciones, con diferentes algoritmos y con diferentes elementos del lenguaje para la sincronización de procesos. Se aclara que cualquier solución satisfactoria para este problema debe eliminar la posibilidad de que uno de ellos muera de hambre. Una solución libre de bloqueos mutuos no la elimina necesariamente. Permitir que cuatro filósofos como máximo, se sienten a comer al mismo tiempo. 2
3 program Filo02; (* Filósofos comensales - semáforos versión 2 *) const N = 5; palillo : array [1..N] of semaphore; (* binario *) sillaslibre : semaphore; (* general *) I : integer; process type filosofos(numero : integer); writeln('pensando el ',numero:2); sleep(random(5)); (* PENSANDO *) wait(sillaslibre); wait(palillo[numero]); wait(palillo[(numero mod N) + 1]); writeln('comiendo el ',numero:2); sleep(random(5)); (* COMIENDO *) signal(palillo[numero]); signal(palillo[(numero mod N) + 1]); signal(sillaslibre) end; (* filosofos *) procfil: array[1..n] of filosofos; for I := 1 to N do initial(palillo[i],1); initial(sillaslibre,n - 1); co for I := 1 to N do procfil[i](i); coend end. - Pascal-FC for IBM PC compatibles - - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling filo02... Compilation complete - Interpreter Version P5.3 - Program filo02... execution s... 3 Pensando el Pensando el 1 5 Comiendo el 5
4 Comiendo el 5 Pensando el 3 Pensando el Comiendo el 5 1 Pensando el 5 Comiendo el 5 Permitir que un filósofo coja sus palillos sólo si los dos están disponibles (observe que esto debe hacerse en una sección crítica). program Filo03; (* Filósofos comensales: *) version monitor j, num: integer; monitor palillomon; export getpalillo, putpalillo; palillo: array [0..4] of integer; okparacomer: array [0..4] of condition; i: integer; 4 procedure getpalillo(i: integer); if palillo[i] <> 2 then
5 writeln('filosofo ',i:2,' esta esperando'); delay(okparacomer[i]) end; palillo[(i+1) mod 5] := palillo[(i+1) mod 5] - 1; palillo[(i+4) mod 5] := palillo[(i+4) mod 5] - 1; writeln('filosofo ',i:2,' come') end; (* getpalillo *) procedure putpalillo(i: integer); writeln('filosofo ',i:2,' termina'); palillo[(i+1) mod 5] := palillo[(i+1) mod 5] + 1; palillo[(i+4) mod 5] := palillo[(i+4) mod 5] + 1; if palillo[(i+1) mod 5] = 2 then resume(okparacomer[(i+1) mod 5]); if palillo[(i+4) mod 5] =2 then resume(okparacomer[(i+4) mod 5]) end; (* putpalillo *) (* cuerpo del monitor *) for i := 0 to 4 do palillo[i] := 2 end; (* palillomon *) procedure piensa; null end; (* piensa *) procedure come(n: integer); palillomon.getpalillo(n); sleep(1); palillomon.putpalillo(n) end; (* come *) process type tipofil(n: integer); piensa; come(n) end; (* filosofo *) filosofo: array[0..4] of tipofil; (* principal *) co for num := 0 to 4 do filosofo[num](num) coend end. - Pascal-FC for IBM PC compatibles - - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling filo03... Compilation complete 5 - Interpreter Version P5.3 - Program filo03... execution s...
6 6 Filosofo 4 esta esperando Filosofo 1 esta esperando Filosofo 3 esta esperando Filosofo 2 esta esperando Filosofo 0 esta esperando Filosofo 1 esta esperando Filosofo 3 esta esperando Filosofo 0 esta esperando Filosofo 2 esta esperando Filosofo 4 esta esperando Filosofo 1 esta esperando Filosofo 0 esta esperando Filosofo 3 esta esperando Filosofo 1 esta esperando Filosofo 4 esta esperando Filosofo 2 esta esperando Filosofo 0 esta esperando Filosofo 3 esta esperando Filosofo 1 esta esperando Filosofo 4 esta esperando Filosofo 2 esta esperando
7 Solución similar a la anterior pero usando recursos. program Filo04; (* Filosofos comensales: version recursos *) j, num: integer; resource palcontrol; export getpalillo, putpalillo; palillo: array [0..4] of integer; i: integer; barrera1: boolean; guarded procedure esperando1(i: integer) when not barrera1; forward; guarded procedure esperando2(i: integer) when barrera1; forward; guarded procedure getpalillo(i: integer) when true; if palillo[i] <> 2 then if barrera1 then requeue esperando1(i) else requeue esperando2(i); palillo[(i+1) mod 5] := palillo[(i+1) mod 5] - 1; palillo[(i+4) mod 5] := palillo[(i+4) mod 5] - 1; writeln('filosofo ',i:2,' come') end; (* getpalillo *) procedure putpalillo(i: integer); writeln('filosofo ',i:2,' termina'); palillo[(i+1) mod 5] := palillo[(i+1) mod 5] + 1; palillo[(i+4) mod 5] := palillo[(i+4) mod 5] + 1; barrera1 := not barrera1 end; (* putpalillo *) guarded procedure esperando1; requeue getpalillo(i) end; guarded procedure esperando2; requeue getpalillo(i) end; (* cuerpo del recurso *) barrera1 := true; for i := 0 to 4 do palillo[i] := 2 end; (* palcontrol *) 7 procedure piensa; null end; (* piensa *)
8 procedure come(n: integer); palcontrol.getpalillo(n); sleep(1); palcontrol.putpalillo(n) end; (* come *) process type tipofil(n: integer); piensa; come(n) end; (* filosofo *) filosofo: array[0..4] of tipofil; (* principal *) co for num := 0 to 4 do filosofo[num](num) coend end. - Pascal-FC for IBM PC compatibles - - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling filo04... Compilation complete - Interpreter Version P5.3 - Program filo04... execution s... 8
9 program Filo05; (* Filósofos comensales usando CANALES *) const nfil = 5; maxfil = 4; type canalsyn = array[0..maxfil] of channel of synchronous; ind: integer; getpalillo,putpalillo: canalsyn; 9 procedure piensa;
10 null end; procedure come; null end; process type tipofil(n: integer); piensa; getpalillo[n]! any; come; putpalillo[n]! any; end; (* filosofo *) process palcontrol; palillo: array[0..maxfil] of integer; i: integer; for i := 0 to maxfil do palillo[i] := 2; select for i := 0 to maxfil replicate when palillo[i] = 2 => getpalillo[i]? any; palillo[(i+1) mod nfil]:=palillo[(i+1) mod nfil]-1; palillo[(i+4) mod nfil]:=palillo[(i+4) mod nfil]-1; writeln('filosofo ',i:1,' come'); or for i := 0 to maxfil replicate putpalillo[i]? any; palillo[(i+1) mod nfil]:=palillo[(i+1) mod nfil]+1 ; palillo[(i+4) mod nfil]:=palillo[(i+4) mod nfil]+1 ; writeln('filosofo ',i:1,' piensa'); or terminate end end; (* palcontrol *) filosofo:array[0..4] of tipofil; co for ind := 0 to maxfil do filosofo[ind](ind); palcontrol coend end. - Pascal-FC for IBM PC compatibles - - Compiler Version P5.2 G L Davies & A Burns, University of Bradford Compiling filo05... Compilation complete - Interpreter Version P5.3 - Program filo05... execution s... 10
11 11 Filosofo 3 piensa Filosofo 1 piensa Filosofo 0 piensa Filosofo 0 piensa Filosofo 1 piensa Filosofo 3 piensa Filosofo 0 piensa Filosofo 0 piensa
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 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 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 detallesPROGRAMACION 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 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 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 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 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 detalles1. 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 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 detallesTEMA 5. PROGRAMACIÓN CONCURRENTE.
TEMA 5. PROGRAMACIÓN CONCURRENTE. 5.1. Ejecución concurrente. 5.2. Representación de procesos. 5.3. Tareas en Ada. 5.4. Ejemplo. 5.5. Comunicación y sincronización con variables comunes. 5.6. Comunicació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 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 detallesARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Características ARBOLES - CONCEPTOS Cada elemento del árbol se relaciona con cero o más elementos a quienes llama hijos. Si el árbol no
Más detallesSolució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 detallesPaso 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 detallesARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES
ARBOLES ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES Introducción al tema a. Formar grupos de 4 personas b. Tomar una hoja en blanco y una lapicera o lápiz c. En la hoja en blanco diseña un
Más detallesUnidad 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 detallesInterbloqueos. Tema 5. Sistemas Operativos I. Tema 5: Interbloqueos. Equipo de Sistemas Operativos DISCA / DSIC UPV
Sistemas Operativos I Tema 5 Interbloqueos Equipo de Sistemas Operativos DISCA / DSIC UPV Tema 5: Interbloqueos Contenido 1.- Concepto de interbloqueo..- Caracterización formal. Modelo de sistema. Representación
Más detallesSOLUCIONES 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 detallesSistemas Electrónicos Digitales Curso de adaptación al Grado
Práctica Práctica 2 Sistemas Electrónicos Digitales Curso de adaptación al Grado Sistemas combinacionales con VHDL Universidad de Alicante Ángel Grediaga 2 Índice INTRODUCCIÓN... 3 2 CIRCUITOS COMBINACIONALES...
Más detallesPASCAL. Repaso de Pascal Introducción a Python. Pascal. Pascal - introducción. Pascal Declaraciones: Variables. Pascal Declaraciones: Tipos 07/04/2015
Repaso de Pascal Introducción a Python Lenguajes de Programación 2015 PASCAL Pascal - introducción Pascal es un Lenguaje basado en el paradigma imperativo clasico Estructura la programación mediante Funciones
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. 4 Profr: María del Carmen Cerón Garnica Alumno: Roberto
Más detalles324 MR Versión 1 Prueba Integral 1/3 Semana 10 Lapso 2015-2
324 MR Versión 1 Prueba Integral 1/3 UNIVERSIDAD NACIONAL ABIERTA VICERRECTORADO ACADÉMICO ÁREA INGENIERÍA MODELO DE RESPUESTA ASIGNATURA: Computación II CÓDIGO: 324 MOMENTO: Prueba Integral FECHA DE APLICACIÓN:
Más detallesSistemas Operativos Practica 1: procesos y concurrencia.
Sistemas Operativos Practica 1: procesos y concurrencia. Objetivos: Introducir al alumno a los conceptos de programa, concurrencia, paralelismo y proceso o tarea. Manejo del concepto de concurrencia haciendo
Más detallesTema 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 detallesPRÁCTICA: LENGUAJE VHDL
PRÁCTICA: LENGUAJE Introducción Los lenguajes permiten manejar mejor grandes tamaños Los lenguajes son más flexibles que las tablas Los lenguajes son légibles por las máquinas más fácilmente que los gráficos
Más detalles1 (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 detallesPráctica I Modelado y simulación de una máquina expendedora de refrescos
Práctica I Modelado y simulación de una máquina expendedora de refrescos Departamento de Ingeniería Electrónica de Sistemas Informáticos y Automática 2 1.1. Objetivos. En esta práctica vamos a modelar
Más detallesEste es un arreglo de números enteros, o sea que guarda una serie de variables de tipo INTEGER, todas agrupadas en una sola estructura.
Arreglos en Pascal 1.- Introducción a los Arreglos. Algunos de los tipos de datos que vimos eran los tipos INTEGER, CHAR, BOOLEAN, etc.. Un arreglo, mas que un tipo de dato es una estructura que nos permite
Más detallesAlgoritmos y Programación Clase 8
Algoritmos y Programación Ordenamiento y Búsqueda Anexo: Uso de Procedimientos Sub y Procedimientos Function 1 EXAMEN 1. Lunes 16 de abril 4 pm. 2. Tema: Lo visto hasta la clase de hoy. 2 Contenido Ordenamiento
Más detallesUniversidad de Buenos Aires Facultad De Ingeniería. Operaciones Lógicas. [75.40] Algoritmos y Programación I. 2do Cuatrimestre 2010
Universidad de Buenos Aires Facultad De Ingeniería Operaciones Lógicas [75.40] Algoritmos y Programación I 2do Cuatrimestre 2010 Cátedra: Ing. Pablo Guarna Autor: Bernardo Ortega Moncada Índice 1. Introducción
Más detallesIntroducción a la Programación Ingenieria en Informática Junio 2008
Introducción a la Programación Ingenieria en Informática Junio 2008 Ejercicio 1 [2 puntos] Escribe un programa que reciba el fichero binario.dat, fichero binario de enteros positivos y devuelva un fichero
Más detalles2384-27. ICTP Latin-American Advanced Course on FPGADesign for Scientific Instrumentation. 19 November - 7 December, 2012
2384-27 ICTP Latin-American Advanced Course on FPGADesign for Scientific Instrumentation 19 November - 7 December, 2012 Sequential Logic Described in VHDL - A Design Example ARTECHE DIAZ Raul Center of
Más detallesVHDL. Carlos Andrés Luna Vázquez. Lección 5. Sentencias concurrentes
VHDL Carlos Andrés Luna Vázquez Lección 5 Sentencias concurrentes Índice Introducción Niveles de abstracción del modelado con HDL Estilos descriptivos del modelado con HDL Ventajas y limitaciones de los
Más detallesGUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL
GUIA DE PROCEDIMIENTOS Y FUNCIONES ALMACENADOS EN MYSQL Conceptos, historia y contexto http://dev.mysql.com/doc/refman/5.0/es/stored-procedures.html Los procedimientos almacenados y funciones son nuevas
Más detallesVHDL y el método de diseño basado en descripción y síntesis. RESUMEN.
VHDL y el método de diseño basado en descripción y síntesis. AUTOR : Pablo Mazzara. Grupo de Microelectrónica del IIE. Facultad de Ingeniería. Montevideo. Uruguay. e-mail mazzara@iie.edu.uy RESUMEN. Una
Más detallesSIGACLE: SIMULADOR GRÁFICO ASISTIDO POR COMPUTADOR PARA LA ENSEÑANZA DE PROGRAMACIÓN DE LENGUAJES ESTRUCTURADOS
IV Congresso RIBIE, Brasilia 1998 SIGACLE: SIMULADOR GRÁFICO ASISTIDO POR COMPUTADOR PARA LA ENSEÑANZA DE PROGRAMACIÓN DE LENGUAJES ESTRUCTURADOS George Franco Cendales - María Paula Díaz - Rafael J. Barros
Más detallesUTN FRLP Ing. en Sistemas de Información Algoritmos y Estructura de Datos Trabajos Prácticos Curso 2010
Práctico de Pascal Nº 2 Ejercicios para la ejercitación del Lenguaje Pascal Objetivo: Es que los alumnos conozcan un lenguaje de programación, donde puedan ejercitar los conocimiento adquiridos hasta ahora
Más detallesElectrónica Digital Departamento de Electrónica VHDL. Bioingeniería Facultad de Ingeniería - UNER
Electrónica Digital Departamento de Electrónica VHDL Bioingeniería Facultad de Ingeniería - UNER VHDL VHSIC Hardware Design Language VHSIC Very High Speed Integrated Circuits Verilog Handel C Celóxica
Más detallesCAPÍ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 detalles9. Dibujar el diagrama de tiempos de las siguientes asignaciones de señales.
Sistemas Digitales (66.17) Práctica 2 - VHDL 1. Crear un paquete de utilidades al cual se le vayan agregando todas las funciones, procedimientos y declaración de tipos, constantes, etc., que se creen en
Más detallesI.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 detallesComunicación y Sincronización con Monitores Resumen del Tema
Notas de clase de Programación Concurrente Comunicación y Sincronización con Monitores Resumen del Tema Dpto de Lenguajes y Ciencias de la Computación Universidad de Málaga María del Mar Gallardo Melgarejo
Más detallesExamen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0503.doc) 28 de febrero de 2005
Examen de Introducción a las Redes de Computadoras y Comunicación de Datos (ref: sirc0503.doc) 28 de febrero de 2005 Atención: para todos los ejercicios, suponga que dispone de los tipos de datos básicos
Más detallesAdministración de procesos: Ejercicios de sincronización
Administración de procesos: Ejercicios de sincronización Facultad de Ingeniería, UNAM Instituto de Investigaciones Económicas, UNAM Índice 1 2 3 4 5 6 7 8 En estas láminas presento varios ejercicios de
Más detallesINGENIERÍA DE COMPUTADORES III. Solución al examen de Septiembre 2013
Solución al examen de Septiembre 2013 PREGUNTA 1 (2 puntos) Tomando como base el siguiente código VHDL, dibuje el cronograma de evolución de las señales clk, x, a, b, c e y entre los instantes 0 y 1000
Más detallesCurso de Java Introducción a la Programación III
Curso de Java Introducción a la Programación III Jaime Fernández Martín Curso INEM 02830. Programación en Java Marzo 2010 Índice 1 Operadores relacionales e igualdad 2 Estructuras de control condicional
Más detalles2.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 detallesGUÍA BÁSICA DE SCHEME v.4
Esta guía básica pretende ser una introducción elemental al lenguaje de programación Scheme. Se presenta como una guía de comienzo rápido de tal forma que permita conocer de una forma muy esquemática los
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 detallesEstructuras 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 detallesPráctica 6. Diseño Lógico Digital mediante VHDL
Práctica 6. Diseño Lógico Digital mediante VHDL 6.1. Objetivos Aprender a diseñar circuitos lógicos digitales mediante el uso de lenguajes de descripción de hardware como VHDL. 6.2. Introducción al VHDL
Más detallesTEMA 2: Estructuras de Control: Condicionales
UNIVERSIDAD CENTRAL DE VENEZUELA FACULTAD DE CIENCIAS ESCUELA DE MATEMÁTICA INTRODUCCIÓN A LA COMPUTACIÓN TEMA 2: Estructuras de Control: Condicionales Estructuras Condicionales En un algoritmo se tiene
Más detallesEstatutos 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 detallesFundamentos de la Programación
Fundamentos de la Programación El Software Las operaciones que debe realizar el hardware son especificadas con una lista de instrucciones, llamadas programas o software. Dos grandes grupos de software
Más detallesSeminario de Actualización - Excel Avanzado y Macros. Visual Basic. Conceptos Básicos de Visual Basic para Aplicaciones
Conceptos Básicos de para Aplicaciones 1 Qué es la programación? Es la acción de escribir programas de computación con el fin de resolver un determinado problema. Datos Constantes π = 3.1416 (real) Variables
Más detallesEstructura de datos (arreglos) Vectores y Matrices
Apunte del curso PROGRAMACIÓN (FI-UBA,, J. T. P. Ing. Z. CATALDI; A.T.P. Srta. A Pauluzzi, Sr. C Corradino, Sr. F Gómez Estructura de datos (arreglos) Hasta aquí se han visto distintos tipos de estructuras
Más detallesConcurrencia 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 detallesCómo nombrar variables ( 2&
&'()*+,, *)-.&'*/0+!" #$ # http://www.escet.urjc.es/~aiiq/ Introducción a Visual Studio.NET Aprendiendo el IDE de Visual Basic.NET Elementos del lenguaje. Variables y estructuras de datos Introducción
Más detallesTema 2 Descripción de VHDL (2/2)
TECNOLOGÍA DE COMPUTADORES Tema 2 Descripción de VHDL (2/2) Agustín Álvarez Marquina Tipos de sentencias en VHDL Sentencias concurrentes PROCESS Asignación de señal BLOCK Llamadas a procedimientos Llamadas
Más detallesSENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro
SENA Distrito Capital Centro de Electricidad, Electrónica y Telecomunicaciones ADSI - Ing. Espec. Javier Vaquiro 1. Sintaxis básica 2. Tipos de datos 3. Variables 4. Constantes 5. Expresiones y operadores
Más detallesUNIDAD 3: TIPOS ABSTRACTOS DE DATOS
. 1 UNIDAD 3: TIPOS ABSTRACTOS DE DATOS (APUNTES DE APOYO A CLASES TEÓRICAS TIEMPO DE EXPOSICIÓN: 2 HS) Bibliografía: 2 1. Rubén Maza. Artículo Abstracción de Datos. Revista Compumagazine 1993 2000. 2.
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 detallesPARTE II: Programación en ensamblador
Cuaderno de Prácticas Laboratorio de Fundamentos de Computadores PARTE II: Programación en ensamblador Autor: Rafael Moreno Vozmediano Facultad de Informática La Máquina Rudimentaria: Arquitectura del
Más detalles//Sección de manejo de excepciones. Las rutinas de manejo de errores //aparecen aqui
PL/SQL - Oracle PL/SQL (Procedural Language/SQL) es una extensión de SQL, que agrega ciertas construcciones propias de lenguajes procedimentales, obteniendose como resultado un lenguaje estructural mas
Más detallesEstructuras 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 detallesInducción Matemática. Departamento de Matemáticas. Inducción Matemática p. 1/31
Inducción Matemática Departamento de Matemáticas Inducción Matemática p. 1/31 Inducción Matemática: Historia Inducción Matemática es un método de prueba relativamente reciente: Inducción Matemática p.
Más detallesSolución - Examen Marzo de 2003
Solución - Examen Marzo de 2003 Problema 1 Se debe responder a las cuestiones aquí planteadas de manera concisa (no más de 15 renglones por pregunta. En todos los casos debe justificar su respuesta. Pregunta1
Más detallesTUTORIAL CREACIÓN DE UN INFORME PERSONALIZADO
TUTORIAL CREACIÓN DE UN INFORME PERSONALIZADO 1 Introducción... 3 2 Requisitos previos... 3 3 Desarrollo del tutorial... 4 3.1 Duplicar un informe personalizado existente... 4 3.2 Adaptar el nuevo informe
Más detallesEXÁMENES RESUELTOS SISTEMAS OPERATIVOS INFORMÁTICA SISTEMAS Y GESTIÓN
EXÁMENES RESUELTOS SISTEMAS OPERATIVOS INFORMÁTICA SISTEMAS Y GESTIÓN DELEGACIÓN DE ALUMNOS CENTRO ASOCIADO DE BALEARES EXÁMENES SISTEMAS OPERATIVOS SISTEMAS OPERATIVOS I Mayo 2000 INFORMÁTICA DE SISTEMAS
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 detallesEstructuras 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 detallesSistemas 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 detallesProgramación y Computación Ingenierías. Dr. Eric Jeltsch F. FUNCIONES Y PROCEDIMIENTOS. Universidad de La Serena.
FUNCIONES Y PROCEDIMIENTOS 1 2 3 4 5 Escribir un programa que muestre en pantalla VS2 realizado por nosotros (usar procedimiento). PROGRAM VS2 (INPUT, OUTPUT); PROCEDURE letra_v; WRITELN('V V'); WRITELN('
Más detallesTurbo Pascal 7, FPS y sus herramientas de análisis de errores.
Departamento de Ciencias Básicas Turbo Pascal 7, FPS y sus herramientas de análisis de. Septiembre 09 TP7, FPS y sus herramientas de análisis de Índice 1. ADVERTENCIA PRELIMINAR 2 2. USO GENERAL DEL PROGRAMA
Más detallesProgramación SQL. Lucio Salgado Diciembre 2008
Programación SQL Lucio Salgado Diciembre 2008 1 Gestionadores de Bases de Datos (DBMS) Es el software que permite administrar bases de datos, a través de ella el usuario puede usar los datos con mucha
Más detallesAlgoritmos y Estructuras de Datos II
16 de marzo de 2015 Contenidos 1 Análisis de algoritmos 2 3 La idea El algoritmo Ejemplo Análisis Ordenación por selección vs. inserción selección: a a[1,i) mínimos ordenados a[i,n] aún no seleccionados
Más detallesInstrumentación Virtual con LabVIEW
Instrumentación Virtual con LabVIEW ESTRUCTURAS ESTRUCTURAS WHILE FOR.. CASE SEQUENCE Opciones de selección de CASE Controles Visibles Variables Locales y Globales Personalizar controles 1.- ENTORNO DE
Más detallesEjercicios resueltos Visual Basic y.net con arrays (arreglos), Do While, For, mod, ficheros, Ubound. Cálculo serie numérica (CU00344A)
aprenderaprogramar.com Ejercicios resueltos Visual Basic y.net con arrays (arreglos), Do While, For, mod, ficheros, Ubound. Cálculo serie numérica (CU00344A) Sección: Cursos Categoría: Curso Visual Basic
Más detallesParte I: Elementos del lenguaje Ada
Parte I: Elementos del lenguaje Ada 1. Introducción a los computadores y su programación 2. Elementos básicos del lenguaje 3. Modularidad y programación orientada a objetos 4. Estructuras de datos dinámicas
Más detallesFundamentos de Programación Visual Basic
Pág. N. 1 Fundamentos de Programación Visual Basic Familia: Editorial: Tecnología de información y computación Macro Autor: Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-236-3 N. de páginas: 280
Más detallesPROGRAMACION CONCURRENTE. II.1 Comunicación síncrona
PROGRAMACION CONCURRENTE II.1 Comunicación síncrona J.M. Drake 1 Concurrencia por intercambio de mensajes. Modelos de interacción. Transmisión síncrona de mensajes. Invocación remota de procedimientos.
Más detallesExamen 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 detallesEstructura general de un programa
Estructura general de un programa INTRODUCCION Un programa puede considerarse como una secuencia de acciones (instrucciones) que manipulan un conjunto de objetos (datos). Contendrá por tanto dos bloques
Más detallesCurso Completo de Visual Basic 6.0
CURSO Curso Completo de Visual Basic 6.0 Escuela Superior de Ingenieros Industriales UNIVERSIDAD DE NAVARRA Javier García de Jalón José Ignacio Rodríguez Alfonso Brazález Patxi Funes Eduardo Carrasco Jesús
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 detallesCapítulo 3: Procesos. n Concepto de Proceso. n Despacho (calendarización) de Procesos. n Operaciones en Procesos. n Procesos en cooperación
3.- Procesos Capítulo 3: Procesos Concepto de Proceso Despacho (calendarización) de Procesos Operaciones en Procesos Procesos en cooperación Compunicación Interprocesos Communicación en sistemas Cliente-Servidor
Más detallesProgramación Concurrente en Java
Hebras y monitores Departamento de Sistemas Informáticos y Programación Universidad Complutense de Madrid 21 de marzo de 2006 Threads Extendiendo la clase java.lang.thread. public class PrThread extends
Más detallesProgramació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 detallesSistemas Electrónicos Digitales. PRACTICA nº 7
PRACTICA nº 7 Diseño de Memorias RAM y ROM. Síntesis e implementación sobre dispositivos FPGA. Síntesis empleando FFs y síntesis utilizando bits de RAM dedicados Objetivos: Descripción y síntesis de memorias
Más detallesCEFIRE: Curso Administración de APACHE
CEFIRE: Curso Administración de APACHE Práctica introducción al PHP PHP, acrónimo de "PHP: Hypertext Preprocessor", es un lenguaje "Open Source" interpretado de alto nivel, especialmente pensado para desarrollos
Más detallesComunicació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 detallese-mail: mtoledo@dgrfsa.gov.ar
Arreglos Introducción a las Estructuras de Datos. Arreglos Unidimensionales: Vectores Vectores Estáticos en VB Vectores Dinámicos en VB Ordenando un Vector Introducción a las Estructuras de Datos. Una
Más detallesPráctica 6: Utilización de Registros y Vectores
Práctica 6: Utilización de Registros y Vectores Objetivos de la práctica El objetivo de esta práctica es ejercitarse en el empleo de estructuras de datos de tipo registro y vector para modelar datos, así
Más detallesDESCRIPCIÓN DE CIRCUITOS DIGITALES
DESCRIPCIÓN DE CIRCUITOS DIGITALES Circuitos combinacionales Circuitos secuenciales Organización del diseño. Diseño genérico Operaciones iterativas Autores: Luis Entrena, Celia López, Mario García, Enrique
Más detallesIndice del curso básico programación desde cero Visual Basic Nivel I (CU00302A)
aprenderaprogramar.com Indice del curso básico programación desde cero Visual Basic Nivel I (CU00302A) Sección: Cursos Categoría: Curso Visual Basic nivel I Fecha revisión: 2029 Autor: Mario R. Rancel
Más detallesPráctico 5. Definiciones Inductivas - Segunda Parte -
Práctico 5 Definiciones Inductivas - Segunda Parte - Objetivos: Trabajar con tipos inductivos. Realizar pruebas por inducción y análisis de casos. Familiarizarse con los lemas de inversión y las tácticas
Más detallesProyecto de Diseño 2
Altera University Program 1 Proyecto de Diseño 2 Números y Visualizadores El objetivo de esta práctica es diseñar circuitos combinacionales que realicen conversiones numéricas de binario a decimal y adición
Más detalles