CAPÍTULO 1. CONCEPTOS FUNDAMENTALES

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

Download "CAPÍTULO 1. CONCEPTOS FUNDAMENTALES"

Transcripción

1 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 fueron los propios Sistemas Operativos de multiprogramación en los que un solo procesador de gran capacidad debía repartir su tiempo entre muchos usuarios. Para cada usuario, la sensación era que el procesador estaba dedicado para él. Durante la década de los sesenta y setenta esto fue así. La programación de sistemas con capacidades de concurrencia se hacía a bajo nivel, en ensamblador, pues aparte de no disponer de lenguajes de alto nivel con capacidades de concurrencia, se primaba la supuesta eficiencia del código escrito directamente en ensamblador. La aparición en 1972 del lenguaje de alto nivel Concurrent Pascal [Brinch-Hansen, 1975], desarrollado por Brinch Hansen, se encargó de romper este mito y abrir la puerta a otros lenguajes de alto nivel que incorporaban concurrencia. Desde entonces la programación concurrente ha ido ganando interés y actualmente se utiliza muy a menudo en la implementación de numerosos sistemas. Tres grandes hitos se nos antojan importantes para que la programación concurrente actualmente sea tan importante: La aparición del concepto de thread o hilo que hace que los programas puedan ejecutarse con mayor velocidad comparados con aquellos que utilizan el concepto de proceso. La aparición más reciente de lenguajes como Java, lenguaje orientado a objetos de propósito general que da soporte directamente a la programación concurrente mediante la inclusión de primitivas específicas. La aparición de Internet que es un campo abonado para el desarrollo y la utilización de programas concurrentes. Cualquier programa de Internet en el que podamos pensar tales como un navegador, un chat, etc, están programados usando técnicas de programación concurrente. En lo que resta de capítulo introduciremos el concepto de programación concurrente, los beneficios que reporta, el hardware en el que puede ejecutarse, la forma de especificarlo en un lenguaje y las características, problemas y propiedades de corrección de un programa concurrente. 1.2 Concepto de programación concurrente Según el diccionario de la Real Academia Española, una de las acepciones de la palabra concurrencia es Acaecimiento o concurso de varios sucesos en un mismo tiempo. M.E Carmen Cerón G Programación Concurrente BUAP 1

2 Si en esta definición sustituimos la palabra suceso por proceso ya tenemos una primera aproximación a lo que va a ser la concurrencia en computación. Puesto que en la definición anterior y en la que daremos posteriormente de programación concurrente aparece la palabra proceso y ésta está basada en el concepto de programa, se hace necesario dejar claro en este punto qué se va a entender tanto por programa como por proceso Programa y proceso Un programa es un conjunto de instrucciones. Es, simplemente, un texto que consiste en una secuencia de líneas de código que dicen qué hacer con un conjunto de datos de entrada para producir algún tipo de salida. Se trata de algo estático. Puede compararse con el concepto de clase en el ámbito de la Programación Orientada a Objetos (POO). Para que el programa pueda hacer algo de verdad hay que ponerlo en ejecución. Una primera definición incompleta de proceso sería la de un programa en ejecución. Es decir, un proceso es algo más que las líneas de código de un programa. Un proceso es algo dinámico. Está representado por el valor del contador de programa, el contenido de los registros del procesador, un pila y una sección de datos que contiene variables globales. Un proceso es una entidad dinámica. Puede compararse con el concepto de objeto en el ámbito de la POO. De igual manera que en POO puede haber múltiples objetos de una clase determinada, aquí puede haber múltiples procesos que corresponden al mismo programa. Como ejemplo consideremos un servidor de aplicaciones donde reside una aplicación de navegador de Internet y existen varios usuarios ejecutando ese navegador, cada uno de ellos navegando por un sitio diferente. Cada instancia del programa es un proceso. Cada proceso tendrá su propio contador de programa, así como sus propios registros, pila y variables. En la Figura 1 puede observarse el ejemplo mencionado donde existe un programa almacenado en disco y tres instancias de ese programa ejecutándose. Son tres procesos, cada uno con su propia información. proceso p1 proceso p2 proceso p3 SISTEMA OPERATIVO navegador Internet Figura 1 Programa y procesos. M.E Carmen Cerón G Programación Concurrente BUAP 2

3 1.2.2 Concurrencia Dos procesos serán concurrentes cuando la primera instrucción de uno de ellos se ejecuta después de la primera instrucción del otro y antes de la última. Es decir, existe un solapamiento en la ejecución de sus instrucciones. No tienen por qué ejecutarse exactamente al mismo tiempo, simplemente es suficiente con el hecho de que exista un intercalado entre la ejecución de sus instrucciones. Si se ejecutan al mismo tiempo los dos procesos, entonces tenemos una situación de programación paralela. La programación concurrente es un paralelismo potencial. Dependerá del hardware subyacente como veremos más adelante. De esta forma, en la Figura 1 tendríamos tres procesos concurrentes si se diese la circunstancia anterior. Se trata de un primer nivel de concurrencia 1, donde existen 3 procesos independientes ejecutándose al mismo tiempo sobre el Sistema Operativo. Cada proceso corresponde a una instancia de un programa. Sin embargo, esto sólo es una parte de la verdad. No necesariamente un proceso tiene por qué ser todo el programa en ejecución sino que puede ser parte de él. Dicho de otra forma, un programa, al ponerse en ejecución, puede dar lugar a más de un proceso, cada uno de ellos ejecutando una parte del programa. Continuando con el mismo ejemplo, el programa de navegador de Internet puede dar lugar a más de un proceso: uno que controla las acciones del usuario con la interfaz, otro que hace las peticiones al servidor, etc. De esta forma, la Figura 1 se convertiría en la Figura 2, suponiendo que se crean dos procesos cada vez que se ejecuta el programa. Todos estos procesos también pueden ejecutarse concurrentemente. p1.1 p1.2 p2.1 p2.2 p3.1 p3.2 SISTEMA OPERATIVO navegador Internet Figura 2 Un programa dando lugar a más de un proceso. Así pues, una definición más acertada de proceso es la de una actividad asíncrona susceptible de ser asignada a un procesador. Una definición bastante extendida es que un proceso es un programa en ejecución, pero no es muy exacto pues realmente un programa puede estar compuesto por diversos procesos. Un Sistema Operativo no deja de ser un programa con varios procesos que se ejecutan al mismo tiempo. 1 En el siguiente capítulo se verá que existe un segundo nivel de concurrencia. M.E Carmen Cerón G Programación Concurrente BUAP 3

4 Cuando varios procesos se ejecutan concurrentemente puede haber procesos que colaboren para un determinado fin mientras que puede haber otros que compitan por los recursos del sistema. Incluso aquellos procesos que colaboran deberán competir a la hora de obtener tiempo de procesador. Por ejemplo, en la Figura 2, p1.1 y p1.2 pueden estar colaborando para hacerle la vida más fácil al usuario mientras que p1.2 y p2.2 pueden estar compitiendo para acceder al disco. Para llevar a cabo estas tareas de colaboración y competencia por los recursos se hace necesaria la introducción de mecanismos de comunicación y sincronización entre procesos. Precisamente del estudio de estos mecanismos trata la programación concurrente Programación Concurrente La programación concurrente es la disciplina que se encarga del estudio de las notaciones que permiten especificar la ejecución concurrente de las acciones de un programa, así como las técnicas para resolver los problemas inherentes a la ejecución concurrente, que son básicamente comunicación y sincronización. Como puede intuirse, el trabajar con procesos concurrentes va a añadir complejidad a la tarea de programar. Cabe entonces hacerse la pregunta de cuáles son los beneficios que aporta la programación concurrente? 1.3 Beneficios de la programación concurrente Existen diversos motivos por los que la programación concurrente es útil. Destacaremos aquí dos de ellos: velocidad de ejecución y solución de problemas de naturaleza concurrente. Otros beneficios adicionales como el mejor aprovechamiento de la CPU saldrán a lo largo del capítulo Velocidad de ejecución Cuando la puesta en ejecución de un programa conlleva la creación de varios procesos y el sistema consta de más de un procesador, existe la posibilidad de asignar un proceso a cada procesador de tal forma que el programa se ejecuta de una forma más rápida. Los programas de cálculo numérico son grandes beneficiados de este hecho Solución de problemas inherentemente concurrentes Existen algunos problemas cuya solución es más fácil de abordar mediante el uso de programación concurrente pues su naturaleza es eminentemente concurrente. Destacamos algunos de ellos, pero para una discusión más detallada se sugiere consultar [Bacon, 1998]. Sistemas de control Son aquellos sistemas en los que hay una captura de datos, normalmente a través de sensores, un análisis de esos datos y una posible actuación posterior en función del resultado del análisis. La recolección de datos se puede estar haciendo de diversas entidades físicas como por ejemplo edificios o estancias dentro de edificios. No sería tolerable un sistema secuencial que vaya capturando los datos M.E Carmen Cerón G Programación Concurrente BUAP 4

