UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERIA SISTEMAS DISTRIBUIDOS I by rockman20

VIEWS: 0 PAGES: 17

									UNIVERSIDAD DE BUENOS AIRES FACULTAD DE INGENIERIA

75.74 SISTEMAS DISTRIBUIDOS I

TRABAJO PRÁCTICO SISTEMA BANCARIO MODULO: CASA CENTRAL

Alumno: Padrón: Profesora: Curso:

Lucas Enrique Guaycochea 84067 María Feldgen Primer Cuatrimestre 2007

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Índice
ÍNDICE......................................................................................................................................................... 2 INTRODUCCIÓN....................................................................................................................................... 3 ESTRUCTURA DEL SISTEMA BANCARIO......................................................................................... 4 ESPECIFICACIÓN DE LOS SERVICIOS Y OBJETO DE LAS COMUNICACIONES INTERMODULARES.................................................................................................................................4 ESPECIFICACIÓN DE PROCESOS........................................................................................................6 FORMATO DE LOS MENSAJES ENTRE MÓDULOS...................................................................... 11 ESPECIFICACIÓN DE LA CAPA DE COMUNICACIÓN PARA EL SISTEMA CENTRALIZADO Y CONCURRENTE.................................................................................................13 DESCRIPCIÓN DE LOS RECURSOS DE IPC UTILIZADOS.........................................................................................14 ESPECIFICACIÓN DE LA CAPA DE COMUNICACIÓN PARA EL SISTEMA DISTRIBUIDO, USANDO SOCKETS.................................................................................................................................16 DESCRIPCIÓN DE LOS PORTS Y RECURSOS IPC UTILIZADOS................................................................................. 16 EJECUCIÓN DE LA CASA CENTRAL................................................................................................ 17

Página 2 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Introducción
El presente informe consiste en la documentación y especificación del módulo de Casa Central realizado para la simulación del sistema bancario distribuido. Se detallarán los procesos que componen a dicho módulo y su interacción interna. Luego se explicarán cómo es la interacción con las demás partes del sistema, a través de intercambio de mensajes, permitiendo la prestación de un servicio determinado de un módulo a otro. Finalmente se describirá como fue solucionada la comunicación tanto en el esquema centralizado como en el distribuido.

Página 3 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Estructura del Sistema Bancario
En el siguiente gráfico podremos observar la estructura del sistema bancario simulado.

Como se puede apreciar, encontramos al módulo de la Casa Central en el medio de todas las comunicaciones. Este módulo entonces deberá interactuar con los módulos de Banelco, Clearing, Empresas/Estado y Sucursales.

Especificación de los servicios y objeto de las comunicaciones intermodulares
Para poder entender el módulo realizado se describe a continuación el objeto de las comunicaciones con las partes del sistema bancario con las que se interactúa: • Banelco: La comunicación consiste en recibir de dicha entidad las transacciones que se hayan realizado en los cajeros automáticos correspondientes a las cuentas de mi banco. Asimismo, se enviará con determinada frecuencia, con el objetivo de mantener actualizados, los saldos de las cuentas de mi banco. En ambos casos, la comunicación se realiza sin cambios las 24 horas del día. • Empresas/Estado: Con este módulo la comunicación consiste en recibir pedidos de movimientos del mismo y contestarle si se realiza o no. Esto es pensado inicialmente para que las empresas clientes del banco puedan realizar el pago de sueldos de empleados. De esta manera, la empresa pide
Página 4 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

•

•

