Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

TP SOI Erlang

No description
by

on 4 March 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of TP SOI Erlang

TP SOI Erlang
Estructuras de datos principales
TP SOI Erlang
MyFiles -> [{Name,Text}]
donde
Name
es el nombre del archivo (único en el sistema de archivos) ,
y
Text
es el contenido del archivo.
OpenFiles -> [{Name,FileNumber,Worker,SocketList,Mode}]
donde
Name
es el nombre del archivo,
FileNumber
es el número entero identificador del archivo de nombre Name,
Worker
es el pid del proceso dueño del archivo,
Mode
es el modo en el que el archivo está abierto. Es restricción para abrir un archivo en cierto modo, que dicho archivo no esté abierto en otro modo, es decir, un archivo dado está abierto en a lo sumo uno de los siguientes modos:
read: modo de sólo lectura. Se permite a múltiples usuarios tener abierto el mismo archivo en este modo.
write: modo de sólo escritura. Es restricción para abrir un archivo en modo write, que ningún otro cliente lo tenga abierto en dicho modo.
read-write: modo de lectura y escritura. Es restricción para abrir un archivo en modo read-write, que ningún otro cliente lo tenga abierto en dicho modo.

SocketList
(
SocketList
-> [{
Socket
,
Pointer
}]) es una lista de tuplas en donde el elemento
Socket
aloja el pid del proceso que inició el cliente, y el elemento
Pointer
indica la posición en la cual se tiene que empezar a leer el texto del archivo.
Sólo en el caso de que un archivo esté abierto en modo lectura,
SocketList
podrá contener más de una tupla.
Protocolos de comunicación
Entre los workers
Los workers tienen una comunicación en anillo. Esto quiere decir que, en general, cada worker recibe mensajes de un único worker dado y manda mensajes a un único worker dado.
Sin embargo, no necesariamente el mensaje pasa por todos los workers.
TP SOI Erlang
Protocolos de comunicación
Entre los workers
{w_cre, maybe, Name, Socket, WorkerOrigen}
Este mensaje se reenvía circularmente entre los workers cuando hay un pedido de creación de un archivo Name por parte de Socket al WorkerOrigen.
En caso de que ningún worker tenga en MyFiles un archivo Name, el mensaje dará la vuelta completa y se creará dicho archivo. En caso contrario, se mandará un mensaje de error entre los workers y luego al cliente.

{w_del, maybe, Name, Socket, WorkerOrigen}
Este mensaje se reenvía circularmente entre los workers cuando hay un pedido de eliminación de un archivo Name por parte de Socket al WorkerOrigen.
Cuando un worker recibe este menasje, debe verificar si tiene el archivo Name en MyFiles. En caso afirmativo verifica si el mismo se encuentra en OpenFiles. Si el archivo estuviese abierto, entonces debe avisar al WorkerOrigen que el archivo Name no se puede elimnar en este momento.
En caso de no poseer el archivo Name, debe reenviar el mensaje al siguiente worker.

{w_opnX, maybe, Name, Socket, PidOrigen}
Este mensaje tiene tres posibles variantes, dependiendo del modo en el cual esté pidiendo Socket abrir el archivo Name al PidOrigen.
Al recibirlo, el worker deberá corroborar que dicho archivo no esté abierto en algún modo que impida la nueva apertura.
{w_clo, Name,Socket,PidOrigen}
Este mensaje es enviado desde PidOrigen al worker dueño del archivo Name en caso de que Socket pida cerrar dicho archivo.
Al recibirlo, el worker sólo deberá eliminar de OpenFiles los datos correspondientes .

{w_wrt,FileNumber,CharAmount, Text,Socket, PidOrigen}
Este mensaje es enviado desde PidOrigen al worker dueño del archivo Name en caso de que Socket pida escribir Text de longitud CharAmount en dicho archivo.

{w_rea, Name,CharAmount, Socket, PidOrigen}
Este mensaje es enviado desde PidOrigen al worker dueño del archivo Name en caso de que Socket pida leer CharAmount caracteres de dicho archivo.

{w_clo_bye, FileNumber, Name,Socket,PidOrigen}
Este mensaje es enviado desde PidOrigen al worker dueño del archivo Name en caso de que Socket pida terminar la conexión.
Antes de lllevar a cabo la desconexión deben cerrarse todos los archivos abiertos por el cliente. Por lo tanto, este mensaje se reenviará a cada worker dueño de algún archivo abierto por Socket.
TP SOI Erlang
Protocolos de comunicación
Entre los workers
TP SOI Erlang
Protocolos de comunicación
Entre los workers
Full transcript