5 uno a uno de las distintas estancias. Podría ocurrir que al llegar a capturar los datos de la última estancia, la primera ya haya sido pasto de las llamas. Tanto la captura de datos desde cada estancia como su tratamiento y posterior actuación son candidatos a ser procesos distintos y de naturaleza concurrente. Esto nos garantiza que nuestro sistema de control pueda responder a las alarmas que se produzcan. Tecnologías web La mayoría de los programas relacionados con la web son concurrentes: los servidores web que son capaces de atender concurrentemente múltiples conexiones de usuarios; los programas de chat que permiten mantener la conversación de varios usuarios; los servidores de correo que permiten que múltiples usuarios puedan mandar y recibir mensajes al mismo tiempo; los propios navegadores que permiten que un usuario pueda estar haciendo una descarga mientras navega por otras páginas, o se ejecuta un applet de Java, etc. Aplicaciones basadas en interfaces de usuarios La concurrencia en este tipo de aplicaciones va a permitir que el usuario pueda interaccionar con la aplicación aunque ésta esté realizando alguna tarea que consume mucho tiempo de procesador. Un proceso controla la interfaz mientras otro hace la tarea que requiere un uso intensivo de la CPU. Esto facilitará que tareas largas puedan ser abortadas a mitad de ejecución. Simulación Los programas secuenciales encuentran problemas al simular sistemas en los que existen objetos físicos que tienen un comportamiento autónomo independiente. La programación concurrente permitirá modelar esos objetos físicos y ponerlos en ejecución de forma independiente y concurrente, sincronizándolos de la forma apropiada. SGBD En Sistemas Gestores de Bases de Datos la concurrencia juega un papel muy importante cuando se va a permitir a varios usuarios interactuar con el sistema. Cada usuario puede ser visto como un proceso. Obviamente hay que implementar la política adecuada para evitar situaciones en las que dos usuarios modifican al mismo tiempo un registro. Sin embargo, a varios usuarios que quieran acceder a un mismo registro para consultarlo y no modificarlo, debe permitírseles un acceso concurrente. 1.4 Concurrencia y arquitecturas hardware Hasta ahora sólo hemos hablado de procesos, es decir, de software. No hemos dicho nada del hardware en el que se van a ejecutar nuestros procesos concurrentes. Parece obvio pensar que sin dos procesos van a ejecutarse de forma concurrente vamos a necesitar dos procesadores, uno para cada proceso. M.E Carmen Cerón G Programación Concurrente BUAP 5

6 Sin embargo, esto no tiene por qué ser así. Dependerá, aunque no exclusivamente, del hardware disponible y su topología. No es el propósito de este libro el hablar de hardware, pero sí que es necesario hacer una pequeña incursión para posteriormente entender algunos conceptos. Cuando hablamos de hardware nos estamos refiriendo fundamentalmente al número de procesadores en el sistema. Así, se puede hacer una primera distinción entre aquellos sistemas donde sólo hay un procesador, sistemas monoprocesador, y aquellos en los que hay más de un procesador, sistemas multiprocesador. En ambos sistemas es posible tener concurrencia Sistemas monoprocesador Incluso en un sistema con un solo procesador podemos tener una ejecución concurrente de procesos. Evidentemente todos los procesos no pueden estar ejecutándose al mismo tiempo sobre el procesador, sólo uno de ellos podrá estar haciéndolo, pero la sensación que le da al usuario o grupo de usuarios es la de estar ejecutándose al mismo tiempo. Esto es debido a que el Sistema Operativo (SO) va alternando el tiempo de procesador entre los distintos procesos. De esta forma, cuando un proceso que ocupa el procesador en un momento determinado necesita hacer una operación de entrada/salida, puede abandonar el procesador para que otro proceso pueda ocuparlo y aprovechar ciclos de procesador. En la Figura 3 puede verse cómo el tiempo de procesador es repartido entre tres procesos. Esta forma de gestionar los procesos en un sistema monoprocesador recibe el nombre de multiprogramación y es otro de los beneficios de la programación concurrente: un mayor aprovechamiento del procesador. Esto es lo que ocurre en los SO que estamos acostumbrados a manejar con los ordenadores de sobremesa tales como Windows o Linux. P1 P2 P3 Figura 3 Concurrencia. Aparte de la situación en la que un proceso puede aprovechar ciclos de CPU mientras otro proceso hace operaciones de entrada/salida, existen otros posibles beneficios del uso de concurrencia en sistemas monoprocesador: La posibilidad de proporcionar un servicio interactivo a múltiples usuarios. Este sería el caso por ejemplo de un Sistema Operativo multiusuario ejecutándose sobre una máquina monoprocesador. La posibilidad de dar una solución adecuada a problemas que son de naturaleza eminentemente concurrente tal y como se mencionó en la sección M.E Carmen Cerón G Programación Concurrente BUAP 6

7 En un sistema monoprocesador todos los procesos comparten la misma memoria. La forma de sincronizar y comunicar procesos será pues mediante el uso de variables compartidas. Tal y como muestra la Figura 4 cuando un proceso A quiere comunicar algo a un proceso B lo deja en una variable conocida y compartida por ambos procesos de tal forma que el proceso B lo pueda leer. Variable compartida MEMORIA común a todos los procesos escribe lee proceso A proceso B proceso C SISTEMA OPERATIVO procesador Figura 4 Sistema monoprocesador con variables compartidas Sistemas multiprocesador Un sistema multiprocesador es aquel en el que existe más de un procesador. Esto permite que exista un paralelismo real entre los procesos ya que idealmente cada procesador podría ejecutar un proceso. Si tuviésemos un sistema con tres procesadores en vez de tener la Figura 3 el resultado podría ser el de la Figura 5 en el que realmente los tres procesos se ejecutan de forma paralela. P1 P2 P3 Figura 5 Paralelismo. Sin embargo, y siendo realistas, lo normal en un sistema concurrente es tener más procesos que procesadores por lo que, de alguna forma, tiene que haber algún esquema de multiprogramación en uno o más procesadores. Dentro de los sistemas multiprocesadores se puede hacer una pequeña clasificación: M.E Carmen Cerón G Programación Concurrente BUAP 7

8 Sistemas fuertemente acoplados: tanto los procesadores como otros dispositivos (incluida la memoria) están conectados a un bus. Esto permite que todos los procesadores puedan compartir la misma memoria. Puede ocurrir que cada procesador tenga su propia memoria local, pero la sincronización y comunicación entre procesos se hará mediante variables situadas en la memoria compartida, es decir, mediante variables compartidas (Figura 6). Sistemas débilmente acoplados: aquí no existe una memoria compartida por los procesadores. Cada procesador tiene su propia memoria local y está conectado con otros procesadores mediante algún tipo de enlace de comunicación. Un tipo especial de estos sistemas lo constituyen los sistemas distribuidos, que están formados por un conjunto de nodos distribuidos geográficamente y conectados de alguna forma. Estos nodos pueden ser a su vez mono o multiprocesador. El sistema distribuido por antonomasia es Internet. Variable compartida MEMORIA común a todos los procesos nodo B escribe lee paso de mensaje procesador proceso A proceso B proceso C nodo A nodo C SISTEMA OPERATIVO procesador procesador procesador procesador procesador procesador Figura 6 Sistema multiprocesador con memoria compartida. Figura 7 Sistema distribuido. Suele denominarse multiproceso a la gestión de varios procesos dentro de un sistema multiprocesador donde cada procesador puede acceder a una memoria común y procesamiento distribuido a la gestión de varios procesos en procesadores separados, cada uno con su memoria local. Mientras que en los sistemas de multiproceso el esquema de la Figura 4 se puede seguir manteniendo tal y como se muestra en la Figura 6, en el procesamiento distribuido este esquema ya no es válido. En un sistema distribuido la forma natural de comunicar y sincronizar procesos es mediante el uso de paso de mensaje tal y como se aprecia en la Figura 7. El paso de mensaje no sólo es aplicable a los sistemas distribuidos sino que también puede usarse en sistemas de multiproceso y de multiprogramación. Es por esta razón por la que actualmente M.E Carmen Cerón G Programación Concurrente BUAP 8

9 los mecanismos de paso de mensaje son más utilizados en los lenguajes concurrentes, aparte de la buena sintonía que este mecanismo guarda con la Programación Orientada a Objetos. No en vano, la unión de ambos paradigmas, concurrente y objetos, ha dado lugar a lo que se conoce como Programación Concurrente Orientada a Objetos. El lenguaje Java no deja de ser un ejemplo. Para terminar este apartado es bueno dejar claras algunas definiciones adicionales que a veces llevan a confusión y en las que no todos los autores pueden estar de acuerdo: un programa concurrente define un conjunto de acciones que pueden ser ejecutadas simultáneamente un programa paralelo es un tipo de programa concurrente diseñado para ejecutarse en un sistema multiprocesador un programa distribuido es un tipo de programa paralelo que está diseñado para ejecutarse en un sistema distribuido, es decir, en una red de procesadores autónomos que no comparten una memoria común En este libro nos ocuparemos de los programas concurrentes, no haciendo ningún tipo de suposición sobre el número de procesadores y su topología. Un programa concurrente debe funcionar independientemente de que lo ejecutemos en un sistema monoprocesador o en un sistema multiprocesador, ya sea éste fuerte o débilmente acoplado. 1.5 Especificación de ejecución concurrente Una vez que sabemos qué es un programa concurrente y las distintas arquitecturas hardware que pueden soportarlo, es el momento de ver qué partes de un programa se pueden ejecutar concurrentemente y qué partes no, y cómo especificarlo en un lenguaje de programación Qué se puede ejecutar concurrentemente? Obviamente, no todas las partes de un programa pueden ejecutarse de forma concurrente. Consideremos el siguiente fragmento de programa: x:=x+1; y:=x+2; Está claro que la primera sentencia se tiene que ejecutar antes que la segunda. Sin embargo consideremos ahora: x:=1; y:=2; z:=3; Queda claro que el orden en que se ejecuten no interviene en el resultado final. Si dispusiésemos de tres procesadores podríamos ejecutar cada una de las líneas en uno de ellos incrementando la velocidad del sistema. En el caso anterior, el sentido común es el que nos ha hecho ver qué se podía y qué no se podía ejecutar concurrentemente. Sin embargo, A. J. Bernstein M.E Carmen Cerón G Programación Concurrente BUAP 9

10 [Bernstein, 1966] definió unas condiciones para determinar si dos conjuntos de instrucciones S i y S j se pueden ejecutar concurrentemente. Condiciones de Bernstein Para poder determinar si dos conjuntos de instrucciones se pueden ejecutar de forma concurrente, se definen en primer lugar los siguientes conjuntos: L (S k ) = {a 1, a 2,..., a n }, como el conjunto de lectura del conjunto de instrucciones S k y que está formado por todas las variables cuyos valores son referenciados (se leen) durante la ejecución de las instrucciones en S k. E (S k ) = {b 1, b 2,..., b m }, como el conjunto de escritura del conjunto de instrucciones S k y que está formado por todas las variables cuyos valores son actualizados (se escriben) durante la ejecución de las instrucciones en S k. Para que dos conjuntos de instrucciones S i y S j se puedan ejecutar concurrentemente, se tiene que cumplir que: 1. L(S i ) E(S j ) = 2. E(S i ) L(S j ) = 3. E(S i ) E(S j ) = Como ejemplo supongamos que tenemos: S1 a := x+y; S2 b := z-1; S3 c := a-b; S4 w := c+1; Utilizando las condiciones de Bernstein veremos qué sentencias pueden ejecutarse de forma concurrente y cuáles no. Para ello, en primer lugar calculamos los conjuntos de lectura y escritura: L (S 1 ) = {x, y} E (S 1 ) = {a} L (S 2 ) = {z} E (S 2 ) = {b} L (S 3 ) = {a, b} E (S 3 ) = {c} L (S 4 ) = {c} E (S 4 ) = {w} Ahora aplicamos las condiciones de Bernstein a cada par de sentencias: Entre S 1 y S 2 : L(S 1 ) E(S 2 ) = E(S 1 ) L(S 2 ) = E(S 1 ) E(S 2 ) = Entre S 1 y S 3 : L(S 1 ) E(S 3 ) = E(S 1 ) L(S 3 ) = a E(S 1 ) E(S 3 ) = Entre S 1 y S 4 : M.E Carmen Cerón G Programación Concurrente BUAP 10

11 L(S 1 ) E(S 4 ) = E(S 1 ) L(S 4 ) = E(S 1 ) E(S 4 ) = Entre S 2 y S 3 : L(S 2 ) E(S 3 ) = E(S 2 ) L(S 3 ) = b E(S 2 ) E(S 3 ) = L(S 2 ) E(S 4 ) = E(S 2 ) L(S 4 ) = E(S 2 ) E(S 4 ) = Entre S 3 y S 4 : L(S 3 ) E(S 4 ) = E(S 3 ) L(S 4 ) = c E(S 3 ) E(S 4 ) = Entre S 2 y S 4 : De todo esto se deduce la siguiente tabla en la que puede verse qué pares de sentencias pueden ejecutarse de forma concurrente: S 1 S 2 S 3 S 4 S 1 -- Sí No Sí S No Sí S No S Una vez que sabemos qué se puede y qué no se puede ejecutar concurrentemente, se hace necesario algún tipo de notación para especificar qué partes de un programa pueden ejecutarse concurrentemente y qué partes no Cómo especificar la ejecución concurrente Veremos dos posibles formas de especificar la ejecución concurrente de instrucciones: una basada en una notación gráfica y otra basada en lo que suelen utilizar diversos lenguajes de programación, el par cobegin/coend. Grafos de precedencia Se trata de una notación gráfica. Es un grafo dirigido acíclico. Cada nodo representará una parte (conjunto de instrucciones) de nuestro sistema. Una flecha desde A hasta B representa que B sólo puede ejecutarse cuando A haya finalizado. Si aparecen dos nodos en paralelo querrá decir que se pueden ejecutar concurrentemente. Para el ejemplo anterior el grafo de precedencia sería el de la Figura 8. M.E Carmen Cerón G Programación Concurrente BUAP 11

12 S 1 S 2 S 3 S 4 Sentencias COBEGIN-COEND Figura 8 Grafo de precedencia. Todas aquellas acciones que puedan ejecutarse concurrentemente las introducimos dentro del par cobegin/coend. El ejemplo anterior quedaría de la siguiente forma: begin cobegin a:=x+y; b:=z+1; coend; c:=a-b; w:=c+1; end. Las instrucciones dentro del par cobegin/coend pueden ejecutarse en cualquier orden, mientras que el resto se ejecuta de manera secuencial. 1.6 Características de los sistemas concurrentes La ejecución de sistemas concurrentes tiene algunas características que los diferencian claramente de los sistemas secuenciales. Destacamos dos: Orden de ejecución de las instrucciones En los programas secuenciales hay un orden total en la ejecución de las líneas de código. Ante un conjunto de datos de entrada se sabe siempre por dónde va a ir el programa (su flujo de ejecución). En la Figura 9, por muchas veces que se ejecute el programa, el hilo de ejecución siempre tendrá el mismo recorrido, es decir, las instrucciones siempre se ejecutarán en el mismo orden. M.E Carmen Cerón G Programación Concurrente BUAP 12

13 hilo de ejecución i2 i4 i5 i1 i3 i6 i7 programa i2 i4 i5 i1 i3 i6 i7 i2 i4 i5 i1 i3 i6 i7 Figura 9 Orden total. Figura 10 Orden parcial. En los programas concurrentes, sin embargo, hay un orden parcial. Ante el mismo conjunto de datos de entrada no se puede saber cuál va a ser el flujo de ejecución. En cada ejecución del programa el flujo puede ir por distinto sitio. En la Figura 10, donde se supone que todas las instrucciones pueden ejecutarse concurrentemente, podemos ver cómo en dos ejecuciones distintas el orden en el que se ejecutan las instrucciones puede variar. En la Figura 11 podemos observar el grafo de precedencia y el código con el par cobegin/coend para el caso de la Figura 10. i1 i2 i3 i4 i5 i6 i7 begin cobegin i1; i2; i3; i4; i5; i6; i7; coned; end. Figura 11 Orden parcial: grafo de precedencia y código Indeterminismo Este orden parcial lleva a que los programas concurrentes puedan tener un comportamiento indeterminista, es decir, puedan arrojar diferentes resultados cuando se ejecutan repetidamente sobre el mismo conjunto de datos de entrada. Esto suele llevar a muchas sorpresas cuando uno se inicia en la programación concurrente. Consideremos el siguiente programa en el que dos procesos se ejecutan concurrentemente para sumar 1 a la variable x. Esa variable x es compartida por ambos procesos pues ha sido declarada como global. La sintaxis utilizada es la del lenguaje Pascal-FC. program Incognita; var x: integer; M.E Carmen Cerón G Programación Concurrente BUAP 13

14 process P1; var i: integer; begin for i:=1 to 5 do x:=x+1; end; process P2; var j: integer; begin for j:=1 to 5 do x:=x+1 end; begin x:=0; cobegin P1; P2; coend; end. Qué valor tendrá la variable x al terminar el programa? Todo hace pensar que el valor debería ser 10. Sin embargo, el valor de x puede ser 5, 6, 7, 8, 9 ó 10. Esta característica hace muy difícil la labor de depuración en los programas concurrentes. Podemos ejecutar el programa veces y podría dar como resultado 10 y al ejecutarlo veces nos podría dar 8. Intuitivamente podemos ver que el error se encuentra en el acceso incontrolado a una variable compartida por parte de 2 procesos. En la siguiente sección vemos más a fondo la raíz del problema. 1.7 Problemas inherentes a la programación concurrente Dos son básicamente los problemas con los que nos vamos a encontrar a la hora de confeccionar un programa concurrente: el problema de la exclusión mutua y el de la condición de sincronización Exclusión mutua Este problema es el que se nos da en el ejemplo anterior de los bucles. Antes de pasar a explicar el problema hay que tener en cuenta que lo que realmente se ejecuta concurrentemente son las líneas de código generadas por el compilador. En nuestro caso, supongamos que una instrucción como x:=x+1 da lugar a tres instrucciones de un lenguaje ensamblador cualquiera, que es lo que realmente va a ejecutar el procesador. Tendríamos los siguientes pasos: 1. Cargar desde memoria el valor de x en un registro (LOAD X R1). 2. Incrementar el valor del registro (ADD R1 1). 3. Almacenar el contenido del registro en la posición de memoria de x (STORE R1 X). Así pues, lo que realmente se va a ejecutar de forma concurrente dentro de cada bucle es: P1 (1) LOAD X R1 (2) ADD R1 1 (3) STORE R1 X P2 (1) LOAD X R1 (2) ADD R1 1 (3) STORE R1 X M.E Carmen Cerón G Programación Concurrente BUAP 14

15 Cada una de estas instrucciones es atómica o indivisible, es decir, se va a ejecutar en un ciclo de reloj del procesador sin poder ser interrumpidas. Puesto que hemos dicho que en programación concurrente existe un orden parcial, cualquier intercalado entre estas instrucciones es válido. En la Figura 12 puede verse una traza para un intercalado particular de estas seis líneas de código en el que el valor final de la variable x no es el esperado. Se ha perdido un incremento. Si tenemos en cuenta que estas líneas de código están en un bucle ahora podremos entender por qué son posible resultados menores de 10 para la variable x. Todo dependerá del número de incrementos perdidos, que en cada ejecución puede ser distinto e incluso no producirse. x P P Tiempo Figura 12 Traza de una posible ejecución concurrente para P1 y P2. En cualquier caso, el hecho de que P1 y P2 no puedan ejecutarse concurrentemente viene determinado por las condiciones de Bernstein pues sus conjuntos de escritura no son disjuntos. El problema estriba en que dos procesos distintos están accediendo al mismo tiempo a una variable compartida entre los dos para actualizarla. Nos hubiese interesado que las tres líneas de cada proceso se hubiesen ejecutado en un solo paso, sin ningún tipo de intercalado con las otras líneas del otro proceso. A la porción de código que queremos que se ejecute de forma indivisible se le denomina sección crítica. Nos interesa asegurarnos que las secciones críticas se ejecuten en exclusión mutua, es decir, sólo uno de los procesos debe estar en la sección crítica en un instante dado. En la Figura 13 puede verse cómo cuando los dos procesos llegan a la sección crítica sólo uno de ellos podrá entrar, teniendo que esperar el otro. En la Figura 14 puede verse que una vez que un proceso ha salido de la sección crítica, el otro proceso puede entrar y de esta forma seguir ejecutándose los dos de manera concurrente. P1 P2 Figura 13 Sección crítica (1). x:=x+1 Sección crítica M.E Carmen Cerón G Programación Concurrente BUAP 15

16 P1 P2 Figura 14 Sección crítica (2). x:=x+1 Sección crítica La programación concurrente deberá ofrecernos mecanismos para especificar qué partes del código han de ejecutarse en exclusión mutua con otras partes Condición de sincronización Para ilustrar el problema de la condición de sincronización supongamos ahora un sistema en el que existen tres procesos (Figura 15) cuyo comportamiento es el siguiente: lector, que va almacenando en un buffer las imágenes capturadas desde una cámara gestor, que va recogiendo las imágenes desde el buffer, las trata y las va colocando en una cola de impresión impresor, que va imprimiendo las imágenes colocadas en la cola de impresión cámara impresora LECTOR GESTOR IMPRESOR buffer cola de impresión Figura 15 Sistema compuesto por los procesos lector, gestor e impresor. Supongamos que los tres procesos se ejecutan de manera concurrente en un bucle infinito tal y como muestra el siguiente pseudocódigo: process lector; begin repeat captura imagen; almacena en buffer; forever end; process gestor; begin repeat coge imagen de buffer; trata imagen; almacena imagen en cola; forever end; process impresor; begin repeat coge imagen de cola; imprime imagen; forever end; M.E Carmen Cerón G Programación Concurrente BUAP 16

17 El lector debería apreciar que la solución al problema está incompleta. Debería tratar de responder a las siguientes preguntas: Qué ocurre cuando el proceso lector o el proceso gestor tratan de poner una imagen y el buffer o la cola están llenos? Qué ocurre cuando el proceso gestor o el proceso impresor tratan de coger una imagen y el buffer o la cola están vacíos? Hay situaciones en las que un recurso compartido por varios procesos, como puede ser el buffer o la cola de impresión en nuestro ejemplo, se encuentra en un estado en el que un proceso no puede hacer una determinada acción con él hasta que no cambie su estado. A esto se le denomina condición de sincronización. La programación concurrente ha de proporcionarnos mecanismos para bloquear procesos que no puedan hacer algo en un momento determinado a la espera de algún evento (p. ej. que el buffer deje de estar vacío), pero también que permita desbloquearlos cuando ese evento haya ocurrido. A la solución de estos dos problemas usando diferentes técnicas es a lo que dedicaremos gran parte del libro. 1.8 Corrección de programas concurrentes El orden parcial e indeterminismo en la ejecución de las instrucciones hace que la corrección de un programa concurrente sea más difícil de conseguir que la de un programa secuencial. Para que un programa concurrente sea correcto, además de cumplir las especificaciones funcionales que deba cumplir, debe satisfacer una serie de propiedades inherentes a la concurrencia. Podemos agrupar esas propiedades en: Propiedades de seguridad: son aquellas que aseguran que nada malo va a pasar durante la ejecución del programa. Propiedades de viveza: son aquellas que aseguran que algo bueno pasará eventualmente durante la ejecución del programa. Para entender en qué consisten estas propiedades, consideremos el famoso juego del pañuelo en el que hay dos equipos, A y B, y un juez con un pañuelo (Figura 16). Cada jugador de un equipo tiene un número del 1 al 3. No puede haber dos jugadores en el mismo equipo con el mismo número. El juez dice un número y entonces los dos rivales con el mismo número salen corriendo a coger el pañuelo. El jugador que lo coja ha de volver corriendo a su sitio sin que su rival logre tocarle la espalda. En este escenario explicaremos las distintas propiedades de vivacidad y seguridad. M.E Carmen Cerón G Programación Concurrente BUAP 17

18 el 2 Propiedades de seguridad Figura 16 Juego del pañuelo. Exclusión mutua. Hay recursos en el sistema que deben ser accedidos en exclusión mutua tal y como hemos visto anteriormente. Cuando esto ocurre, hay que garantizar que si un proceso adquiere el recurso, otros procesos deberán esperar a que sea liberado. De lo contrario, el resultado puede ser imprevisto. En nuestro ejemplo, el pañuelo ha de adquirirse en exclusión mutua, o lo coge un jugador o lo coge otro. Si lo cogen los dos a la vez puede llegar a romperse, llevando a un malfuncionamiento del sistema. Condición de sincronización. Hay situaciones en las que un proceso debe esperar por la ocurrencia de un evento para poder seguir ejecutándose. Cuando esto ocurre, hay que garantizar que el proceso no prosigue hasta que no se produce el evento. De lo contrario, el resultado puede ser imprevisto. En nuestro ejemplo, un jugador ha de esperar a que digan su número para poder salir corriendo. Si sale corriendo antes llevaría a un malfuncionamiento del sistema. Interbloqueo. Se produce una situación de interbloqueo cuando todos los procesos están esperando porque ocurra un evento que nunca se producirá. Hay que garantizar que no se producen este tipo de situaciones. En nuestro ejemplo se produciría si un jugador se guarda el pañuelo y se va para su casa. El juez esperaría porque le devolvieran el pañuelo y los jugadores esperarían porque el juez dijese su número, pero ninguno de estos eventos va a ocurrir nunca. Se suele conocer también con el nombre de deadlock o abrazo mortal. Problemas de vivacidad Interbloqueo activo: El anterior interbloqueo también suele conocerse como pasivo. Se produce una situación de interbloqueo activo cuando un sistema ejecuta una serie de instrucciones sin hacer ningún progreso. Hay que garantizar que no ocurra este tipo de situaciones. En nuestro ejemplo se produciría si dos jugadores, al intentar coger el pañuelo, amagan una y otra vez, pero no se deciden a cogerlo. Mientras que la detección de un intebloqueo pasivo es más o menos simple, la detección de un interbloqueo activo es muy complicada. Se suele conocer también con el nombre de M.E Carmen Cerón G Programación Concurrente BUAP 18

19 livelock. A partir de ahora cada vez que hablemos de interbloqueo nos referiremos al interbloqueo pasivo. Inanición: Se produce una situación de este tipo cuando el sistema en su conjunto hace progresos, pero existe un grupo de procesos que nunca progresan pues no se les otorga tiempo de procesador para avanzar. En nuestro ejemplo podría darse si el juez nunca dice el número de un jugador en concreto. Hay que garantizar que haya una cierta equidad en el trato a los procesos a no ser que las especificaciones del sistema digan lo contrario. Se trata de un problema también difícil de detectar. Su suele conocer también con el nombre de starvation. Resumen En el presente capítulo se han presentado los conceptos fundamentales de la programación concurrente. Se ha definido el concepto de proceso, de concurrencia y de programación concurrente. Se han visto las distintas plataformas hardware donde poder ejecutar programas concurrentes: monoprocesador y multiprocesador y, en función de ello, se ha visto la diferencia por un lado entre multiprogramación, multiproceso y procesamiento distribuido y, por otro lado, entre programas concurrentes, paralelos y distribuidos. El hecho de que dos procesos sean concurrentes no implica necesariamente que se ejecuten exactamente al mismo tiempo. Eso dependerá del hardware subyacente. En cualquier caso, e independientemente del hardware, los beneficios de la programación concurrente pueden resumirse en: mayor velocidad de ejecución, mejor aprovechamiento de la CPU y soluciones óptimas a problemas de naturaleza eminentemente concurrente. También se ha visto en este capítulo cómo determinar cuándo un conjunto de instrucciones puede ejecutarse de manera concurrente mediante las condiciones de Bernstein. Una vez determinado qué se puede ejecutar concurrentemente, hemos visto cómo especificarlo de dos formas distintas: mediante el par cobegin/coend y mediante grafos de precedencia. Los programas concurrentes se caracterizan por un orden parcial en la ejecución de sus instrucciones frente al orden total presente en los programas secuenciales. Este orden parcial nos lleva a un indeterminismo en el resultado arrojado por la ejecución de los programas concurrentes. Este indeterminismo hace que la depuración y corrección de programas concurrentes no sea una tarea precisamente trivial. Dos son los grandes problemas a resolver en problemas de naturaleza concurrente: el problema de la exclusión mutua y el problema de la condición de sincronización. Un programa concurrente será correcto si, además de contemplar sus especificaciones funcionales donde irán implícitas condiciones de exclusión mutua y de sincronización, es capaz de evitar que se produzcan situaciones de interbloqueo y de inanición de procesos. Ejercicios resueltos M.E Carmen Cerón G Programación Concurrente BUAP 19

20 1. Construir un programa concurrente que se corresponda con el grafo de precedencia de la siguiente figura utilizando el par cobegin/coend S 1 S 2 S 3 S 4 S 5 S 6 S 7 Solución: S1; cobegin S3; begin S2; S4; cobegin S5; S6; coend end; coend; S7; 2. Dado el siguiente trozo de código obtener su grafo de precedencia correspondiente. s0; cobegin s1; begin s2; cobegin s3;s4 coend; s5 end; s6 coend; s7 M.E Carmen Cerón G Programación Concurrente BUAP 20

21 Solución: S 0 S 2 S 1 S 3 S 4 S 6 S 5 S 7 3. Construir un programa concurrente que explote al máximo la concurrencia para copiar un fichero f en un fichero g utilizando el par cobegin/coend. Solución: var f, g: file of T; r s: T; count: integer; begin abrirlectura (f); abrirescritura (g); leer (f,s); while not finfichero (f) do begin s:=r; cobegin escribir (g,s); leer (f,r); coend escribir (g,r); end; Ejercicios propuestos Cuestiones breves 1. Cuál es la ventaja de la concurrencia en los sistemas monoprocesador? 2. Cuáles son las diferencias entre programación concurrente, paralela y distribuida? 3. Cuáles son las diferencias entre multiprogramación, multiproceso y procesamiento distribuido? 4. Cuáles son los dos problemas principales inherentes a la programación concurrente? 5. Qué es una sección crítica? 6. Cuáles son las características de un programa concurrente? 7. Qué se entiende por un programa concurrente correcto? M.E Carmen Cerón G Programación Concurrente BUAP 21

22 Problemas 1. Usando las condiciones de Bernstein, construir el grafo de precedencia del siguiente trozo de código y el programa concurrente correspondiente usando el par cobegin/coend. S 1 : cuad := x*x; S 2 : m1 := a*cuad; S 3 : m2 := b*x; S 4 : z := m1 + m2; S 5 : y := z + c; 2. Construir dos programas concurrentes que se correspondan con los de la siguiente figura utilizando el par cobegin/coend. S 1 S 1 S 2 S 5 S 2 S 3 S 3 S 4 S 4 S 5 S 6 S 6 S 7 M.E Carmen Cerón G Programación Concurrente BUAP 22

Aproximación local. Plano tangente. Derivadas parciales.

Aproximación local. Plano tangente. Derivadas parciales. Univ. de Alcalá de Henares Ingeniería de Telecomunicación Cálculo. Segundo parcial. Curso 004-005 Aproximación local. Plano tangente. Derivadas parciales. 1. Plano tangente 1.1. El problema de la aproximación

Más detalles

Transacciones y bloqueos en SQL-Server

Transacciones y bloqueos en SQL-Server Transacciones y bloqueos en SQL-Server (Información para el uso desde Axapta) Introducción En este documento vamos a intentar explicar cuatro conceptos básicos acerca de las transacciones y los bloqueos

Más detalles

4. Programación Paralela

4. Programación Paralela 4. Programación Paralela La necesidad que surge para resolver problemas que requieren tiempo elevado de cómputo origina lo que hoy se conoce como computación paralela. Mediante el uso concurrente de varios

Más detalles

Capítulo 5. Cliente-Servidor.

Capítulo 5. Cliente-Servidor. Capítulo 5. Cliente-Servidor. 5.1 Introducción En este capítulo hablaremos acerca de la arquitectura Cliente-Servidor, ya que para nuestra aplicación utilizamos ésta arquitectura al convertir en un servidor

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

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

Tema 4. Gestión de entrada/salida

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

Unidad II: Administración de Procesos y del procesador

Unidad II: Administración de Procesos y del procesador Unidad II: Administración de Procesos y del procesador 2.1 Concepto de proceso Un proceso no es más que un programa en ejecución, e incluye los valores actuales del contador de programa, los registros

Más detalles

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA

Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Propuesta de Portal de la Red de Laboratorios Virtuales y Remotos de CEA Documento de trabajo elaborado para la Red Temática DocenWeb: Red Temática de Docencia en Control mediante Web (DPI2002-11505-E)

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

Concurrencia. Primitivas IPC con bloqueo

Concurrencia. Primitivas IPC con bloqueo Concurrencia Primitivas IPC con bloqueo Primitivas de IPC con bloqueo La solución de Peterson es correcta, pero tiene el defecto de requerir espera ocupada: Cuando un proceso quiere entrar en su región

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS

PROGRAMACIÓN ORIENTADA A OBJETOS PROGRAMACIÓN ORIENTADA A OBJETOS Clase 1. Introducción Profesor: Diego Sánchez Gómez Introducción a la programación orientada a objetos 1. Introducción a la programación orientada a objetos 2. Las clases

Más detalles

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas:

Los mayores cambios se dieron en las décadas de los setenta, atribuidos principalmente a dos causas: SISTEMAS DISTRIBUIDOS DE REDES 1. SISTEMAS DISTRIBUIDOS Introducción y generalidades La computación desde sus inicios ha sufrido muchos cambios, desde los grandes equipos que permitían realizar tareas

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA

SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA SERVIDOR WEB PARA ACCESO EN TIEMPO REAL A INFORMACIÓN METEOROLÓGICA DISTRIBUIDA E. SÁEZ, M. ORTIZ, F. QUILES, C. MORENO, L. GÓMEZ Área de Arquitectura y Tecnología de Computadores. Departamento de Arquitectura

Más detalles

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19

Más detalles

El proceso de edición digital en Artelope y CTCE

El proceso de edición digital en Artelope y CTCE El proceso de edición digital en Artelope y CTCE Carlos Muñoz Pons Universitat de València carlos.munoz-pons@uv.es Introducción Una de las cuestiones más importantes a la hora de trabajar en proyectos

Más detalles

UNIVERSIDAD DE SALAMANCA

UNIVERSIDAD DE SALAMANCA UNIVERSIDAD DE SALAMANCA FACULTAD DE CIENCIAS INGENIERÍA TÉCNICA EN INFORMÁTICA DE SISTEMAS Resumen del trabajo práctico realizado para la superación de la asignatura Proyecto Fin de Carrera. TÍTULO SISTEMA

Más detalles

Interoperabilidad de Fieldbus

Interoperabilidad de Fieldbus 2002 Emerson Process Management. Todos los derechos reservados. Vea este y otros cursos en línea en www.plantwebuniversity.com. Fieldbus 201 Interoperabilidad de Fieldbus Generalidades Qué es interoperabilidad?

Más detalles

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS

MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS MANUAL PARA GESTIÓN DE INCIDENCIAS INFORMÁTICAS En este manual aprenderemos a introducir un Ticket de Soporte (Incidencia Informática) y ver todo el proceso hasta que se resuelve. Para poder escribir Tickets

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso

PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación. II MODELOS y HERRAMIENTAS UML. II.2 UML: Modelado de casos de uso PROGRAMACIÓN ORIENTADA A OBJETOS Master de Computación II MODELOS y HERRAMIENTAS UML 1 1 Modelado de casos de uso (I) Un caso de uso es una técnica de modelado usada para describir lo que debería hacer

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente

Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente Capítulo 4. Requisitos del modelo para la mejora de la calidad de código fuente En este capítulo definimos los requisitos del modelo para un sistema centrado en la mejora de la calidad del código fuente.

Más detalles

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT)

MANUAL DE AYUDA. MODULO SAT (Anexo Integración AGIL SAT) MANUAL DE AYUDA MODULO SAT (Anexo Integración AGIL SAT) Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS 1 INTRODUCCION... 3 1.1 Objetivo... 3 1.2 Descripción de la aplicación Agil-SAT PDA... 3 1.3

Más detalles

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS

HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS HISTORIA Y EVOLUCIÓN DE LOS SISTEMAS OPERATIVOS Las primeras computadoras eran enormes máquinas que se ejecutaban desde una consola. El programador, quien además operaba el sistema de computación, debía

Más detalles

Unidad 1: Conceptos generales de Sistemas Operativos.

Unidad 1: Conceptos generales de Sistemas Operativos. Unidad 1: Conceptos generales de Sistemas Operativos. Tema 2: Estructura de los sistemas de computación. 2.1 Funcionamiento de los sistemas de computación. 2.2 Ejecución de instrucciones e interrupciones

Más detalles

Base de datos en Excel

Base de datos en Excel Base de datos en Excel Una base datos es un conjunto de información que ha sido organizado bajo un mismo contexto y se encuentra almacenada y lista para ser utilizada en cualquier momento. Las bases de

Más detalles

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual

Introducción. Ciclo de vida de los Sistemas de Información. Diseño Conceptual Introducción Algunas de las personas que trabajan con SGBD relacionales parecen preguntarse porqué deberían preocuparse del diseño de las bases de datos que utilizan. Después de todo, la mayoría de los

Más detalles

App para realizar consultas al Sistema de Información Estadística de Castilla y León

App para realizar consultas al Sistema de Información Estadística de Castilla y León App para realizar consultas al Sistema de Información Estadística de Castilla y León Jesús M. Rodríguez Rodríguez rodrodje@jcyl.es Dirección General de Presupuestos y Estadística Consejería de Hacienda

Más detalles

Capítulo 1 Introducción a la Computación

Capítulo 1 Introducción a la Computación Capítulo 1 Introducción a la Computación 1 MEMORIA PRINCIPAL (RAM) DISPOSITIVOS DE ENTRADA (Teclado, Ratón, etc) C P U DISPOSITIVOS DE SALIDA (Monitor, Impresora, etc.) ALMACENAMIENTO (Memoria Secundaria:

Más detalles

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar

Más detalles

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A)

QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A) APRENDERAPROGRAMAR.COM QUÉ ES UN SERVIDOR Y CUÁLES SON LOS PRINCIPALES TIPOS DE SERVIDORES? (PROXY, DNS, WEB, FTP, SMTP, ETC.) (DV00408A) Sección: Divulgación Categoría: Herramientas Informáticas Fecha

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

1.1.- Objetivos de los sistemas de bases de datos 1.2.- Administración de los datos y administración de bases de datos 1.3.- Niveles de Arquitectura

1.1.- Objetivos de los sistemas de bases de datos 1.2.- Administración de los datos y administración de bases de datos 1.3.- Niveles de Arquitectura 1. Conceptos Generales 2. Modelo Entidad / Relación 3. Modelo Relacional 4. Integridad de datos relacional 5. Diseño de bases de datos relacionales 6. Lenguaje de consulta estructurado (SQL) 1.1.- Objetivos

Más detalles

Utilización del sistema operativo GNU/ Linux en las netbooks

Utilización del sistema operativo GNU/ Linux en las netbooks Utilización del sistema operativo GNU/ Linux en las netbooks El sistema operativo es la pieza de software básica de un sistema, que permite manejar los recursos de la computadora, abrir programas, manejar

Más detalles

GENERACIÓN DE CÓDIGO

GENERACIÓN DE CÓDIGO GENERACIÓN DE CÓDIGO INTRODUCCION La generación de código es la fase más compleja de un compilador, puesto que no sólo depende de las características del lenguaje fuente sino también de contar con información

Más detalles

CAPÍTULO 2 Sistemas De Base De Datos Multiusuarios

CAPÍTULO 2 Sistemas De Base De Datos Multiusuarios CAPÍTULO 2 Sistemas De De Multiusuarios Un sistema multiusuario es un sistema informático que da servicio, manera concurrente, a diferentes usuarios mediante la utilización compartida sus recursos. Con

Más detalles

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse.

TABLA DE DECISION. Consideremos la siguiente tabla, expresada en forma genérica, como ejemplo y establezcamos la manera en que debe leerse. TABLA DE DECISION La tabla de decisión es una herramienta que sintetiza procesos en los cuales se dan un conjunto de condiciones y un conjunto de acciones a tomar según el valor que toman las condiciones.

Más detalles

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología

Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología Ciclo de vida y Metodologías para el desarrollo de SW Definición de la metodología La metodología para el desarrollo de software es un modo sistemático de realizar, gestionar y administrar un proyecto

Más detalles

Hilos, 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 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 detalles

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib

Manual de uso de la plataforma para monitores. CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib Manual de uso de la plataforma para monitores CENTRO DE APOYO TECNOLÓGICO A EMPRENDEDORES -bilib [Manual de uso de la plataforma para monitores] 1. Licencia Autor del documento: Centro de Apoyo Tecnológico

Más detalles

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos.

Este es un ejemplo muy sencillo, un esquema de empleados que trabajan en proyectos, en una relación muchos a muchos. 28/04/2012 La teoría de la normalización va perdiendo peso con el paso de los años como herramienta de diseño de bases de datos relacionales en favor de modelos de datos más ricos en su representación,

Más detalles

Anexo A Diagramas de Navegación

Anexo A Diagramas de Navegación Anexo A Diagramas de Navegación Figura D.1: Diagrama de navegación de la pantalla principal. 43 Figura D.2: Diagrama de navegación del apartado Crear Encuesta. 44 Figura D.3: Diagrama de navegación del

Más detalles

Ejemplos de conversión de reales a enteros

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

MANUAL DE USUARIO DE UNIFIED IM

MANUAL DE USUARIO DE UNIFIED IM MANUAL DE USUARIO DE UNIFIED IM Spontania v5 Febrero, 2009 1 Índice Índice... 2 1 Como instalar IM... 3 2 Interface UnifiedIM... 6 Barra de herramientas... 6 IM... 7 Contactos... 7 Acciones... 8 Barra

Más detalles

Elementos requeridos para crearlos (ejemplo: el compilador)

Elementos requeridos para crearlos (ejemplo: el compilador) Generalidades A lo largo del ciclo de vida del proceso de software, los productos de software evolucionan. Desde la concepción del producto y la captura de requisitos inicial hasta la puesta en producción

Más detalles

La explicación la haré con un ejemplo de cobro por $100.00 más el I.V.A. $16.00

La explicación la haré con un ejemplo de cobro por $100.00 más el I.V.A. $16.00 La mayor parte de las dependencias no habían manejado el IVA en los recibos oficiales, que era el documento de facturación de nuestra Universidad, actualmente ya es formalmente un CFD pero para el fin

Más detalles

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE

PRUEBAS DE SOFTWARE TECNICAS DE PRUEBA DE SOFTWARE PRUEBAS DE SOFTWARE La prueba del software es un elemento crítico para la garantía de la calidad del software. El objetivo de la etapa de pruebas es garantizar la calidad del producto desarrollado. Además,

Más detalles

Procesos. Planificación del Procesador.

Procesos. Planificación del Procesador. Procesos. Planificación del Procesador. Sistemas Operativos. Tema 2. Concepto de Proceso. Una definición sencilla: Programa en ejecución. Entidad pasiva Programa RECURSOS CPU Memoria Ficheros Dispositivos

Más detalles

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS.

1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS. CREANDO UNIDADES VIRTUALES DE CD Y DVD CON DAEMON TOOLS 1.- DESCRIPCIÓN Y UTILIDAD DEL SOFTWARE DAEMON TOOLS. Daemon Tools es una herramienta que permite a los usuarios simular una unidad o varias unidades

Más detalles

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

BPMN Business Process Modeling Notation

BPMN Business Process Modeling Notation BPMN (BPMN) es una notación gráfica que describe la lógica de los pasos de un proceso de Negocio. Esta notación ha sido especialmente diseñada para coordinar la secuencia de los procesos y los mensajes

Más detalles

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW):

INFORMÁTICA IE. Términos a conocer y conceptos básicos. World Wide Web (WWW): INFORMÁTICA IE MÓDULO INTERNET Términos a conocer y conceptos básicos World Wide Web (WWW): Digamos, simplemente, que es un sistema de información, el sistema de información propio de Internet. Sus características

Más detalles

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008

SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 SIMM: TEORÍA DE LOS S.O. I.E.S. JUAN DE LA CIERVA CURSO 2007/2008 1.- INTRODUCCIÓN A LOS PROCESOS 1.1.- Concepto 1.2.- Composición y estructura 1.3.- Estados y transiciones 2.- COMUNICACIÓN ENTRE PROCESOS

Más detalles

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático Programa de Almacenamiento y Recuperación de Datos Automático CONSEJERÍA DE EDUCACIÓN Dirección General de Participación e Innovación Educativa Centro de Gestión Avanzado de Centros TIC Fecha: 20/04/10

Más detalles

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas.

Estas visiones de la información, denominadas vistas, se pueden identificar de varias formas. El primer paso en el diseño de una base de datos es la producción del esquema conceptual. Normalmente, se construyen varios esquemas conceptuales, cada uno para representar las distintas visiones que los

Más detalles

Introducción a las redes de computadores

Introducción a las redes de computadores Introducción a las redes de computadores Contenido Descripción general 1 Beneficios de las redes 2 Papel de los equipos en una red 3 Tipos de redes 5 Sistemas operativos de red 7 Introducción a las redes

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Una vez que tengamos el padrón de un determinado tributo con todos sus datos actualizados, podemos generar los recibos de ese padrón.

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

GENERACIÓN DE ANTICIPOS DE CRÉDITO

GENERACIÓN DE ANTICIPOS DE CRÉDITO GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos

Más detalles

MANUAL BASICO DE WEBEX

MANUAL BASICO DE WEBEX MANUAL BASICO DE WEBEX Webex es un servicio de web conferencias y soluciones de colaboración, lo que significa que nos permite crear una conferencia por internet en la cual además de vernos los unos a

Más detalles

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON)

3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1 INGENIERIA DE SOFTWARE ORIENTADO A OBJETOS OOSE (IVAR JACOBSON) 3.1.1 Introducción Este método proporciona un soporte para el diseño creativo de productos de software, inclusive a escala industrial.

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Fuente: http://www.kzgunea.net

Fuente: http://www.kzgunea.net APRENDE A NAVEGAR SERVICIOS DE INTERNET Internet es como el mercado del pueblo en día de feria. En el mercado los puestos se organizan por secciones: por un lado la fruta, por otro las hortalizas, por

Más detalles

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES

GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES GUÍA TÉCNICA PARA LA DEFINICIÓN DE COMPROMISOS DE CALIDAD Y SUS INDICADORES Tema: Cartas de Servicios Primera versión: 2008 Datos de contacto: Evaluación y Calidad. Gobierno de Navarra. evaluacionycalidad@navarra.es

Más detalles

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199

Hostaliawhitepapers. Las ventajas de los Servidores dedicados. www.hostalia.com. Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 Las ventajas de los Servidores dedicados Cardenal Gardoki, 1 48008 BILBAO (Vizcaya) Teléfono: 902 012 199 www.hostalia.com A la hora de poner en marcha una aplicación web debemos contratar un servicio

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

Gestión de la Configuración

Gestión de la Configuración Gestión de la ÍNDICE DESCRIPCIÓN Y OBJETIVOS... 1 ESTUDIO DE VIABILIDAD DEL SISTEMA... 2 ACTIVIDAD EVS-GC 1: DEFINICIÓN DE LOS REQUISITOS DE GESTIÓN DE CONFIGURACIÓN... 2 Tarea EVS-GC 1.1: Definición de

Más detalles

Arquitectura de Aplicaciones

Arquitectura de Aplicaciones 1 Capítulo 13: Arquitectura de aplicaciones. - Sommerville Contenidos del capítulo 13.1 Sistemas de procesamiento de datos 13.2 Sistemas de procesamiento de transacciones 13.3 Sistemas de procesamiento

Más detalles

Capítulo VI. Diagramas de Entidad Relación

Capítulo VI. Diagramas de Entidad Relación Diagramas de Entidad Relación Diagramas de entidad relación Tabla de contenido 1.- Concepto de entidad... 91 1.1.- Entidad del negocio... 91 1.2.- Atributos y datos... 91 2.- Asociación de entidades...

Más detalles

Arquitectura de sistema de alta disponibilidad

Arquitectura de sistema de alta disponibilidad Mysql Introducción MySQL Cluster esta diseñado para tener una arquitectura distribuida de nodos sin punto único de fallo. MySQL Cluster consiste en 3 tipos de nodos: 1. Nodos de almacenamiento, son los

Más detalles

TEMA 9: EFECTOS COMERCIALES A COBRAR

TEMA 9: EFECTOS COMERCIALES A COBRAR TEMA 9: EFECTOS COMERCIALES A COBRAR 1- LOS EFECTOS COMERCIALES A COBRAR 2- LOS EFECTOS COMERCIALES EN CARTERA 3- EL DESCUENTO DE EFECTOS 4- LOS EFECTOS COMERCIALES EN GESTIÓN DE COBRO 5- LOS EFECTOS COMERCIALES

Más detalles

Capítulo IV. INTERBLOQUEO E INANICIÓN

Capítulo IV. INTERBLOQUEO E INANICIÓN Capítulo IV. INTERBLOQUEO E INANICIÓN Interbloqueo: [MAEKAMA] Se define como el bloqueo permanente de un conjunto de procesos que compiten por los recursos del sistema o bien se comunican unos con otros.

Más detalles

hay alguien ahi? por Marcelino Alvarez maralvilla@gmail.com

hay alguien ahi? por Marcelino Alvarez maralvilla@gmail.com hay alguien ahi? por Marcelino Alvarez maralvilla@gmail.com Un repaso a las estadísticas de lectura tanto de la página web como de la revista digital, para ver si alguien se acuerda de nosotros. Ya podemos

Más detalles

Ecuaciones de primer grado con dos incógnitas

Ecuaciones de primer grado con dos incógnitas Ecuaciones de primer grado con dos incógnitas Si decimos: "las edades de mis padres suman 120 años", podemos expresar esta frase algebraicamente de la siguiente forma: Entonces, Denominamos x a la edad

