Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/camilafbarcellos/lamportclocksim
Lamport timestamp algorithm simulator for logical clocks - Simulador do Algoritmo de Lamport para relógios lógicos desenvolvido para a disciplina de Sistemas Distribuídos II (2023/2)
https://github.com/camilafbarcellos/lamportclocksim
distributed-systems lamport-algorithm logical-clocks
Last synced: 1 day ago
JSON representation
Lamport timestamp algorithm simulator for logical clocks - Simulador do Algoritmo de Lamport para relógios lógicos desenvolvido para a disciplina de Sistemas Distribuídos II (2023/2)
- Host: GitHub
- URL: https://github.com/camilafbarcellos/lamportclocksim
- Owner: camilafbarcellos
- Created: 2023-08-15T17:54:38.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2023-08-21T22:22:43.000Z (about 1 year ago)
- Last Synced: 2023-08-21T23:27:05.588Z (about 1 year ago)
- Topics: distributed-systems, lamport-algorithm, logical-clocks
- Language: Python
- Homepage:
- Size: 4.88 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Simulador de Relógios Lógicos de Lamport (_Lamport Clock Simulator_)
Este é um simulador em Python que implementa o **algoritmo de Lamport para relógios lógicos**. O programa permite que você defina o número de processos e gere vetores de tempos para cada processo, com incrementos aleatórios. Você também pode simular eventos entre processos, onde os tempos são atualizados de acordo com as regras do algoritmo de Lamport.
Programa desenvolvido como atividade da disciplina de Sistemas Distribuídos II no semestre 2023/2 do IFSul.
## Como Utilizar
1. Insira o **número de processos** que deseja simular.
> Será gerado um vetor de tempos para cada processo com incrementos aleatórios.
2. Insira o número do **processo de origem** e o **tempo de origem** para o evento.
3. Insira o número do **processo de destino** e o **tempo de destino** para o evento.
> **Obs.:** ao informar o tempo de origem/destino, deve-se informar o seu **índice** no vetor do processo
4. Após a simulação, informe se deseja ou não realizar outra (s/n).
## Notas
- O programa utiliza a biblioteca ``random`` para gerar incrementos aleatórios nos vetores de tempos.
- O algoritmo de Lamport atualiza os tempos de acordo com as regras do algoritmo, garantindo que o tempo de destino seja maior que o tempo de origem.
- Caso o tempo de destino seja menor que o tempo de origem, o algoritmo de Lamport irá ajustar todo o vetor de tempos do processo de destino mantendo a frequência original.
- Certifique-se de seguir as instruções no terminal para inserir valores válidos para os processos e tempos conforme o exemplo a seguir.
## Exemplo de Uso
```
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* > Simulador de Relógios Lógicos de Lamport < *
* *
* Desenvolvido por Camila Barcellos *
* Sistemas Distribuídos II - 2023/2 *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Número de processos: 3Relógios lógicos:
P t0 t1 t2 t3 t4 t5 t6 t7 t8 t9
----------------------------------------------------------------------------------
P1 0 1 2 3 4 5 6 7 8 9
P2 0 3 6 9 12 15 18 21 24 27
P3 0 8 16 24 32 40 48 56 64 72Processo de origem: 3
Tempo de origem: 2
Processo de destino: 1
Tempo de destino: 4Relógios lógicos antes da simulação:
P t0 t1 t2 t3 t4 t5 t6 t7 t8 t9
----------------------------------------------------------------------------------
P1 0 1 2 3 4 5 6 7 8 9
P2 0 3 6 9 12 15 18 21 24 27
P3 0 8 16 24 32 40 48 56 64 72EVENTO P3(16) → P1(4)
Emissor: P[2][2] = 16
Receptor: P[0][4] = 4Relógios lógicos após a simulação:
P t0 t1 t2 t3 t4 t5 t6 t7 t8 t9
----------------------------------------------------------------------------------
P1 0 1 2 3 17 18 19 20 21 22
P2 0 3 6 9 12 15 18 21 24 27
P3 0 8 16 24 32 40 48 56 64 72
```_© [Camila Barcellos](https://github.com/camilafbarcellos) 2023 - IFSul_