que se le debite dinero de su cuenta para ser repartido en las cuentas de sus empleados; asimismo, se pueden realizar de la misma manera otras operaciones semejantes entre cuentas pertenecientes al banco. La Casa Central le responderá a la Empresa si dicha operación puede o no llevarse a cabo según los saldos de las cuentas. Por último, en las sucursales se cobran facturas de las empresas clientes a sus usuarios, acreditándoles el dinero en sus cuentas y con cierta frecuencia se les envía a las empresas el detalle de las facturas que fueron cobradas en su nombre. Clearing: Al final del día, una vez que ha terminado el horario bancario, se realiza la comunicación con el clearing. La misma consiste en enviarle los cheques que fueron cobrados en las sucursales de mi banco (que son de otra entidad bancaria), para conocer si tienen fondos suficientes y realizar la acreditación del dinero en las cuentas donde fueron depositados, tras la respuesta afirmativa del clearing, o devolverle el cheque al cliente como “rebotado” en caso negativo. En contrapartida y de igual manera, se recibirán las consultas idénticas de cheques pertenecientes a cuentas de mi banco, y tras el procesamiento se le contestará. Sucursales: La comunicación con estos módulos es extensa. Para comenzar, en las sucursales es efectivamente donde residen las cuentas, por lo tanto se les enviarán todos los movimientos concernientes a las mismas realizados por las empresas y los cajeros automáticos. Estos provocará variaciones sobre los saldos de las cuentas, junto con las operaciones que se realicen en las ventanillas de las sucursales, por lo que se recibirá con cierta frecuencia la actualización del saldo provisorio del día de cada cuenta. Por otro lado, se recibirán las facturas cobradas en ventanillas, lo que originará un movimiento de crédito para la cuenta de la empresa que será informado a la sucursal dueña de la misma. En lo que refiere a los cheques, se recibirán los que fueron depositados en ventanilla, y tras la operación con el clearing, se le informará si tienen o no fondos. De manera inversa se le transmitirán a cada sucursal las consultas de clearing sobre los cheques emitidos por sus cuentas, esperando por las respuestas tras el procesamiento necesario. Por último, al finalizar la operación con el clearing, se realizará el cierre del día. Esto es, cada sucursal enviará por cada cuenta, el saldo final del día, la suma de créditos y la de débitos por separado; con estos dos últimos datos la Casa Central calculará su propio saldo final de cada cuenta (tiene un saldo inicial de cada día que no se altera hasta ese momento) con el objetivo de chequear si es correcto lo calculado por la sucursal. Una vez finalizado este proceso con todas las cuentas del banco, se da lugar al comienzo de un nuevo día.

Página 5 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Especificación de procesos
La Casa Central, es un módulo cuya función es recibir información de un lado y redistribuirla hacia otro, tras un procesamiento más o menos complejo. En todo el sistema se utiliza como patrón, un proceso parado en lectura sobre una cola que recibe la información y las acumula en archivos determinados, otro proceso que es activado con determinada frecuencia que toma el contenido de los archivos y los envía por las colas adecuadas a los diferentes subsistemas. Esto sin dudas corresponde al modelo de concurrencia conocida como productor – consumidor. Asimismo para el trabajo sobre archivos, para evitar la concurrencia sobre los mismos se utilizan semáforos, dando lugar al esquema lector – escritor sobre los mismos. A continuación se diagramarán los procesos y se detallarán brevemente sus funciones. Por cuestiones de claridad, al haber tantos procesos involucrados, se realizará por partes, separando por actividades. En primer lugar se muestran las interacciones con el Banelco y las Sucursales referentes a las transacciones (txs) y a los saldos provisorios:
(BANELCO)

ARCHTXSUC_i semA semB ARCHTXMANSUC_i Envío Transacciones Acumuladas Envío Transacciones Sucursales
(SUCURSAL)

Atención Banelco

(SUCURSAL)

ARCHSALDOSPROV Recepción Saldos Provisorios semC Envío Banelco

(BANELCO)

La función de cada proceso es: Atención Banelco: Recibir las transacciones provenientes de Banelco, a partir del número de cuenta se obtiene la sucursal donde pertenece, con lo que se guarda en el archivo de transacciones de la correspondiente sucursal. Esto ocurre si se encuentra en el horario bancario, de 10 a 15 horas, en caso contrario se guardan en un archivo diferente para ser enviadas cuando comience un nuevo día. Envío Transacciones Sucursales: Este proceso es activado con determinada frecuencia (durante el horario bancario, y una última vez al cierre del banco) y toma todas las transacciones que se encuentran en los archivos de cada sucursal y se las envía a cada uno de ellas, dejando el archivo vacío. Envío Transacciones Acumuladas: Es ejecutado al comenzar un nuevo día, su función es enviar a cada sucursal las transacciones que no entraron en el horario bancario del día anterior.

Página 6 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Recepción Saldos Provisorios: Este proceso recibe las actualizaciones constantes de los saldos del día, provisorios, de las sucursales y actualiza en base a esto el saldo provisorio de cada cuenta que se encuentra en el archivo correspondiente. Envío Banelco: Con cierta frecuencia durante todo el día, envía los saldos provisorios de todas las cuentas del banco a Banelco. Por otro lado, se describen los procesos relacionados con lo que respecta a los cheques, comunicándose con Clearing y las Sucursales.
(SUCURSAL)

ARCHCHEQUESACOBRAR semD Consulta A Clearing
(CLEARING)

Acopio Cheques

semD ARCHCHEQUESENCVIADOS
(CLEARING)

ARCHAUXCHEQUESACOBRAR semD

(lanza) Disparador Clearing Recepción Clearing ACKS
(CLEARING)

(CLEARING)

ARCHCHEQUESCONSULTASUC_i Atención Clearing semF Envío Consulta Cheques Sucursales

(SUCURSAL)

semG ARCHCHEQUESCONSULTASUC_i

Envío Respuesta Cheques Sucursales

(SUCURSAL)

(SUCURSAL)

Recepción Respuestas Cheques Sucursales

(CLEARING)

La funcionalidad de cada proceso se puede resumir en: Acopio Cheques: Este proceso se encarga de recibir los cheques que fueron depositados en las cuentas del banco en cada sucursal y de acumularlos en el archivo correspondiente, guardando también qué sucursal hizo la consulta. Cabe aclarar que si la operación con el Clearing está activa, este proceso se bloquea para seguir acopiando cheques recién luego de que se termine esa actividad. Disparador Clearing: Recibe los mensajes de control del Clearing, estos son inicio del clearing, fin de recepción y fin de actividad. Cuando recibe el inicio de la
Página 7 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

recepción, establece lo necesario para que le proceso anterior se bloquee al recibir otra tanda de cheques, y lanza la ejecución del proceso “Consulta A Clearing”. Al recibir el mensaje de fin de recepción del Clearing, señala que el Clearing ya no recibirá cheques. Finalmente al recibir el fin de actividad, significa que clearing ha terminado de respondernos todas las preguntas que nos aceptó, por lo cual si ya las hemos recibido todas, se lanza el proceso de “Envío Respuestas Cheques Sucursales”; también si quedaron cheques sin enviar para consultar se disponen en el archivo de cheques a cobrar, y se libera la ejecución del acopio de cheques. Consulta A Clearing: Es lanzado por el proceso disparador, su tarea consiste en enviar, mientras la recepción del clearing está activada, todos los cheques que fueron depositados e informados por las sucursales al mismo para consultar si tiene o no fondos; si la recepción por parte del clearing ha finalizado, se guardan en un archivo auxiliar, para ser consultados el día siguiente. También loggea los cheques enviados por si el clearing informa que no ha aceptado la recepción de algunos. Recepción Clearing ACKS: Este proceso recibe los acks del Clearing por cada mensaje enviado con consultas de cheques al mismo, informado si son aceptados y analizados o no. En caso negativo, se recuperan los cheques enviados a partir del loggeo realizado y se disponen para ser consultados el día siguiente. Atención Clearing: Recibe tanto las consultas del clearing como sus respuestas a mis consultas. En el caso de ser consultas, a partir del número de cuenta emisora del cheque, se dispone el mismo en el archivo correspondiente a la sucursal de esa cuenta para ser enviado hacia allí. En el otro caso, al ser respuestas, se consulta el archivo de cheques a cobrar, para obtener de qué sucursal vino cada cheque cobrado y poder disponerlo en el archivo de respuestas para cada una. Envío Consultas Cheques Sucursales: Envía con determinada frecuencia las consultas provenientes de clearing a las sucursales que corresponde. Envío Respuestas Cheques Sucursales: Al finalizar la actividad con el Clearing envía todas las respuestas a las sucursales. Cabe destacar que al finalizar, envía un mensaje de control a cada sucursal indicando el identificador del último paquete con cheques enviado a cada una; de manera que la sucursal a partir de esto pueda empezar a cerrar el día informando los saldos finales de cada cuenta. Recepción Respuestas Cheques Sucursales: Este proceso simplemente recibe las respuestas de las sucursales en cuanto a si tienen o no fondos los cheques emitidos por sus cuentas. Al recibirlas simplemente las envía inmediatamente al Clearing ya que el mismo está esperando por tales respuestas.

Página 8 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Ahora es el turno de mostrar los procesos relacionados con las actividades con las Empresas/Estado con respecto a las facturas y movimientos, donde intervienen también las Sucursales.
(SUCURSAL)

ARCHFACTURASEMPRESA_i semI semA ARCHTXSUC_i Envío Facturas Empresas

((EMPRESA))

Recepción Facturas

semB ARCHTXMANSUC_i semB

(EMPRESA)

semA

Recepción Movimientos Empresas
(EMPRESA)

La funcionalidad de cada proceso es la siguiente: Recepción Facturas: Recibe las facturas que fueron cobradas en las sucursales de diferentes empresas, las mismas se disponen en archivos diferenciados por empresa, y se generan los movimientos de crédito para las cuentas que cada empresa tiene en el banco, guardándose según la hora del día, para ser enviada como un movimiento (o transacción) más a las sucursales donde reside cada cuenta. Envío Facturas Empresas: Con determinada frecuencia envía a cada empresa las facturas que les fueron cobradas en su nombre en esta entidad. Recepción Movimientos Empresas: Este proceso recibe el pedido de las empresas para realizar movimientos, se verifica que los datos sean correctos y que la cuenta a debitar tengas los fondos necesarios. En caso afirmativo, se crean los movimientos individuales en cada cuenta para ser enviados a las sucursales. También se informa a la empresa si se puede o no realizar el movimiento. Para ir finalizando, el diagrama correspondiente al cierre del día comunicándose con las sucursales.
(SUCURSAL)

ARCHSALDOS Cierre Saldos Finales
(SUCURSAL)

El proceso Cierre Saldos Finales recibe la información para realizar el cierre de cada cuenta, en el archivo de saldos tiene los saldos iniciales del día, y con eso verifica lo informado por cada sucursal. Actualiza entonces estos saldos iniciales para comenzar un nuevo día, y al actualizarlos todos levanta un semáforo para que el temporizador (descrito a continuación) continúe y comience un nuevo día. Por último, tenemos un proceso llamado temporizador que es el encargado al principio de inicializar los semáforos y lanzar con la frecuencia debida los procesos que envían mensajes cada cierto tiempo; estos son: Envío Transacciones Sucursales, Envío Banelco, Envío Consultas Cheques Sucursales y Envío Facturas Empresas. También es
Página 9 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

quien maneja la apertura y cierre del banco (el horario bancario) y le informa esto mediante mensajes de control a las sucursales. Una vez realizado el cierre del banco, espera, al hacer wait() sobre un semáforo inicializado en 0, a que ocurra el cierre del día para lanzar el proceso de “Envío Transacciones Acumuladas” y volver a empezar con un día nuevo.

Página 10 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Formato de los mensajes entre módulos
Antes de definir el formato de los mensajes, se definen algunas estructuras que irán dentro: • • • • • • • Tx (nroCuenta, monto); monto > 0 si es un crédito; monto < 0 si es un débito. SaldoProvisorio (nroCuenta, monto, timestamp); Cheque (idBancoEmisor, nroCheque, nroCuentaEmisora, monto); Factura (nroFactura, monto); Movimiento (nroCuenta, monto); SaldoFinal (nroCuenta, sumaDebitos, sumaCreditos, saldoFinal); RespuestaSaldoFinal (nroCuenta, saldoFinal, aceptado); aceptado= 0-no/1-si Ahora se especifica el formato de los mensajes: Mensajes con Sucursales y Banelco por transacciones y saldos provisorios: • MsgConTx (cantTx, (Tx)CANT ); • MsgConSaldosProvisorios (idEmisor, cantSaldos, (SaldoProvisorio)CANT ); Mensaje con Sucursales y Clearing con cheques: • MsgConCheques (idMsg, idOrigen, nroOperacion, cantCheques, (Cheque)CANT, (conf)CANT); nroOperacion= 0-consulta/1-respuesta; conf=1-tieneFondos/0-no Mensajes de control recibidos de Clearing: • MsgControlClearing (código, aux); codigo=0-inicioClearing/ 1-finRecepcion/ 2-finActividad; aux=donde va el id del último mensaje con respuestas que me envía. • MsgACKClearing (idMsg, analizado); analizado= 0-no/1-si ; Mensajes con Empresa referentes a los movimientos: • MsgConMovimientos (idEmpresa, idMov, Movimiento, cantMov, (Movimiento)CANT ); el primer Movimiento es el de debito, los últimos son de crédito. • MsgACKEmpresa (idBanco, idMovimiento, resultado); resultado= 0-realizado / 1operación errónea / 2-saldos insuficientes. Operación errónea significa que la suma a acreditar es distinta al monto a debitar. Mensaje con facturas para Empresa y Sucursales: • MsgConFacturas (idEmpresa_o_Banco, cantFacturas, (Factura)CANT ); Mensaje de control enviado a Sucursales: • MsgControlSucursal (codigo, aux); codigo= 0-abreBanco/ 1-cierraBanco / 2terminoClearing; aux= id del ultimo mensaje enviado con respuestas de cheques. Mensajes con Sucursales para el cierre del día: • MsgConSaldosFinales (idSucursal, idMsg, cantSaldos, (SaldoFinal)CANT); • MsgRespuestaSaldosFinales (idMsg, cantRtas, (RespuestaSaldoFinal)CANT);

Página 11 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

En todos los casos el campo cantXXX, establece la cantidad de campos útiles del siguiente vector. Los vectores se fijan de una longitud fija determinada sin importar el valor concreto.

Página 12 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Especificación de la capa de comunicación para el sistema centralizado y concurrente
Para la primera parte del presente trabajo que consiste en hacer un sistema centralizado y concurrente donde todos los módulos residen en la misma máquina comunicándose por las colas de mensajes que provee el sistema operativo Linux, se desarrollaron dos funciones que se encargar de la comunicación. Estas son la función enviar y la función recibir. Aplicación
Capa Comunicación Centralizada

enviar

recibir

La firma de los métodos es la siguiente:
int enviar(int modulo, int instancia, int tipoComunicacion, struct msgbuf* mensaje, int tamanio); int recibir(int modulo, int instancia, int tipoComunicacion, struct msgbuf* mensaje, int tamanio);

Ambos métodos a partir del módulo, la instancia y el tipo de comunicación que reciben, acuden a una tabla de donde obtienen a que cola lógica enviar o de que cola lógica recibir según el caso. La tabla es un archivo de texto llamado “tablasColas.dat” cuyo formato de cada línea es: “módulo;instancia;tipoComunicacion;path;char;mtype; comentarios” De esta forma con los primeros tres campos se obtienen el path y char para pasar a la función ftok() y obtener la clave para luego obtener la cola. En el envío se pone el mtype adecuado al mensaje recibido y se envía. En la recepción se busca leer de la cola obtenida el mensaje con ese mtype. El uso de distintos mtypes para cada mensaje permite la existencia de múltiples colas lógicas multiplexando comunicaciones en una misma cola física.

Página 13 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Descripción de los recursos de IPC utilizados
Semáforos: Todos los conjuntos de semáforos contienen 1 sólo semáforo y se han obtenido con el mismo PATH_SEMAFORO que se encuentra en definiciones.h y tiene el valor “semáforos.h”. Lo que se ha cambiado es el char o carácter con el que se obtiene la clave. Se han utilizado para el trabajo sobre los diferentes archivos, de manera de asegurar la exclusión mutua sobre los mismos; y un par de ellos para sincronizar procesos y/o para tener acceso en exclusión mutua también a espacios de memoria compartida. Memoria Compartida: Ciertos procesos necesitan conocer por medio de una variable compartida el estado del sistema con respecto a una situación particular. Por ello se han utilizado 4 espacios de memoria compartida del tamaño de un entero. El primero para indicar si el banco se encuentra abierto o no al público (si nos encontramos en horario de atención bancaria); el segundo indica si se encuentra el modulo en operaciones con el Clearing; luego otra espacio permite conocer si la ha finalizado o no la recepción de consultas por parte del clearing; y por último un lugar donde se almacena el último paquete recibido o ha recibir por parte del Clearing, de manera de deducir cuando se ha finalizado totalmente la operación con el mismo (se han terminado de recibir todas sus respuestas a mis consultas aceptadas). Colas de Mensajes: Cómo se ha expresado las mismas se utilizan para la comunicación, a continuación se detallarán la manera de obtenerlas y el tipo de mensaje utilizado para cada paquete con el objetivo de la multiplexación en la misma cola física. Para recibir, el banco habilita la cola obtenida sobre el archivo “./recibir.c” utilizando el carácter ‘a’. Los distintos tipos de mensajes son: • 1: saldos provisorios de las sucursales • 2: cheques de las sucursales • 3: confirmación de fondos de cheques de las sucursales • 4: facturas cobradas de las sucursales • 5: detalle de saldos finales del día de las sucursales • 23: consultas y respuestas de saldos de cheques del clearing • 27: mensajes de control del clearing • 29: mensajes de ACK del clearing • 41: transacciones provenientes de Banelco Para las empresas se utiliza la cola sobre “/bin/ls” con caracter ‘a’ para recibir movimientos. Para enviar a las sucursales se hace sobre la cola que se obtiene a partir de “../sucursal” y con el caracter ‘1’, ‘2’, ‘3’, etc.. dependiendo de la instancia de la sucursal. Los tipos de mensajes utilizados son: • 1: transacciones
Página 14 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

• • • • Para

2: consulta de cheques 3: respuestas de fondos de cheques obtenidas desde clearing 4: respuestas sobre los saldos finales 7: mensajes de control enviarle mensajes al

Clearing se obtiene la cola con “../clearing/Archivos/COLA_RECEPTOR.cola” con el caracter ‘1’. Los tipos de mensajes son: • 1: consultas sobre cheques • 2: respuestas sobre los fondos de los cheques proporcionadas por las sucursales. Con Banelco se utiliza la cola sobre “../banelco/BanelcoEnC/Banelco.c” y el caracter ‘a’ enviando los saldos provisorios con el tipo de mensaje igual a 1. Con las Empresas se utiliza la cola sobre “/ls/bin” con el caracter ‘b’ para enviar facturas y el carácter ‘c’ para enviar las respuestas a los movimientos. Todo esto es configurable desde el archivo de texto “tablasColas.dat” que tiene el fomato indicado anteriormente.

Página 15 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Especificación de la capa de comunicación para el sistema distribuido, usando sockets
Como última parte de este trabajo se pidió que se distribuyeran los módulos a distintas máquinas. Para que el sistema pueda seguir funcionando se agregó una capa de comunicación más abajo de la existente que toma lo que la primera escribió en las colas y lo envía por tcp y también recibe por tcp y escribe en la cola que corresponde. De esta manera no se ha modificado absolutamente nada del sistema anterior que funcionaba centralizadamente. Aplicación
Capa Comunicación Centralizada

enviar

recibir

Capa Comunicación TCP

enviarTCP

recibirTCP

TCP

Al inicio de la ejecución del módulo se realizan las aperturas pasivas y activas de los sockets, según corresponda. A las Sucursales y Empresas se les realiza la apertura pasiva de los puertos, y con el Banelco y el Clearing se realiza la apertura activa. Se abren la cantidad necesaria de sockets para la comunicación con cada módulo y luego se tendrán en ejecución dos procesos por cada socket: el primero leyendo de la cola que le corresponde y escribiendo en el socket; y el segundo leyendo del socket y escribiendo en la cola correspondiente. Cabe aclarar que los mensajes son exactamente los mismos a los que se venían usando y los métodos de estos nuevos procesos para enviar y recibir de las colas son los mismos de la Capa de Comunicación Centralizada.

Descripción de los ports y recursos IPC utilizados
Se utilizan los mismos recursos IPC descriptos anteriormente solo que las colas de envío se encuentran obtenidas a partir de archivos locales del módulo (ver “tablasColas.dat”). Con respecto a los puertos, se puede ver la configuración utilizada en “parametrosTCP.h” y que es utilizado por el proceso compilado a partir de “inicializarComunicaciones.c”.

Página 16 de 17

75.74 Sistemas Distribuidos I Prof. María Feldgen

Trabajo Práctico: Sistema Bancario Módulo: CASA CENTRAL

Lucas Guaycochea

Ejecución de la Casa Central
Para la compilación basta con correr el shell script “compilar.sh” con la instrucción: # sh compilar.sh parado sobre la carpeta de la casa central. Para ejecutarlo se debe correr el “lanzar.sh” y para detenerlo el “detener.sh”: # sh lanzar.sh Y # sh detener.sh Cabe destacar que además de la salida por pantalla, el módulo loggea todo lo que recibe y envía en distintos archivos llamados “LogXXXX.txt” que se encontraran en la misma carpeta donde se encuentra la Casa Central. Notas: Toda la configuración de la casa central se puede hacer desde los distintos archivos “.h” principalmente el “definiciones.h”, aparte de los ya nombrados “tablasColas.dat” y “parametrosTCP.h”.

Página 17 de 17


								
To top