Más detalles

ARTÍCULOS NIIF 5 ACTIVOS NO CORRIENTES MANTENIDOS PARA LA VENTA Y OPERACIONES DISCONTINUAS. Por C.P.C. GERARDO QUEZADA* gerardoquezada@bdomexico.

ARTÍCULOS NIIF 5 ACTIVOS NO CORRIENTES MANTENIDOS PARA LA VENTA Y OPERACIONES DISCONTINUAS. Por C.P.C. GERARDO QUEZADA* gerardoquezada@bdomexico. ARTÍCULOS www.bdomexico.com 16 de Mayo de 2011 NIIF 5 ACTIVOS NO CORRIENTES MANTENIDOS PARA LA VENTA Y OPERACIONES DISCONTINUAS Por C.P.C. GERARDO QUEZADA* gerardoquezada@bdomexico.com Cuántas veces nos

Más detalles

CAPÍTULO 3 Servidor de Modelo de Usuario

CAPÍTULO 3 Servidor de Modelo de Usuario CAPÍTULO 3 Servidor de Modelo de Usuario Para el desarrollo del modelado del estudiante se utilizó el servidor de modelo de usuario desarrollado en la Universidad de las Américas Puebla por Rosa G. Paredes

Más detalles

Base de datos en la Enseñanza. Open Office

Base de datos en la Enseñanza. Open Office 1 Ministerio de Educación Base de datos en la Enseñanza. Open Office Módulo 1: Introducción Instituto de Tecnologías Educativas 2011 Introducción Pero qué es una base de datos? Simplificando mucho, podemos

Más detalles

Selección de los puntos de montaje

Selección de los puntos de montaje PARTICIONES PARA LINUX Selección de los puntos de montaje Tanto para aquellos que vayan a instalar ahora, como para quienes quieran cambiar el tamaño de una partición o formatear este apunte (resumen de

Más detalles

Creación y administración de grupos de dominio

Creación y administración de grupos de dominio Creación y administración de grupos de dominio Contenido Descripción general 1 a los grupos de Windows 2000 2 Tipos y ámbitos de los grupos 5 Grupos integrados y predefinidos en un dominio 7 Estrategia

Más detalles

Curso de PHP con MySQL Gratis

Curso de PHP con MySQL Gratis Curso de PHP con MySQL Gratis Introducción Este mini curso o mini tutorial de PHP le ayudará a realizar cualquier sistema para que pueda insertar uno o varios registros a una base de datos con MySQL, este

Más detalles

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico) MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN

Más detalles

CONDICIONES GENERALES DEL SERVICIO PROCONSI S.L.

CONDICIONES GENERALES DEL SERVICIO PROCONSI S.L. PROCONSI S.L. Fecha: 14/10/2015 Índice Índice... 1 Condiciones generales del Servicio ofrecido por PROCONSI... 2 Condiciones generales y su aceptación... 2 Objeto... 2 Vigencia... 2 Descripción del Servicio...

Más detalles

MANUAL DE USUARIO INTRANET

MANUAL DE USUARIO INTRANET MANUAL DE USUARIO INTRANET Partes de la Intranet. La intranet se divide en varias partes claramente diferenciadas, que facilitan la navegación a través de la misma. A) Cabecera Es la parte estática de

Más detalles

Uso de Visual C++ Pre-Practica No. 3

Uso de Visual C++ Pre-Practica No. 3 Pre-Practica No. 3 Uso de Visual C++ Microsoft Visual C++ 2010 es una versión de Visual Studio específica para el lenguaje de programación C++. Es un entorno de desarrollo muy completo y profesional. Por

Más detalles

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario

Departamento CERES Área de Tarjetas Inteligentes Manual de Usuario 14 CORREO SEGURO. Hay aplicaciones de correo que permiten enviar y recibir correos cifrados y firmados digitalmente utilizando criptografía. Estas operaciones garantizan el intercambio seguro de información,

Más detalles

Tutorial: Primeros Pasos con Subversion

Tutorial: Primeros Pasos con Subversion Tutorial: Primeros Pasos con Subversion Introducción Subversion es un sistema de control de versiones open source. Corre en distintos sistemas operativos y su principal interfaz con el usuario es a través

Más detalles

GedicoPDA: software de preventa

GedicoPDA: software de preventa GedicoPDA: software de preventa GedicoPDA es un sistema integrado para la toma de pedidos de preventa y gestión de cobros diseñado para trabajar con ruteros de clientes. La aplicación PDA está perfectamente

Más detalles

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS

Instalación y mantenimiento de servicios de Internet. U.T.3.- Servicio DNS Instalación y mantenimiento de servicios de Internet U.T.3.- Servicio DNS 1 Qué es el servicio DNS? A los usuarios de Internet les resulta complicado trabajar con direcciones IP, sobre todo porque son

Más detalles

Con esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis.

Con esta nueva versión, si un artículo que está incluido dentro de un Paquete de Ventas tiene precio 0,00, significará gratis. NOVEDADES Y MEJORAS Continuando con nuestra política de mejora, innovación y desarrollo, le presentamos la nueva versión 9.50 de datahotel que se enriquece con nuevas funcionalidades que aportan soluciones

Más detalles

Programa de Ayuda EMCS Instalación Versión SQL Server Versión 1.0 - Marzo 2010

Programa de Ayuda EMCS Instalación Versión SQL Server Versión 1.0 - Marzo 2010 Programa de Ayuda EMCS Instalación Versión SQL Server Versión 1.0 - Marzo 2010 Programa de Ayuda EMCS Instalación Versión SQL Server Tabla de Contenido 1 INSTALACIÓN EN EL SERVIDOR...3 1.1 CREAR LA BASE

Más detalles

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante

A continuación resolveremos parte de estas dudas, las no resueltas las trataremos adelante Modulo 2. Inicio con Java Muchas veces encontramos en nuestro entorno referencias sobre Java, bien sea como lenguaje de programación o como plataforma, pero, que es en realidad Java?, cual es su historia?,

Más detalles

UNIDAD 1. LOS NÚMEROS ENTEROS.

UNIDAD 1. LOS NÚMEROS ENTEROS. UNIDAD 1. LOS NÚMEROS ENTEROS. Al final deberás haber aprendido... Interpretar y expresar números enteros. Representar números enteros en la recta numérica. Comparar y ordenar números enteros. Realizar

Más detalles

GESTOR DE DESCARGAS. Índice de contenido

GESTOR DE DESCARGAS. Índice de contenido GESTOR DE DESCARGAS Índice de contenido 1. Qué es DocumentosOnLine.net?...2 2. Qué es el Gestor de Descargas?...3 3.Instalación / Configuración...5 4.Descarga de Documentos...9 5.Búsqueda / Consulta de

Más detalles

Construcción colaborativa de mapas conceptuales o Visualizaciones gráficas a través de la conexión Cmaptool y CmapServer del Grupo EAV (UPB)

Construcción colaborativa de mapas conceptuales o Visualizaciones gráficas a través de la conexión Cmaptool y CmapServer del Grupo EAV (UPB) Construcción colaborativa de mapas conceptuales o Visualizaciones gráficas a través de la conexión Cmaptool y El procedimiento: 1. Abra el programa Cmaptools. Si no lo ha instalado recuerde que puede descargarlo

Más detalles

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS

INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS INTRODUCCIÓN A LOS SISTEMAS GESTORES DE BASE DE DATOS AUTORÍA JOSEFA PÉREZ DOMÍNGUEZ TEMÁTICA NUEVAS TECNOLOGIAS ETAPA CICLOS FORMATIVOS DE GRADO SUPERIOR DE INFORMÁTICA Resumen En esta publicación se

Más detalles

un programa concurrente

un programa concurrente Introducción un programa concurrente asumimos que tengamos un programa concurrente que quiere realizar acciones con recursos: si los recursos de los diferentes procesos son diferentes no hay problema,

Más detalles

Resumen. Funcionamiento. Advertencia

Resumen. Funcionamiento. Advertencia Resumen Módulo: Librería: IMPEXP.DLL Acoplable a: FactuCont 5, versiones monopuesto y red Descripción: Permite exportar datos de documentos, clientes, proveedores y artículos en un solo fichero para poder

Más detalles

Tema 1. Conceptos fundamentales de los Sistemas Operativos

Tema 1. Conceptos fundamentales de los Sistemas Operativos Tema 1. Conceptos fundamentales de los Sistemas Operativos 1. Introducción a los Sistemas Operativos. 1. Concepto de Sistema Operativo. Niveles del software. 2. Funciones principales de un Sistema Operativo.

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles