Skip to content

LucasDiasJorge/Shared-Memory-Observer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Shared Memory Observer

Descrição

Este projeto implementa um mecanismo de comunicação entre processos utilizando memória compartilhada e mutex para sincronização. Ele consiste em dois processos:

  1. Writer (Escritor): Modifica periodicamente o valor armazenado na memória compartilhada.
  2. Observer (Observador): Monitora a memória compartilhada e exibe mensagens quando uma mudança é detectada.

Estrutura do Projeto

/
|-- CMakeLists.txt
|-- .clang-format
|-- include/
|   `-- shared_object.h
|-- src/
|   |-- observer.cpp
|   `-- writer.cpp
|-- tests/
|   `-- shared_object_test.cpp
|-- docs/
|   `-- architecture.md
|-- examples/
|   `-- README.md

Dependências

  • Compilador C++ compatível com C++11
  • Biblioteca POSIX (para shm_open, mmap, pthread)
  • CMake 3.30+

Compilação

  1. Criar um diretório de build e acessar ele:
    cmake -S . -B build
  2. Compilar o projeto:
    cmake --build build

Se quiser desabilitar testes:

cmake -S . -B build -DBUILD_TESTS=OFF

Testes

ctest --test-dir build

Execução

  1. Primeiro, execute o observador:
    ./build/observer
  2. Em outro terminal, execute o escritor:
    ./build/writer

O observador detecta e imprime qualquer alteração feita pelo escritor na memória compartilhada.

Explicação do Código

Memória Compartilhada

  • A memória compartilhada é criada usando shm_open().
  • O mmap() é utilizado para mapear a memória no espaço do processo.

Sincronização com Mutex

  • O pthread_mutex_t é usado para evitar condições de corrida.
  • O escritor bloqueia o mutex ao modificar os dados.
  • O observador verifica mudanças na memória compartilhada.

Limpeza

  • Após a execução, pode ser necessário limpar a memória compartilhada manualmente:
    ipcrm -M <SHM_ID>
    ou
    shm_unlink("/my_shared_memory");

About

Observer and Shm concepts in one project

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors