PVMTB (Parallel Virtual Machine Toolbox)
|
|
- Celia Martin Olivera
- hace 8 años
- Vistas:
Transcripción
1 PVTB (Parallel Virtual achine Toolbox) Javier Fernández Baldomero Departamento de Arquitectura y Tecnología de Computadores Universidad de Granada, GRANADA jfernand@ugr.es Resumen Los nuevos tipos de datos a partir de ATLAB 5.0 son muy apropiados para realizar una interfaz EX elegante entre ATLAB y el entorno PV (v3.4-beta7). Esta Toolbox, PVTB, puede ser utilizada como herramienta docente para explicar PV de forma interactiva, ahorrando al estudiante el esfuerzo de editar, compilar y ejecutar separadamente programas con el objetivo de ejercitar cada llamada de la librería. También sirve de base para construir la Toolbox, un Entorno de Cálculo Científico (SCE: Scientific Computing Environment) orientado a tareas paralelizables de alta granularidad. Palabras Clave: Computación Paralela, Paso de ensajes, ATLAB, PV, PVTB, SCE. 1 INTRODUCCIÓN 1.1 LIBRERÍAS DE PASO DE ENSAJES El modelo de comunicación y sincronización de tareas mediante paso de mensajes ha sido profusamente implementado a diversos niveles [1]. En Red de Area Local (LAN), el programador de aplicaciones paralelas puede escoger entre multitud de entornos, de entre los cuales destacan: Parallel Virtual achine [4] [5] [22] Es el más popular en el entorno académico, y estándar de-facto [1 3.4], probablemente debido al cuidado entorno de control de ejecución y otras prestaciones [1 3.5]. Como características principales, sus autores destacan [4 2 p.2-4] [5 2 p.11] [22] que es portable, soporta interoperación en conjunto heterogéneo de ordenadores, es escalable hasta cientos de máquinas, permite modificación dinámica de la configuración, soporta grupos dinámicos de tareas, envío de señales, múltiples buffers de mensajes y trazado, y dispone de ganchos (hooks) para soportar esquemas de tolerancia a fallos y modificar la política de despacho de tareas. essage Passing Interface [6] [16] [17] [18] El estándar PI se concentra en definir la sintaxis y semántica de las rutinas de paso de mensajes que serían de utilidad a los usuarios de procesadores masivamente paralelos (PP) [5 1 p.8]. El objetivo es proveer a los fabricantes con un conjunto claramente definido de rutinas que puedan implementar eficientemente en su arquitectura, basándose en soporte hardware específico. No define ningún entorno software para desarrollo de aplicaciones paralelas, manejo de tareas, configuración del ulti- Computador ó E/S paralela. Algunas implementaciones del estándar PI son LA (Local Area ulticomputer) [8] [9], y PICH (PI Chameleon) [19]. Los autores de PV sugieren que el propio entorno PV podría portarse a PI para explotar la eficiente implementación de las rutinas básicas que éste ofrece [5 1 p.8]. Los autores de LA informan de que el propio PV puede portarse a Trollius/LA, igual que se ha hecho con PI [8 1 p.7]. 1.2 TOOLBOXES ATLAB PARA PASO DE ENSAJES Cleve oler menciona en su columna [15] los tres motivos básicos (en 1995) para no haber continuado el desarrollo de una versión paralela de ATLAB odelo de memoria Granularidad Perspectiva comercial En un Intel ipsc de 128 nodos con 0.5B de memoria distribuida cada uno, la conclusión resultó ser que se tardaba más tiempo en distribuir y reensamblar los datos que en el propio cálculo, al menos para los tamaños de matriz que cabían en memoria del host. El siguiente intento reveló un problema más grave. En el Ardent Titan, con memoria compartida, se puso de manifiesto que una sesión típica de ATLAB emplea más tiempo en tareas no
2 paralelizables (intérprete y visualización) que en paralelizables (cálculo). La conclusión es que sólo para tareas de alta granularidad merece la pena paralelizar el cálculo en el lugar obvio: el bucle externo. Realizar los cambios en ATLAB para manejar esto transparentemente no presenta interés comercial para ATLAB, ya que la inmensa mayoría de usuarios preferiría que los esfuerzos se dedicaran a optimizar la versión monoprocesador. Sin embargo, no debe ser difícil para un usuario final incorporar estos cambios en su propio código. Bajo esta perspectiva se han desarrollado multitud de Toolboxes que facilitan dicha paralelización de bucle externo lo más transparentemente posible. Algunas de ellas son Paralize [10], Enero 1999 Usa sistema de ficheros compartido. Los datos deben ser matrices 3D que se reparten en slices 2D. serve.m anota máquina como servidor paralize.m anota comando, recolecta resultados PI [10], arzo 1999 Interfaz parcial de PI. aneja las instancias ATLAB como engines. Parallel atlab Interface (PI) Toolbox. Version 1.0 Beta-2 Written by Daniel D. Lee (ddlee@physics.lucent.com), 2/99. Interface functions. PI_Init - Start parallel atlab processes. PI_Finalize - Close parallel atlab processes. PI_Size - Number of active processes. PI_Send - Send matrices to specific process. PI_Recv - Receive matrices from specific process. PI_Bcast - Broadcast matrices to all processes. PI_Eval - Execute string on a remote process. PI_IEval - Non-blocking execute on a remote process. PI_Beval -Broadcast nonblocking exec on all processes. PI_Scatter - Split matrix and send to remote processes. PI_Gather - Get matrices from processes and concat. PI_Reduce - Combine matrix from different processes. engines - Default commands to start processes. Low-level engine routines. engopen - Start a atlab engine session. engclose - Quit a atlab engine session. enggetarray - Copy variables from engine's workspace. engputarray - Put variables into engine's workspace. engevalstring - Evaluate expression in string. engievalstring - Non-blocking evaluation of string TCPIP [10], Abril 1999 Interfaz básica para conexión TCP/IP Unix. Requiere que el usuario especifique puerto y dirección. Permite enviar strings y ficheros. No establece mecanismo de ejecución remota. TCPIP Toolbox Version 1.0 Beta Copyrigtht (C) Peter Rydesäter, itthögskolan, SWEDEN tcpip_close Closes an open tcpip connection. tcpip_open Opens a new tcpip connection. tcpip_read Reads an array of bytes from pipe. tcpip_readln Reads a line of chars if their is a complete. tcpip_sendfile Sends a file throw connection to "getfile" tcpip_getfile Receives a data from sending "tcpip_sendfile" tcpip_sendvar Send matlab variable. tcpip_getvar Get matlab variable. tcpip_servopen Waits for connection from other host-port. tcpip_status Returns status of open connection. tcpip_viewbuff Returns whats in receiving buffer tcpip_write Sends an array of bytes to connection Tath [2], [10], Agosto 1997 Interfaz Ptolemy-athematica-atlab. C++ y Tcl requeridos. Permite arrancar procesos ATLAB y evaluar expresiones. aneja los procesos ATLAB como engines. matlab end - terminate a session with ATLAB matlab eval script - evaluate a ATLAB script and print result matlab get name?script? - eval script, get the named matrix matlab getpairs name?script? - eval script,get named matrix matlab send script - evaluate script and suppress the output matlab set name rows cols real?imag? - set real, imag. values matlab start -start a new ATLAB session matlab status - status of the Tcl/ATLAB connection matlab unset name - unset the named ATLAB matrix PT-Toolbox [7], Abril 1995 Interfaz parcial de PV3.3.7 (unas 20 llamadas). ATLAB Parallel Environment (PT) commands. Extension based on PV. Version 1 09-April-95 Configuring the Parallel Environment (PE). pt_addengines - Add Engine daemons to the current PE. pt_deleteengines - Delete Engine daemons from current PE. pt_hosts - Obtain host names of Engine daemons. pt_status - Obtain wids of current Engine daemons. pt_host2engs - Obtain wids of daemons in given host. pt_erreset - Reset the Error daemon. pt_shutdown - Shutdown the PE. anipulating wids. pt_mywid - Obtain worker id of this engine/session. pt_spawn - Spawn an m-file (worker) in a engine. pt_exit - Exit the PE. Sending and Receiving. pt_send - Send a matrix to a engine/session. pt_mcast - Send a matrix to many engine/sessions. pt_recv - Receive a matrix from a engine/session. pt_trecv - Timeout receive from a engine/session. Forming groups. pt_joingroup - Enroll engine/session into a group. pt_lvgroup - Unroll engine/session from a group. pt_getinst - Get wid of a member of a group. pt_gsize - Get size of a group. pt_getwid - Get wid of a specific member of a group. pt_bcast - Broadcast msg to all members of a group. pt_barrier - Block member of a group- wait all others. pt_kill - Kill a task in PV pt_cleanup - Attempts to clear PE. pt_sendsig - Send a signal to any task DP-Toolbox [20], [21], arzo 1999 Interfaz parcial de PV (alrededor de 50 llamadas). ultiplataforma y ultiversión (ATLAB 4 ó 5). Incluye entorno de alto nivel (DP). Distributed and Parallel Toolbox - Low Level PV Interface. Version 1.4 PV Control.
3 pvme_is - Test whether PV is running.... pvme_halt - Shuts down the entire PV system. Setting and Getting Options. pvm_getopt - Return various libpvm options. pvm_setopt - Set various libpvm options. Process Control. pvm_spawn - Start new PV process.... pvm_exit - Leave PV. Information. pvm_mytid - Return tid of process.... pvm_version - Return PV version. Signaling. pvm_sendsig - Send signal to PV process. pvm_notify - Request notification of PV event. essage Buffers. pvm_initsend - Clear default send buffer, specify encoding.... pvm_freebuf - Dispose a message buffer. Packing / Unpacking Data. pvm_pkdouble - Pack data double into active send buffer. pvm_upkdouble - Unpack data dbl from active recv buffer. pvme_pkarray - Pack 5 array pvme_upkarray - Unpack 5 array pvme_upkarray_name - Unpack only array name. pvme_upkarray_rest - Unpack rest of array. Sending and Receiving. pvm_send - Send data in active message buffer.... pvm_nrecv - Non-blocking receive. aster Pvmd Database. pvm_putinfo - Store message in global mailbox. pvm_recvinfo - Retrieve message from global mailbox. pvm_getmboxinfo - Return contents of global mailbox. pvm_delinfo - Delete message in global mailbox. atlab Extensions. persistent2 - anaging persistent variables. putenv - Change or add an environment variable. unsetenv - Delete an environment variable. selectstdin - select(2) on stdin ultiatlab [14], [23], Nov Incluye entorno de alto nivel basado en PICH. Desarrollado en colaboración con The athworks. ultiatlab (ATLAB on multiple processes). ost commands can be run only on the interactive process (0) Commands marked by * can be run anywhere (0:Nproc-1). Starting and stopping ultiatlab. Start - Initialize remote processes, ultiatlab session. Interrupt-Interrupt ultiatlab processes during comput. Abort - Abort ultiatlab session remaining. Quit - Terminate remote processes, end ultiatlab sess. Process arrangement and identification. *ID - Task ID of a process. *Nproc - Total number of ultiatlab processes active. Grid - Arrange the processes in a grid. *Gridsize - Dimensions of the grid of processes. *Coord - Coordinates of a process in the grid. Running commands on multiple processes. Eval - Evaluate a command on one or more processes. Communication. *Send - Send data from one process to another. *Recv - Receive data sent from another process. *Probe - Determine if communication has been completed. *Barrier - Synchronize processes. Put -Put data from interactive process onto remote processes. Get - Put data from remote process onto interactive process. Bcast - Transmit data to all processes using a tree structure. Distribution of data. Distribute - Distribute matrix according to Coord. Collect-Coll.matrix according to mask created by Distribute. Shift - Shift data between processes Arithmetic. ax - Find pointwise max. of matrices on several processes. in - Find pointwise min. of matrices on several processes. Sum - Find pointwise sum of matrices on several processes. Prod - Find pointwise prod.of matrices on several processes. Graphics. Window - Arrange figs in grid according to function parms. ResetWindow - Reset window position to ATLAB default. Refresh - Repaint all current figures PVTB [3], Junio 1999 Esta Toolbox, PVTB, es una interfaz completa de PV v3.4-beta7 bajo ATLAB 5.x y Unix, similar a DP-Toolbox. Ofrece documentación sobre cómo enlazar dinámicamente las librerías PV al objeto de reducir ocupación en disco y memoria. Reutiliza código intensivamente mediante la clasificación de las llamadas PV según el patrón de llamada. Es ideal como herramienta didáctica para enseñar PV. Es capaz de empaquetar y transmitir todos los tipos de datos ATLAB existentes, así como de recibir mensajes de notificación del propio daemon PV. Soporta incluso la realización de ganchos PV del tipo pvm_reg_hoster/tasker/rm. También se ha programado un entorno de alto nivel (), que evita al usuario final la necesidad de aprender PV. Dicho entorno es similar al ofrecido por DP-Toolbox ó ultiatlab. 1.3 ALICIENTES DE ATLAB 5.x PARA IPLEENTAR UNA TOOLBOX PV A partir de la versión 5.0 ATLAB incorpora mejoras, tanto en la API como en los tipos de datos soportados, que facilitan significativamente la programación sistemática de una Toolbox PV. Las más relevantes a este propósito son [11 3-2]: Auto-diagnóstico en la API Soporte para Depuración y Optimización Estructuras atrices de Celdas (cell-arrays) Número variable de argumentos para funciones (varargin) [ ]
4 En la versión 5.3 aparece el soporte para tipos de datos enteros [13 1-2]. La práctica totalidad de llamadas PV devuelven un valor entero. En esta Toolbox se ha optado por promocionar dicho int a double. ATLAB no puede operar con enteros salvo con el operador de suma, y las operaciones sobre ellos (p.ej: find) producen resultado double [13 1-6]. No obstante, sí resulta interesante utilizar las estructuras en las llamadas PV que devuelven información de diversos tipos, especialmente teniendo en cuenta que todas las variables usadas quedan anotadas en el espacio de trabajo (workspace); esto hace interesante poder reunir variables relacionadas lógicamente entre sí en una sola variable que las agrupe (estructura), en lugar de tenerlas desordenadas en el espacio de trabajo. Asimismo, las matrices de celdas tienen la ventaja de agrupar un número indeterminado de elementos de tipos cualesquiera. Este tipo de datos es el ideal para emular el tipo char**. 2 IPLEENTACION EX 2.1 JUSTIFICACIÓN Se pretende realizar llamadas a la librería PV desde el entorno interactivo de ATLAB. La única manera posible es desde un programa C, que bajo ATLAB debe ser un fichero EX. Los ficheros EX son enlazados dinámicamente (dynamic link) para que el intérprete del entorno ATLAB pueda cargarlos y ejecutarlos [12 2]. Cada llamada PV se implementa como un fichero EX independiente. La función EX traduce (y a veces reordena) los argumentos especificados desde ATLAB al tipo de datos requerido por la llamada antes de proceder a la llamada en sí, y traduce la información devuelta de manera que sea accesible desde ATLAB. 2.2 OPCIONES DE DISEÑO En algunos casos ha sido interesante modificar el patrón de argumentos de una llamada. La función EX resultante no es idéntica por lo tanto a la original en PV. Cuando esto se ha hecho ha sido motivado por alguna de las siguientes razones: Coerción, cambio o promoción de tipo Como se explicó previamente, en la llamada se coerce double int y en la vuelta se promociona int double. Similar trato reciben los arrays de strings, cambiados a cellarrays bajo ATLAB (pvm_spawn, pvm_start_pvmd). Las estructuras C son respetadas como estructuras ATLAB en las llamadas pvm_config,pvm_tasks,pvm_reg_rm., pvm_getminfo, pvm_getmboxinfo, pvm_setminfo. Además, se crea una estructura ATLAB para agrupar los enteros devueltos por pvm_bufinfo y pvm_precv. La struct timeval se cambia a double bajo pvm_trecv y select(), por ser más cómodo para el usuario ATLAB especificar un tiempo como double, pero se respeta bajo pvm_hostsync, por la semántica especial que tiene para el caso de segundos negativos. Bajo pvm_catchout resulta imprescindible cambiar y promocionar el argumento FILE* a int/double para su uso bajo ATLAB. La promoción se realiza también rutinariamente bajo pvm_getfds y select(). En el manejo de máscaras (pvm_gettmask, pvm_settmask, TEV_ASK_*) se ha cambiado mask de tipo pvmtmask a string ATLAB. Los argumentos who y kind se han cambiado de tipo int a string, para que el usuario no necesite recordar los valores numéricos y pueda usar los símbolos PV. Varios argumentos de retorno El lenguaje C permite que una función devuelva un único valor de retorno. Para devolver varios, se suele recurrir a Devolver un puntero a array ó estructura conteniendo dichos valores Pasar punteros a argumentos adicionales (paso por referencia), de manera que a la vuelta contengan los valores de retorno deseados PV usa ambas técnicas. ATLAB permite devolver varios argumentos de retorno. Se ha seguido el criterio de simplificar la llamada trasladando los argumentos por referencia a la parte izquierda (left-hand-side, plhs[]). Las estructuras C son devueltas como estructuras ATLAB. Esta técnica se usa bajo: addhosts, delhosts, gettmask, config, tasks, getfds, reg_rm, hostsync, siblings, unpack, upkint, upkstr, psend, precv, bufinfo, getminfo, getmboxinfo, tickle Argumentos inferibles Una de las características más útiles de ATLAB como lenguaje de rápido prototipado de sistemas es la ausencia de
5 declaraciones de tipo. Las variables pueden alterar dinámicamente su tamaño y número de dimensiones, y estos atributos pueden ser consultados en cualquier instante. El lenguaje C no fija ningún método para indicar el tamaño de un array. Así, se suele marcar el fin de un string (char*) mediante un carácter ASCII NULL se indica explícitamente el tamaño de una matriz ó vector en su declaración (matriz[]) si una función maneja matrices de diversos tamaños, se suele indicar éste como parámetro adicional (tantos como dimensiones) PV usa todas las técnicas citadas. ATLAB almacena como atributo de cada variable su tamaño y dimensionado actual, de manera que puede ser consultado, haciendo superfluos cualesquiera de los métodos anteriores. Esto se observa en las llamadas: start_pvmd, addhosts, delhosts, spawn, notify, mcast, pkint, upkint, psend, reduce, scatter, gather. A menudo también PV devuelve un int indicando el tamaño de un array. Este argumento se suele respetar, ya que suele ser de interés para el usuario. Esto se hace bajo: getfds, siblings, getmboxinfo, config, tasks 2.3 CONVENIENCIA DE USAR ENLACE DINÁICO PARA LA LIBRERÍA PV Tradicionalmente, PV se ofrece como librería estática, libpvm3.a, libgpvm3.a. Este estilo de enlace se manifiesta en lo siguiente Objetos estáticos: no requieren ningún modificador especial. Pueden optar entre el modo optimizado (-O) y el de depuración (-g). Librerías estáticas: suelen denominarse lib <nombre>.a. Los objetos que la componen están archivados mediante la utilidad ar. Se les suele aplicar la utilidad ranlib para producir un índice que acelera el enlace. Referencia a librería estática: puede indicarse con la opción l<nombre>, ó mencionando el fichero ar, lib<nombre>.a. PV utiliza este último método ocasionalmente. Los ficheros EX deben ser enlazados dinámicamente si han de ser llamados desde ATLAB [12 2]. Usando enlace dinámico también para la propia librería PV, los programas EX resultantes son de menor tamaño en disco que si se enlazaran estáticamente, con el consiguiente ahorro de disco tras la instalación, y de memoria durante la ejecución en un Sistema ultiusuario en el que varios de ellos utilicen la Toolbox simultáneamente (p.ej, una sesión de prácticas). La Toolbox sólo requiere la librería de PV libpvm3 y el programa daemon pvmd3. Si se usan grupos, se requieren también la librería correspondiente libgpvm3 y el programa servidor de grupos pvmgs. Adicionalmente, durante la etapa de depuración es útil disponer de la consola pvm, que a su vez requiere la librería de trazado libpvmtrc. Las modificaciones realizadas siguen los siguientes criterios: Objeto dinámico: el compilador GNU gcc requiere el modificador fpic para producir código independiente de posición, como es necesario para producir librerías dinámicas y enlazar dinámicamente. Librerías dinámicas: suelen denominarse lib<nombre>.so. El compilador gcc requiere el modificador -shared para producir ficheros objeto compartibles que puedan ser posteriormente enlazados con otros objetos para formar ejecutables, como es el caso de las librerías dinámicas. Es costumbre incorporar a la librería el nombre oficial de la misma; nombre bajo el cual la buscarán los ejecutables, lo cual se hace mediante la opción soname. Referencia a librería dinámica: se han sustituido las referencias de la forma lib<nombre>.a a l<nombre>, única forma de referencia válida para dinámicas. Orden de dependencias: en alguna ocasión una librería no ha sido aún copiada al directorio donde se encontraría mediante l cuando ya la necesita algún programa (pvm_gstat) para su enlace. Se ha adelantado la dependencia de manera que la librería esté copiada para cuando se enlaza el ejecutable. Los ficheros afectados, y librerías y programas generados por ellos, son: $PV_ROOT/src/akefile.aimk pvmd3, libpvm3.so $PV_ROOT/pvmgs/akefile.aimk libgpvm3.so, pvmgs, pvm_gstat,pvmgroups $PV_ROOT/tracer/akefile.aimk libpvmtrc.so, tracer, trcsort $PV_ROOT/console/akefile.aimk pvm 2.4 LISTA DE FUNCIONES Se adjunta la tabla 1 enumerando las llamadas PV con el patrón de llamada bajo ATLAB y bajo PV, según los criterios previamente expuestos. La columna ESQ indica el esquema seguido por la llamada, tal y como se explica en [3].
6 Tabla 1: Llamadas PV. ESQ ATLAB PV Control de la áquina Virtual Paralela SP info = pvm_start_pvmd ({ arg...}, block) int info = pvm_start_pvmd (int argc, char**argv, int block) H_9 [numh, infos] = pvm_addhosts ( host...) int info = pvm_addhosts (char**hosts, int nhost, int*infos) H_9 [numh, infos] = pvm_delhosts ( host...) int info = pvm_delhosts (char**hosts, int nhost, int*infos) SP [numt, tids] = pvm_spawn ( task,{ arg...}, flag, where,ntask) int numt = pvm_spawn (char*task, char**argv, int flag, char*where, int ntask, int*tids) H_2 info = pvm_kill (tid) int info = pvm_kill (int tid) H_4 info = pvm_sendsig (tid, signum) int info = pvm_sendsig (int tid, int signum) SP info = pvm_notify (what, msgtag, (cnt tids) ) int info = pvm_notify (int what, int msgtag, int cnt, int*tids) H_1 info = pvm_exit int info = pvm_exit (void) H_1 info = pvm_halt int info = pvm_halt (void) SP info = pvm_catchout [ (fildes) ] int info = pvm_catchout (FILE*ff) H_2 val = pvm_getopt (what) int val = pvm_getopt (int what) H_4 oldval = pvm_setopt (what, val) int oldval = pvm_setopt (int what, int val) SK [info, mask] = pvm_gettmask ( who ) int info = pvm_gettmask (int who, pvmtmask mask) SK info = pvm_settmask ( who, mask) int info = pvm_settmask (int who, pvmtmask mask) SK TEV_ASK_INIT (mask) TEV_ASK_INIT (mask) SK TEV_ASK_SET (mask, kind ) TEV_ASK_SET (mask, kind) SK TEV_ASK_UNSET (mask, kind ) TEV_ASK_UNSET (mask, kind) SK TEV_ASK_CHECK (mask, kind ) TEV_ASK_CHECK (mask. kind) Información de la áquina Virtual Paralela SP [nhost, narch, hostinfo] = pvm_config int info = pvm_config (int*nhost, int*narch, struct pvmhostinfo**hostp) H_6 mstat = pvm_mstat ( host ) int mstat = pvm_mstat (char*host) SP [ntask, tinfo] = pvm_tasks (where) int info = pvm_tasks (int where, int*ntask, struct pvmtaskinfo**taskp) H_2 stat = pvm_pstat (tid) int status = pvm_pstat (int tid) H_1 tid = pvm_mytid int tid = pvm_mytid (void) H_1 tid = pvm_parent int tid = pvm_parent (void) H_2 dtid = pvm_tidtohost (tid) int dtid = pvm_tidtohost (int tid) H_6 info = pvm_perror ( msg ) int info = pvm_perror (char*msg) SP version = pvm_version char*version = pvm_version (void) H_6 cod = pvm_archcode ( arch ) int cod = pvm_archcode (char*arch) H_5 [nfds, fds] = pvm_getfds int nfds = pvm_getfds (int**fds) H_5 [ntids, tids] = pvm_siblings int ntids = pvm_siblings (int**tids) SP [info clk dlt] = pvm_hostsync (htid) int info = pvm_hostsync (int host, struct timeval*clk, struct timeval*dlt) Envío y Recepción de ensajes H_3 bufid = pvm_initsend [ (encoding) ] int bufid = pvm_initsend (int encoding) PCK info = pvm_pack (var...) int info = pvm_packf (const char*fmt,...) PCK [info, names] = pvm_unpack [ ( vnam...) ] int info = pvm_unpackf (const char*fmt,...) H_4 info = pvm_send (tid, msgtag) int info = pvm_send (int tid, int msgtag) H_4 bufid = pvm_recv (tid, msgtag) int bufid = pvm_recv (int tid, int msgtag) SP bufid = pvm_trecv (tid, msgtag, tmout) int bufid = pvm_trecv (int tid, int msgtag, struct timeval*tmout) H_4 bufid = pvm_nrecv (tid, msgtag) int bufid = pvm_nrecv (int tid, int msgtag) H_4 bufid = pvm_probe (tid, msgtag) int bufid = pvm_probe (int tid, int msgtag) SP info = pvm_mcast (tids, msgtag) int info = pvm_mcast (int*tids, int ntask, int msgtag) SP info = pvm_pkint (n) int info = pvm_pkint (int*ip, int nitem, int stride) SP [info, n] = pvm_upkint int info = pvm_upkint (int*ip, int nitem, int stride) SP info = pvm_pkstr ( str ) int info = pvm_pkstr (char*sp) SP [info, str ] = pvm_upkstr int info = pvm_upkstr (char*sp) H_2 info = pvm_pkmesg (bufid) int info = pvm_pkmesg (int bufid) H_1 bufid = pvm_upkmesg int newbufid = pvm_upkmesg (void) H_2 info = pvm_pkmesgbody (bufid) int info = pvm_pkmesgbody (int bufid) SP [info, len] = pvm_psend (tid, msgtag, data) int info = pvm_psend (int tid, int msgtag, char*buf, int len, int datatype) SP [info, bufinfo]=pvm_precv (tid, msgtag, vnam, len) int info = pvm_precv (int tid, int msgtag, char*buf, int len, int datatype, int atid, int atag, int alen) Buffers de Envío y Recepción H_3 bufid = pvm_mkbuf [ (encoding) ] int bufid = pvm_mkbuf (int encoding) H_2 info = pvm_freebuf (bufid) int info = pvm_freebuf (int bufid) SP [info bufinfo] = pvm_bufinfo (bufid) int info = pvm_bufinfo (int bufid, int*bytes, int*msgtag, int*tid) SP [info msginfo] = pvm_getminfo (bufid) int info = pvm_getminfo (int bufid, struct pvmminfo*msginfo) SP info = pvm_setminfo (bufid, msginfo) int info = pvm_setminfo (int bufid, struct pvmminfo*msginfo) H_1 bufid = pvm_getrbuf int bufid = pvm_getrbuf (void) H_1 bufid = pvm_getsbuf int bufid = pvm_getsbuf (void)
7 H_2 oldbuf = pvm_setrbuf (bufid) int oldbuf = pvm_setrbuf (bufid) H_2 oldbuf = pvm_setsbuf (bufid) int oldbuf = pvm_setsbuf (bufid) ailbox global H_8 index = pvm_putinfo ( name, bufid, flags) int index = pvm_putinfo (char*name, int bufid, int flags) H_8 bufid = pvm_recvinfo ( name, index, flags) int bufid = pvm_recvinfo (char*name, int index, int flags) H_8 info = pvm_delinfo ( name, index, flags) int info = pvm_delinfo (char*name, int index, int flags) SP [info,mbinfo] = pvm_getmboxinfo ( pattern ) int info = pvm_getmboxinfo (char*pattern, int*nclasses, struct pvmmboxinfo**classes) Grupos H_6 inum = pvm_joingroup ( group ) int inum = pvm_joingroup (char*group) H_7 info = pvm_freezegroup ( group, size) int info = pvm_freezegroup (char*group, int size) H_6 info = pvm_lvgroup ( group ) int info = pvm_lvgroup (char*group) H_7 info = pvm_barrier ( group, count) int info = pvm_barrier (char*group, int count) H_7 inum = pvm_getinst ( group, tid) int inum = pvm_getinst (char*group, int tid) H_7 tid = pvm_gettid ( group, inum) int tid = pvm_gettid (char*group, int inum) H_6 size = pvm_gsize ( group ) int size = pvm_gsize (char*group) H_7 info = pvm_bcast ( group, msgtag) int info = pvm_bcast (char*group, int msgtag) COL info = pvm_reduce ( op, var, msgtag, group, inst) int info = pvm_reduce (void(*func)(), void*data, int count, int datatype, int msgtag, char*group, int rootginst) COL info = pvm_scatter (porcion, var, int info = pvm_scatter (void*result, void*data, int count, int datatype, COL msgtag, group, inst) info = pvm_gather (var, porcion, msgtag, group, inst) Entorno H_6 cc = pvm_export ( name ) int cc = pvm_export (char*name) H_6 cc = pvm_unexport ( name ) int cc = pvm_unexport (char*name) int msgtag, char*group, int rootginst) int info = pvm_gather (void*result, void*data, int count, int datatype, int msgtag, char*group, int rootginst) Contexto H_1 ctx = pvm_getcontext int ctx = pvm_getcontext (void) H_1 ctx = pvm_newcontext int ctx = pvm_newcontext (void) H_2 old_ctx = pvm_setcontext (new_ctx) int old_ctx = pvm_setcontext (int new_ctx) H_2 info = pvm_freecontext (ctx) int info = pvm_freecontext (int ctx) Registro de anejadores REG info = pvm_reg_hoster int cc = pvm_reg_hoster (void) REG info = pvm_reg_tasker int cc = pvm_reg_tasker (void) REG [info, hostinfo] = pvm_reg_rm int cc = pvm_reg_rm (struct pvmhostinfo**hip) FUN mhid = pvm_addmhf (src, tag, ctx, atlab_cd ) int mhid = pvm_addmhf (int src, int tag, int ctx, int(*func)(int bufid)) FUN info = pvm_delmhf (mhid) int info = pvm_delmhf (int mhid) FUN pvm_recvf [ ( atlab_cd ) ] int(*old)(void) = pvm_recvf ( int(*new)(int bufid, int tid, int tag) ) info = pvme_default_config [ ( hostfile ) ] info = pvme_start_pvmd [ ( arg...) ] info = pvme_kill(tids) info = pvme_is tids = pvme_gids ( group ) info = pvme_pack (var...) [info, msg] = pvme_upkntfy str = hostname str = uid Extensiones Utilidades NR putenv ( var=valor ) int putenv(const char*string) NR unsetenv ( var ) int unsetenv(const char*string) NR info = select [ (fildes [, timeout]) ] int select(int n, fd_set*readfs, fd_set*writefs, fd_set*exceptfs, struct timeval*timeout) No documentadas SP [info, resp] = pvm_tickle ( how [,arg] ) tickle how [ arg... ] Obsoletas pero documentadas info = pvm_advise (route) oldset = pvm_serror (set) info = pvm_getmwid (bufid) info = pvm_setmwid (bufid) cc = pvm_delete ( name, index) cc = pvm_insert ( name, index, data) [cc data] = pvm_lookup ( name, index)
8 2.5 DISCUSIÓN Y DETALLES La interfaz procura ser lo más transparente y sistemática posible. A dicho efecto se redacta un fichero include (header.h) con los patrones de llamada más comunes. /* * Todas las pvm_*.mexlx necesitan <mex.h> y <pvm3.h> */ #include <mex.h> /* atlab */ #include <pvm3.h> /* pvm_lo-que-sea */ /* * Patrones Entrada ATLAB->PV Salida PV->ATLAB */... /* */ void mexfunction( int nlhs, mxarray *plhs[], int nrhs, const mxarray *prhs[]){ /* */ Incorporar el prototipo de función EX evita duplicarlo en cada fichero fuente Patrones de llamada generales (H_*) Las funciones se clasifican según los parámetros que aceptan y valores de retorno que producen. El patrón se codifica en el include y se usa en el fichero fuente correspondiente a la llamada, que suele quedar reducido a la directiva #include y uso del patrón apropiado. H_1: int = f (void) El patrón es #define INT_F_VOID(NAE) \ *mxgetpr(plhs[0]=mxcreatedoubleatrix(1,1,mxreal)) = \ NAE(); Se crea el primer argumento de retorno como array1x1 (plhs[0]), y en su primer elemento (*mgetpr()) se almacena el int devuelto por la función. Un ejemplo de función con este patrón es /* * info = pvm_exit */ #include "header.h" INT_F_VOID(pvm_exit) } Los demás esquemas siguen la misma dinámica. H_2: int = f (int) H_3: int = f[(int)] H_4: int = f (int, int) H_5: [int, int[]] = f (void) H_6: int = f ( str ) H_7: int = f ( str,int) H_8: int = f ( str,int,int) H_9: [int, int[]] = f (str[]) Funciones de manejo de máscaras (SK) Las funciones y macros de máscara de trazado admiten un parámetro de máscara y otro entero ( who ó kind ). Se ha preferido tratar este segundo parámetro como string. Se redactan las funciones de apoyo en header_msk.h. También se deja la cabecera incluida Llamadas PV colectivas (COL) Las funciones de grupo colectivas pueden compartir la comprobación de parámetros y el tratamiento de los argumentos msgtag, group, y rootginst, en header_col.h. El resto del código es específico a cada llamada Funciones de registro (REG) Las 3 funciones de registro usan pvmproto.h. pvm_reg_hoster, pvm_reg_tasker siguen el mismo esquema INT_F_VOID mencionado anteriormente. pvm_reg_rm no lo sigue, ya que debe devolver struct pvmhostinfo Funciones sin patrón (SP) El resto de llamadas sólo tienen en común los #include ATLAB y PV, y el prototipo mexfunction. Se redacta una sola vez en header_smp.h y se incluye en cada fichero fuente. Un ejemplo es /* * 'version' = pvm_version */ #include "header_smp.h" plhs[0]=mxcreatestring(pvm_version()); /* wrap/argout */ } Funciones relacionadas (FUN,PCK,NR) Tampoco siguen ningún esquema. No comparten fichero include. Se han clasificado en categorías separadas para facilitar su comprensión. # Fuentes a mano, sin sistema FUNSRCS = pvm_mhf.c pvm_recvf.c PCKSRCS = pvm_pack.c pvm_unpack.c NRSRCS= putenv.c unsetenv.c select.c Las funciones normales (NR) son funciones de apoyo para esta Toolbox, que no utilizan PV. Aunque ATLAB dispone de una función getenv, no permite crear o borrar variables de entorno. Tampoco permite comprobar si hay caracteres pendientes de lectura. Las funciones de empaquetamiento (PCK) son la clave de la integración PV-ATLAB. Cada variable es empaquetada con una cabecera identificando su clase, nombre y dimensiones, de manera que en la recepción se pueda reproducir una variable idéntica a la original.
9 También es necesario realizar la interfaz con pvm_upkint para poder desempaquetar los mensajes de notificación a esperar tras pvm_notify. Naturalmente, el int se coerce a double. Por complitud, se decide hacer también la interfaz para pvm_upkint, pvm_pkstr y pvm_upkstr, al ser el string tipo básico ATLAB. También por complitud se realiza la interfaz con pvm_psend y pvm_precv, limitados al tipo array double. Las funciones de funciones (FUN) tienen bajo C un argumento puntero a función. Bajo ATLAB, la única forma de referenciar código es textualmente, como string a ejecutar mediante eval() desde fichero ó mexcallatlab() desde fichero EX. Se requiere pues interponer una función C (puntero a la cual se pasará a la llamada PV) que evalúe el texto ATLAB indicado por el usuario pvm_addmhf y pvm_delmhf son un poco más complicadas que pvm_recvf, ya que requieren declarar múltiples wrappers y mantener una lista con los identificadores de los que se vayan creando (add), para liberarlos después (del). Ambas rutinas se implementan en un mismo fichero EX para mantener el array en memoria sin perder su valor entre llamadas Extensiones Las extensiones se nombran con el prefijo pvme_* y están programadas como ficheros. pvme_start_pvmd simplifica el número de argumentos de llamada, pudiendo llegar a usar un fichero de configuración por defecto, indicado por pvme_default_config. pvme_is comprueba si está ejecutándose pvmd. pvme_kill admite un array como argumento, en vez de un escalar. pvme_gids devuelve todos los tids en un grupo, no sólo el de una instancia indicada. pvme_pack permite agrupar las variables empaquetadas de manera que se conozca su número al desempaquetarlas. pvme_upkntfy permite desempaquetar mensajes de notificación desde ATLAB, promocionando los datos de tipo int del mensaje akefile La clasificación de funciones realizada permite controlar con precisión las dependencias.c.h include akefile.env... SRCS = \ $(PVSRCS) $(COLSRCS) $(SKSRCS) $(REGSRCS) \ $(SPSRCS) $(FUNSRCS) $(PCKSRCS) $(NRSRCS)... EXS = $(patsubst.c,.mexlx, $(SRCS))... $(EXS):.mexlx:.o $(CC) $(LDFLAGS) $(LDLIBS) $< -o $@... $(PVOBJS): header.h $(COLOBJS): header_col.h $(SKOBJS): header_msk.h $(REGOBJS): header_reg.h $(SPOBJS): header_smp.h Los flags en akefile.env son sencillamente EXCPPFLAGS = -I$(5_ROOT)/extern/include \ -DATLAB_EX_FILE DEBUGFLAGS = -g OPTIFLAGS = -O -DNDEBUG EXLDFLAGS = -shared PVCPPFLAGS = -I$(PV_ROOT)/include PVLDFLAGS = -L$(PV_ROOT)/lib/$(PV_ARCH) PVLIBS = -lpvm3 -lgpvm3 CPPFLAGS = $(EXCPPFLAGS) $(PVCPPFLAGS) # CFLAGS = $(OPTIFLAGS) CFLAGS = $(DEBUGFLAGS) LDFLAGS = $(EXLDFLAGS) $(PVLDFLAGS) LDLIBS = $(PVLIBS) Observar que basta con cambiar el último CFLAGS para pasar de modo depuración a optimizado. 3 TUTORIAL La Toolbox PVTB se acompaña de una extensa relación de pruebas a realizar para comprobar su correcto funcionamiento. Está redactada en estilo tutorial, sirviendo pues para familiarizarse con las llamadas PV y con los conceptos asociados al paso de mensajes. Las pruebas incluyen el uso del entorno de alto nivel mencionado (). Dicho entorno está íntegramente programado en ficheros, y se explica también detalladamente en [3]. PVTB sólo ha sido comprobada bajo sistemas UNIX. El paso de mensajes entre varios ATLAB requiere naturalmente el correspondiente número de licencias. Se incluyen programas C para ejercitar el paso de mensajes sin necesidad de ejecutar instancias adicionales de ATLAB. Agradecimientos El autor agradece al Departamento de Arquitectura y Tecnología de Computadores de la Universidad de Granada el uso de su instalación de ATLAB. Este trabajo ha sido financiado por los Proyectos CICYT TIC y TAP Referencias
10 [1] H. Dietz (1998) Linux Parallel Processing HOWTO. HOWTO/Parallel-Processing-HOWTO.html [2] B.L. Evans, S.X. Gu (1997) Tath 0.2: A Tcl Interface to ATLAB and athematica. tmath.html [3] J. Fernández (1999) Toolbox PV. Informe Técnico Depto. de Arquitectura y Tecn. Comp. Universidad de Granada. [4] A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. anchek, V. Sunderam, (1994) PV 3 Users Guide and Reference anual. Oak Ridge National Laboratory. Oak Ridge, Tennessee [5] A. Geist, A. Beguelin, J. Dongarra, W. Jiang, R. anchek, V. Sunderam, (1994) PV: Parallel Virtual achine. A Users Guide and Tutorial for Networked Parallel Computing. The IT Press. Cambridge, assachusetts. [6] W. Gropp, E. Lusk, A. Skjelum (1994) Using PI: Portable Parallel Programming with the essage-passing Interface, The IT Press ISBN html [7] J. Hollingsworth, K. Liu, P. Pauca (1996) PT v.1.00 anual and Reference Pages, Technical report, athematics and Computer Science Department, Wake Forest University. [8] LA Group (1996) PI Primer / Developing with LA, Ohio Supercomputer Center, The Ohio State University, downloads/lam/lam61.doc.ps.z [9] LA HomePage, [10] The athworks Home Downloads, ATLAB 5 User Contributed -Files, miscelaneous, miscv5.shtml [11] The athworks, Inc. (1998) ATLAB 5.2 Product Family New Features [12] The athworks, Inc. (1998) ATLAB Application Program Interface Guide. help/pdf_doc/matlab/api/apiguide.pdf [13] The athworks, Inc. (1999) Release 11 New Features. helpdesk/help/pdf_doc/matlab/newfeat.pdf [14] V.S. enon, A.E. Trefethen (1997) ultiatlab: Integrating ATLAB with High-Performance Parallel Computing. Supercomputing 97 AC SIGARCH and IEEE Computer Society papers/sc97 TECH/ENON/INDEX.HT [15] C. oler (1995) Why there isn t a parallel ATLAB. athworks Newsletter. Spring newsletter/pdf/spr95cleve.pdf [16] PI Forum (1994) PI: A essage-passing Interface standard, International Journal of Supercomputer Applications and High Performance Computing, vol.8. numb.3/4. html/mpi-report.html [17] PI Forum (1997) PI-2: Extensions to the esssage-passing Interface, Technical report html/mpi2-report.html [18] PI HomePage, [19] PICH, [20] S. Pawletta (1998) Extensions of a Scientific and Technical Computation and Visualization System to a Development Environment for Parallel Applications Ph.D.Thesis, University of Rostock. [21] S. Pawletta et al (1999) Distributed and Parallel Application Toolbox v1.4 Technical report, Institute of Automatic Control, Department of echanical Engineering, University of Rostock, Germany. [22] PV Group (1994) The PV Project. [23] A.E. Trefethen, V.S. enon, C. Chang, G.J. Czajkowski, C. yers, L.N. Trefethen (1996) ultiatlab: ATLAB on ultiple Processors. Technical Report , Cornell Theory Center, University of Cornell multimatlab.html
PVM Parallel Virtual Machine. Autor: Alejandro Gutiérrez Muñoz
PVM Parallel Virtual Machine Autor: Alejandro Gutiérrez Muñoz PVM Qué es PVM? Consiste en un software y un conjunto de librerías, que permiten establecer una colección de uno o mas sistemas de computación,
Más detallesComputación de Alta Performance Curso 2009 PVM (PARALLEL VIRTUAL MACHINE)
Computación de Alta Performance Curso 2009 (PARALLEL VIRTUAL MACHINE) QUÉ ES? Una BIBLIOTECA para el desarrollo de aplicaciones paralelas y distribuidas. Cualidades Potencia. Simplicidad. Portabilidad
Más detallesComputación de Alta Performance Curso 2009. PVM Avanzado
Computación de Alta Performance Curso 2009 Avanzado QUÉ ES? Una BIBLIOTECA, NO un Lenguaje Un estandar de facto, no de comité Soporte para: Administracion dinamica de maquinas heterogeneas Identificacion
Más detallesManuel Arenaz. arenaz@udc.es
Manuel Arenaz arenaz@udc.es Introducción a la programación paralela Qué es la Programación Paralela? Computador estándar secuencial: Ejecuta las instrucciones de un programa en orden para producir un resultado
Más detallesIntroduccion al Lenguaje C. Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia
Introduccion al Lenguaje C Omar Andrés Zapata Mesa Grupo de Fenomenología de Interacciones Fundamentales, (Gfif) Universidad de Antioquia Introducción C es un lenguaje de programación creado en 1972 por
Más detallesEntre los más conocidos editores con interfaz de desarrollo tenemos:
Herramientas de programación Para poder programar en ensamblador se precisa de algunas herramientas básicas, como un editor para introducir el código, un ensamblador para traducir el código a lenguaje
Más detallesGuía Rápida de Puesta en Marcha de MailStore
Guía Rápida de Puesta en Marcha de MailStore Primeros Pasos Paso 1: Requerimientos de sistema e instalación El servidor de MailStore se puede instalar en cualquier PC en la red. Si se esta utilizando un
Más detallesTema 1. Introducción a JAVA
Tema 1. Introducción a JAVA Historia Características Plataforma Java Entorno de desarrollo Ejemplo: Hola mundo Estructura general de un programa Java 1 Historia de Java (i) Surge en 1991: Sun Microsystems
Más detalles4. 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 detallesEl proceso de Instalación de Microsoft SQL Server 2008
El proceso de Instalación de Microsoft SQL Server 2008 Luis Alejandro Esteban C - nave_tze@hotmail.com Este documento va dirigido a profesionales de tecnología interesados en entender el proceso de instalación
Más detallesCapítulo 12: Indexación y asociación
Capítulo 12: Indexación y asociación Conceptos básicos Índices ordenados Archivos de índice de árbol B+ Archivos de índice de árbol B Asociación estática Asociación dinámica Comparación entre indexación
Más detallesRace Manager by Master Timing Guía del usuario GUIA RACE MANAGER. Eventronic, SL
GUIA RACE MANAGER Eventronic, SL DESCRIPCIÓN DEL PROGRAMA El Race Manager es un programa que se creó para facilitar el trabajo de la dirección de carrera de un evento durante y después de una carrera.
Más detallesAcronis License Server. Guía del usuario
Acronis License Server Guía del usuario TABLA DE CONTENIDO 1. INTRODUCCIÓN... 3 1.1 Generalidades... 3 1.2 Política de licencias... 3 2. SISTEMAS OPERATIVOS COMPATIBLES... 4 3. INSTALACIÓN DE ACRONIS LICENSE
Más detallesCapí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 detallesPROGRAMACIÓ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 detallesCreació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 detallesSOLUCION EXAMEN junio 2006
SOLUCION EXAMEN junio 2006 1. Explique razonadamente si las siguientes afirmaciones son verdaderas o falsas: I) (1 p) En UNIX únicamente se distinguen dos tipos de procesos: los procesos de usuario y los
Más detallesIntroducción a la Programación en MATLAB
Introducción a la Programación en MATLAB La programación en MATLAB se realiza básicamente sobre archivos M, o M-Files. Se los denomina de esta forma debido a su extensión.m. Estos archivos son simple archivos
Más detalles- Bases de Datos - - Diseño Físico - Luis D. García
- Diseño Físico - Luis D. García Abril de 2006 Introducción El diseño de una base de datos está compuesto por tres etapas, el Diseño Conceptual, en el cual se descubren la semántica de los datos, definiendo
Más detallesCOMO 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 detallesPreliminares. Tipos de variables y Expresiones
Preliminares. Tipos de variables y Expresiones Felipe Osorio Instituto de Estadística Pontificia Universidad Católica de Valparaíso Marzo 5, 2015 1 / 20 Preliminares Computadoras desarrollan tareas a un
Más detallesCOPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA
COPIAS DE SEGURIDAD AUTOMÁTICAS DE DIRECCIONES CALLEÇPAÑA Autor: Carlos Javier Martín González. Licenciado en Física Teórica por la Universidad Autónoma de Madrid. Analista programador y funcional. Desarrollador
Más detallesAdministración de sistemas UNIX/Linux Práctica Colección de scripts para la configuración de una infraestructura de máquinas UNIX
Administración de sistemas UNIX/Linux Práctica Colección de scripts para la configuración de una infraestructura de máquinas UNIX Curso 2013/2014 Introducción Esta práctica consiste en la elaboración de
Más detallesRESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014
RESUMEN INFORMATIVO PROGRAMACIÓN DIDÁCTICA CURSO 2013/2014 FAMILIA PROFESIONAL: INFORMATICA Y COMUNICACIONES MATERIA: 28. DESARROLLO WEB EN ENTORNO SERVIDOR CURSO: 2º DE CFGS DESARROLLO DE APLICACIONES
Más detallesTema II Introducción a X-Lib (R-1.0)
Tema II Introducción a X-Lib (R-1.0) Programación en Entornos Interactivos. 7 de junio de 2011 Dpto. Lenguajes y Sistemas Informáticos Universidad de Alicante 1 / 1 Resumen Presentación de X-Lib. Errores
Más detallesJava Inicial (20 horas)
Java Inicial (20 horas) 1 Temario 1. Programación Orientada a Objetos 2. Introducción y Sintaxis Java 3. Sentencias Control Flujo 4. POO en Java 5. Relaciones entre Objetos 6. Polimorfismo, abstracción
Más detallesPropuesta 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 detallesEstructuras de Sistemas Operativos
Estructuras de Sistemas Operativos Definicion de Sistema Operativos Un sistema operativo es un programa que actua como inter entre el usuario y el hardware de un computador y su proposito es proporcionar
Más detallesOficina Online. Manual del administrador
Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal
Más detallesElementos 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 detallesIntroducció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 detallesNuevas tendencias: Virtualización de computadores / servidores
Nuevas tendencias: Virtualización de computadores / servidores Expositor: Ing. José Wu Chong Laboratorio de Internetworking FIA DATA Agenda Qué es un servidor? Qué servicios hay en la red? Qué es Virtualización?
Más detallesGeneral Parallel File System
General Parallel File System Introducción GPFS fue desarrollado por IBM, es un sistema que permite a los usuarios compartir el acceso a datos que están dispersos en múltiples nodos; permite interacción
Más detallesCONSULTAS DE RESUMEN SQL SERVER 2005. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE
CONSULTAS DE RESUMEN SQL SERVER 2005 Manual de Referencia para usuarios Salomón Ccance CCANCE WEBSITE CONSULTAS DE RESUMEN Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes
Más detallesIntroducción a ZEUS. Introducción. Curso Doctorado Sistemas Multi-agente. Zeus es una herramienta de desarrollo de SMA.
Introducción a ZEUS Curso Doctorado Sistemas Multi-agente Introducción Zeus es una herramienta de desarrollo de SMA. 1 Introducción Está constituido fundamentalmente por 3 grupos funcionales: Biblioteca
Más detallesManual de ACCESS Intermedio
Manual de ACCESS Intermedio Funciones agregadas (GROUP BY) Las funciones agregadas proporcionan información estadística sobre conjuntos de registros. Por ejemplo, puede usar una función agregada para contar
Más detallesMicrosoft SQL Server Conceptos.
Microsoft Conceptos. Microsoft 2005 es una plataforma de base de datos a gran escala de procesamiento de transacciones en línea (OLTP) y de procesamiento analítico en línea (OLAP). La siguiente tabla muestra
Más detallesTEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA
TEMA 3. EL PROCESO DE COMPILACIÓN, DEL CÓDIGO FUENTE AL CÓDIGO MÁQUINA Programa: Algoritmo (secuencia no ambigua, finita y ordenada de instrucciones para la resolución de un determinado problema) traducido
Más detallesSISTEMAS INFORMÁTICOS EN TIEMPO REAL 2º Ingeniería Industrial MANUAL DE HERRAMIENTAS SOFTWARE PARA PROGRAMACIÓN EN UNIX
1 OBJETIVO Este manual describe las herramientas básicas necesarias para programar y gestionar una estación UNIX remota desde un PC con S.O Windows. El software utilizado es gratuito y está disponible
Más detallesPráctica 3ProgramacionRS232: Programación básica de la RS232
Práctica 3ProgramacionRS232: Programación básica de la RS232 1 Objetivos El objetivo de esta práctica es la iniciación del alumno en la programación de las comunicaciones en un entorno de desarrollo basado
Más detallesInstalació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 detallesMicrosoft HPC. V 1.0 José M. Cámara (checam@ubu.es)
Microsoft HPC V 1.0 José M. Cámara (checam@ubu.es) Introducción Microsoft HPC (High Performance Computing) es la solución de Microsoft a la computación de alto rendimiento. Está enfocado principalmente
Más detallesJAVA EE 5. Arquitectura, conceptos y ejemplos.
JAVA EE 5. Arquitectura, conceptos y ejemplos. INTRODUCCIÓN. MODELO DE LA APLICACIÓN JEE5. El modelo de aplicación Java EE define una arquitectura para implementar servicios como lo hacen las aplicaciones
Más detallesPRUEBAS 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 detallesGestió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 detallesPráctica sobre compartición de instancias remotas.
Práctica sobre compartición de instancias remotas. Para esta práctica se ha construido un pequeño sistema cliente-servidor que permite la resolución de Sudokus entre varios jugadores. El servidor consta
Más detalles19. Packages o paquetes
Programación orientada a objetos con Java 201 19. Packages o paquetes Objetivos: a) Definir el concepto de paquete b) Interpretar el código fuente de una aplicación Java donde se utilicen paquetes c) Construir
Más detallesLiLa Portal Guía para profesores
Library of Labs Lecturer s Guide LiLa Portal Guía para profesores Se espera que los profesores se encarguen de gestionar el aprendizaje de los alumnos, por lo que su objetivo es seleccionar de la lista
Más detallesCapítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable
Capítulo 3 Diseño del Sistema de Administración de Información de Bajo Costo para un Negocio Franquiciable 1. Introducción. El Sistema de Administración de Información de un Negocio Franquiciable (SAINF)
Más detallesServicio de Apoyo a la Investigación. Tutorial EndNoteWeb
Servicio de Apoyo a la Investigación Tutorial EndNoteWeb I AÑADIR REFERENCIAS. LA PESTAÑA COLLECT Collect es la pestaña que se utiliza para añadir referencias a nuestra biblioteca. Se pueden añadir hasta
Más detallesRouter Teldat. Protocolo TELNET
Router Teldat Protocolo TELNET Doc. DM738 Rev. 10.80 Agosto, 2011 ÍNDICE Capítulo 1 Introducción... 1 1. Protocolo TELNET... 2 Capítulo 2 Configuración... 3 1. Comandos de Configuración... 4 1.1.?(AYUDA)...
Más detallesGuí a Ra pida Dropbox.
Guí a Ra pida Dropbox. Software desarrollado para alojar y compartir archivos vía WEB. Ing. Verónica Lisset Nieto Quintanilla vlnietoq@gmail.com http://www.veronicalnieto.blogspot.com/ www.vlnieto.wikispaces.com
Más detallesEscuela Politécnica Superior de Elche
Práctica 0 (Repaso) Estándar de programación y Diagramas de flujo.:::1 Sesión:::. a. Estándar de normalización En este apartado se sugieren una serie de normas que ayudarán a que el código sea más fácil
Más detallesSERVIDOR 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 detallesTUTORIAL DE PHP. M. en C. Erika Vilches. Parte 2. http://www.erikavilches.com
TUTORIAL DE PHP M. en C. Erika Vilches Parte 2 http://www.erikavilches.com Enunciados Condicionales Inicia con la palabra clave if seguida de una condición entre paréntesis $number = 5; if ($number < 10)
Más detallesArquitectura 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 detalles7. Manejo de Archivos en C.
7. Manejo de Archivos en C. Los datos que hemos tratado hasta el momento han residido en la memoria principal. Sin embargo, las grandes cantidades de datos se almacenan normalmente en un dispositivo de
Más detallesJavaScript como Orientación a Objetos
Gustavo Lacoste (gustavo@lacosox.org) October 2012 Resumen El objetivo de las siguientes notas es generar una estructura en JavaScript que nos permita reutilizar de manera limpia las funciones creadas
Más detallesUso del simulador Modelsim
Introducción al laboratorio: Uso del simulador Modelsim Diseño y Simulación de Circuitos Electrónicos por Asistido por Computador Ingeniería Técnica Industrial Electrónica Modelsim es un software que administra
Más detallesBase de datos Procedimientos Almacenados y Funciones
Base de datos Procedimientos Almacenados y Eduardo Saavedra A. Universidad Nacional Andrés Bello 4 de noviembre de 2008 Contenidos Ventajas 1 Ventajas 2 3 4 5 Conceptos Ejemplo 6 Procedimiento Almacenado
Más detallesCAPITULO 9. Diseño de una Base de Datos Relacional Distribuida
9.1 Operaciones CAPITULO 9 Diseño de una Base de Datos Relacional Distribuida Las consultas distribuidas obtienen acceso a datos de varios orígenes de datos homogéneos o heterogéneos. Estos orígenes de
Más detallesUnidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros
Unidad III: Lenguaje de manipulación de datos (DML) 3.1 Inserción, eliminación y modificación de registros La sentencia INSERT permite agregar nuevas filas de datos a las tablas existentes. Está sentencia
Más detallesTutorial para la comunicación TCP en el BMS Server
Tutorial para la comunicación TCP en el BMS Server Contenido 1. Pasos iniciales para trabajar empleando conexión TCP... 2 2. Configuración de la conexión TCP... 4 2.1. Comprobación de la conexión TCP...
Más detallesLABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO
UNIVERSIDADE DA CORUÑA Departamento de Tecnoloxías da Información e as Comunicacións LABORATORIO DE RC: PRÁCTICA 4: IMPLEMENTACIÓN DE UN CLIENTE DE CORREO PRÁCTICA 4: Implementación de un Cliente de Correo
Más detallesMySQL: Guía de Referencia
Instituto Tecnologico Superior de Coatzacoalcos (ITESCO). MySQL: Guía de Referencia Farid Alfredo Bielma Lopez fbielma@fbielma.org http://fbielma.org/course/fbielma/curso_mysql.pdf Resumen del curso Algunas
Más detallesNovedades en Q-flow 3.02
Novedades en Q-flow 3.02 Introducción Uno de los objetivos principales de Q-flow 3.02 es adecuarse a las necesidades de grandes organizaciones. Por eso Q-flow 3.02 tiene una versión Enterprise que incluye
Más detallesADMINISTRACIÓN CENTRALIZADA DELL POWERVAULT DL2000 CON TECNOLOGÍA SYMANTEC
ADMINISTRACIÓN CENTRALIZADA DELL POWERVAULT DL2000 CON TECNOLOGÍA SYMANTEC RESUMEN EJECUTIVO Es un método ideal para que cualquier departamento de TI logre realizar respaldos y restauraciones más rápidas
Más detallesProcesadores de lenguaje Tema 5 Comprobación de tipos
Procesadores de lenguaje Tema 5 Comprobación de tipos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen Sistemas de tipos. Expresiones de tipo. Equivalencia de tipos. Sobrecarga,
Más detallesSoluciones Informáticas para la Gestión de la Calidad c/vicente Aleixandre nº 10 4º H, 15009 A CORUÑA Telf: 981 133 207 / 616 145 723 info@spuch.
MANUAL DE USUARIO Índice Índice... 2 Introducción... 2 Pantalla inicial... 3 Conectar las bases de datos... 4 Periodicidad de sincronización... 6 Reglas de sincronización... 7 Ejecutar consultas SQL...
Más detallesGestion de archivos. Problemas al almacenar datos sólo en la memoria:
Gestion de archivos Problemas al almacenar datos sólo en la memoria: 1. El tamaño está limitado por el tamaño de la memoria qué pasa con aplicaciones que necesiten acceder a gran cantidad de información?
Más detallesIniciando con Oracle. Índice de contenido. Ingresando a Oracle. Cambiando Su Contraseña. Ingresando un Comando SQL en SQL*Plus
Iniciando con Oracle Índice de contenido Ingresando a Oracle...1 Cambiando Su Contraseña...1 Ingresando un Comando SQL en SQL*Plus...2 Saliendo de SQL*Plus...2 Consiguiendo Ayuda...2 Creación de una Tabla...3
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 detallesProcedimientos para agrupar y resumir datos
Procedimientos para agrupar y resumir datos Contenido Introducción Presentación de los primeros n valores Uso de funciones de agregado 4 Fundamentos de GROUP BY 8 Generación de valores de agregado dentro
Más detalles9233506 Edición 1 ES. Nokia y Nokia Connecting People son marcas comerciales registradas de Nokia Corporation
9233506 Edición 1 ES Nokia y Nokia Connecting People son marcas comerciales registradas de Nokia Corporation Guía del usuario de Zip Manager Guía del usuario de Zip Manager Vaya a Zip Manager Pro. Nota:
Más detallesEstructura de Bases de datos. Leonardo Víquez Acuña
Estructura de Bases de datos Leonardo Víquez Acuña Lenguajes de Bases de Datos Un sistema de bases de datos proporciona Un lenguaje de definición de datos para especificar el esquema de la base de datos
Más detallesInstalar GFI WebMonitor
Instalar GFI WebMonitor Requerimientos del sistema para GFI WebMonitor Microsoft Windows 2000 (SP 3) o 2003 Server. Microsoft ISA Server 2000 (no en modo firewall only ) O Microsoft ISA Server 2004 (Standard
Más detallesSesión No. 4. Contextualización INFORMÁTICA 1. Nombre: Procesador de Texto
INFORMÁTICA INFORMÁTICA 1 Sesión No. 4 Nombre: Procesador de Texto Contextualización La semana anterior revisamos los comandos que ofrece Word para el formato del texto, la configuración de la página,
Más detallesMarcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net
Marcos de Desarrollo Diseño e implementación de aplicaciones Web con.net Prácticas de laboratorio (.NET) Planificación de clases prácticas 1. Introducción al entorno de trabajo 2. Ejemplos C# 3. Ejemplos
Más detallesIII. ADMINISTRACIÓN DE ORACLE.
III. ADMINISTRACIÓN DE ORACLE. 1.- Qué es Oracle? Qué hace un Administrador? 2.- Herramientas de ORACLE. 3.- Características. 4.- Arquitectura. 4.1.- Componentes de la BD. 4.2.- Estructura de la memoria.
Más detallesHost. En este texto, entenderemos por host toda máquina - léase computadora. Cuenta. Una cuenta, en general, es un espacio de memoria y de disco que
CONCEPTOS BASICOS. Usuario. Un usuario es toda persona que utilice una computadora. Host. En este texto, entenderemos por host toda máquina - léase computadora - conectada a InterNet. También se les llaman
Más detallesRealización de copias de seguridad en caliente
Realización de copias de seguridad en caliente BASE 100, S.A. www.base100.com Índice 1. INTRODUCCIÓN... 3 2. FUNCIONAMIENTO... 4 2.1 VARIABLES DE ENTORNO... 4 2.2 EJEMPLO... 5 2 : : 6 1. Introducción En
Más detallesRedes (IS20) Ingeniería Técnica en Informática de Sistemas. http://www.icc.uji.es. CAPÍTULO 8: El nivel de transporte en Internet
Redes (IS20) Ingeniería Técnica en Informática de Sistemas http://www.icc.uji.es CAPÍTULO 8: El nivel de transporte en Internet ÍNDICE 1. Introducción Curso 2002-2003 - Redes (IS20) -Capítulo 8 1 1. Introducción
Más detallesResumen. El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl
El rol del lenguaje SQL en los SGBDR y en la Relacional. cjimenez@inf.udec.cl, tamrstro@inf.udec.cl Resumen demandas de almacenamiento y procesamiento de datos. Es el conjunto de estas dos capacidades
Más detallesObjetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero.
Objetivos de la práctica: - Practicar uso de ficheros: abrir, cerrar y tratamiento de información contenida en el fichero. Uso de Ficheros Todas las estructuras de datos vistas hasta ahora utilizan la
Más detallesEstructuras de Datos y Algoritmos Tecnólogo en Informática
Estructuras de Datos y Algoritmos Tecnólogo en Informática INSTRUCTIVO DEL COMANDO MAKE ESTRUCTURAS DE DATOS Y ALGORITMOS - TECNÓLOGO EN INFORMÁTICA 1 Contenido Introducción... 3 El archivo makefile...
Más detallesTELECOMUNICACIONES Y REDES
TELECOMUNICACIONES Y REDES Redes Computacionales I Prof. Cristian Ahumada V. Unidad V: Capa de Red OSI 1. Introducción. 2. Protocolos de cada Red 3. Protocolo IPv4 4. División de Redes 5. Enrutamiento
Más detallesLINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN
LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN Tabla de Contenidos LINEAMIENTOS ESTÁNDARES APLICATIVOS DE VIRTUALIZACIÓN... 1 Tabla de Contenidos... 1 General... 2 Uso de los Lineamientos Estándares...
Más detallesDE VIDA PARA EL DESARROLLO DE SISTEMAS
MÉTODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS 1. METODO DEL CICLO DE VIDA PARA EL DESARROLLO DE SISTEMAS CICLO DE VIDA CLÁSICO DEL DESARROLLO DE SISTEMAS. El desarrollo de Sistemas, un proceso
Más detallesUNIVERSIDAD NACIONAL SAN ANTONIO ABAD DEL CUSCO CARRERA PROFESIONAL DE INGENIERIA ELECTRONICA LINUX AVID ROMAN GONZALEZ
UNIVERSIDAD NACIONAL SAN ANTONIO ABAD DEL CUSCO CARRERA PROFESIONAL DE INGENIERIA ELECTRONICA LINUX AVID ROMAN GONZALEZ Introducción Linux es clónico de UNIX El sistema en si refleja esta compleja herencia
Más detallesGUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS
GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS Objetivo: El propósito de esta guía es indicarle como configurar un entorno moodle de prácticas en
Más detallesSISTEMAS OPERATIVOS AVANZADOS
SISTEMAS OPERATIVOS AVANZADOS TEMA 3 CLAVE: MIS 204 PROFESOR: M.C. ALEJA DRO GUTIÉRREZ DÍAZ 3. PROCESOS CONCURRENTES 3.1 Conceptos de programación concurrente 3.2 El problema de la sección crítica 3.3
Más detallesPuedes descargar los archivos de instalación de Windows SteadyState en el Centro de descarga Microsoft.
Windows SteadyState Resumen Windows SteadyState es una utilidad de Microsoft que facilita el trabajo a quienes se encargan de la configuración y mantenimiento de equipos compartidos, de manera que todo
Más detallesMaxpho Commerce 11. Gestión CSV. Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd
Maxpho Commerce 11 Gestión CSV Fecha: 20 Septiembre 2011 Versión : 1.1 Autor: Maxpho Ltd Índice general 1 - Introducción... 3 1.1 - El archivo CSV... 3 1.2 - Módulo CSV en Maxpho... 3 1.3 - Módulo CSV
Más detallesCAPÍTULO 3 VISUAL BASIC
CAPÍTULO 3 VISUAL BASIC 3.1 Visual Basic Microsoft Visual Basic es la actual y mejor representación del viejo lenguaje BASIC, le proporciona un sistema completo para el desarrollo de aplicaciones para
Más detallesCAPÍ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 detallesSistema de SaaS (Software as a Service) para centros educativos
Sistema de SaaS (Software as a Service) para centros educativos Definiciones preliminares: Qué es SaaS? SaaS (1) es un modelo de distribución del software que permite a los usuarios el acceso al mismo
Más detallesSymantec Backup Exec System Recovery 7.0 Server Edition. Recuperación de sistemas en cuestión de minutos, en lugar de en horas o días
PRINCIPALES VENTAJAS TANGIBLES Recuperación de sistemas Windows completos en cuestión de minutos, en lugar de en horas o días Symantec ha demostrado de manera pública y en reiteradas ocasiones que Backup
Más detallesTomás P. de Miguel Dpto. Ingeniería de Sistemas Telemáticos. dit UPM
Tomás P. de Miguel Dpto. Ingeniería de Sistemas Telemáticos Justificación Resolver el problema de interacción entre sistemas heterogéneos Compartir sistemas de ficheros Compartir impresoras entre clientes
Más detallesWINDOWS 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 detallesINTRODUCCION. Ing. Camilo Zapata czapata@udea.edu.co Universidad de Antioquia
INTRODUCCION. Ing. Camilo Zapata czapata@udea.edu.co Universidad de Antioquia Qué es una Red? Es un grupo de computadores conectados mediante cables o algún otro medio. Para que? compartir recursos. software
Más detalles