Comunicação entre processos

interprocess

Nessa série iremos tratar de comunicação entre processos, recurso muito utilizado nos sistemas operacionais, veremos os tipos existentes e exemplos usando o famoso botão e LED, nos primeiros artigos iremos abordar a configuração do ambiente, instalação de programas e com uma introdução para explicar o que é IPC(Inter process communication).

Introdução

Nos sistemas operacionais tais como Windows e Linux muitos dos seus recursos operam sobre a forma de processos, e processos são instâncias de programas em execução, ou seja, um programa gera um processo, e também existem processos que rodam em segundo plano disponibilizando algum tipo de serviço, a seguir alguns exemplos:

  • alsa – usado para inicializar o Alsa (Advanced Linux Sound Architecture).
  • crond – usado para executar programas de usuários em tempo periódicos pré-determinados.
  • dhcpd – usado para inicializar o servidor de Host Dinâmico dchp.
  • httpd – usado para inicializar o servidor Web Apache.
  • mysql – usado para inicializar o servidor de Banco de Dados MySQL.
  • sshd – é um daemon que serve conexões ssh.
  • syslog – usado para fornecer um arquivo unificado de log do sistema.

Quando o sistema operacional lança um processo, esse processo tem uma memória reservada para poder realizar a sua execução, ou seja, sua memória fica protegida somente para o seu uso, e para se comunicar com outros processos é necessário algum mecanismo que permita essa comunicação ou alguma outra forma que os dados sejam compartilhados entre os processos, é nesse momento que entra em cena o IPC.

O que é IPC?

O IPC é um mecanismo que permite que dois ou mais processos realizem a troca de dados entre si. Isso é extremamente útil devido ao fato que um processo possui sua própria região de memória onde outros processos não tem a permissão de acessar aquele espaço de memória.

Tipos de IPC

Existem dois tipos de IPC o pull-based e o push-based:

pull-based

Requer um meio, como um armazenamento para compartilhar os dados, isso porque os processos que querem ler esses dados precisam dar um pull desses dados. Neste caso os dados serão lidos através de um elemento intermediário, como um repositório de dados, onde um processo pode escrever dados nesse repositório enquanto outro processo realiza a leitura desses dados. Para esse grupo de IPC é fortemente recomendado realizar a sincronia para que não haja concorrência, os IPC referente a esse grupo são:

  • FIFO
  • Shared File
  • Shared Memory
  • Message Queue
  • MMAP
  • Semaphore
pull based
Figura 1 – Relacionamento entre processos no modelo pull-based.

push-based

Neste caso os dados serão entregues diretamente ao processo que está realizando a leitura, os IPC referente a esse grupo são:

  • Signal
  • Socket
  • PIPE
  • DBUS
push based
Figura 2 – Relacionamento entre processos no modelo push-based.

Descrição dos tipos de IPC

  • PIPE – é um dispositivo de comunicação que permite comunicação unidirecional. O dado é escrito para o “write end” do PIPE e é lido do “read end”. Os PIPE’s são disposivos seriais, o dado é sempre lido na mesma ordem que foi escrito.
  • FIFO – É uma fila de mensagens com arquivo presente no filesystem, onde o processo que envia deve escrever nesse arquivo, e o processo interessado nesses dados deve ler esse arquivo, e pode se comunicar entre processos não relacionados.
  • Shared File – é um arquivo comum onde os processos podem se comunicar através do mesmo.
  • Shared Memory – permite a comunicação entre processos de forma simples através de leitura e escrita de uma posição de memória especificada. Possui implementações em System V e POSIX
  • Message Queue – é como FIFO, mas sem a complexidade associada de abrir e fechar o arquivo, provê um jeito razoavelmente fácil de transmitir dados entre processos não relacionados. Tem vantagem sobre a FIFO, e a fila de mensagem existe independentemente dos processos de envio e recepção. Possui implementações em System V e POSIX
  • Semaphore – é um mecanismo que permite que os processos sejam sincronizados para evitar concorrência no acesso aos dados compartilhados. Possui implementações em System V e POSIX
  • MMAP – é similar à Shared Memory porém está associado ao filesystem
  • Signals – são mecanismos para comunicação e manipulação de processos. Um Signal é uma mensagem especial enviada para um processo. Signals são assincronos; quando um processo recebe um Signal, é processado imediatamente.
  • Socket é um dispositivo de comunicação bidirecional que pode ser usado para comunicar um processo com outro processo na mesma máquina ou com um processo executando em uma outra máquina. A conexão entre os processos pode ocorrer através de Bluetooth, TCP, UDP.
  • DBus – é um barramento de mensagens de sistema, um jeito simples para aplicações conversar umas com as outras. Além da comunicação intra-processos, ajuda a coordenar o ciclo de vida do processo, tornando simples e confiável a codificação de um aplicativo ou daemon de uma única instância, e inicia os aplicativos e daemons sob demanda quando o serviço for requisitado.

Conclusão

Neste artigo foi descrito o que são os IPC’s e quais são os tipos de IPC existentes, no próximo artigo será apresentado a biblioteca que será utilizada para poder executar todos os exemplos.

Referências

Outros artigos da série

Biblioteca de Hardware >>
Veja + conteúdo

Engenheiro Elétrico de Formação mas é Engenheiro de Software de profissão, Pós Graduado em Sistemas Embarcados. Apaixonado por Idiomas, mas o idioma que mais lhe fascina é a Linguagem C.
Jogador de CTF, mas prefire Battlefield 1, exige menos da capacidade cognitiva :P. Atualmente atua como desenvolvedor de sistemas distribuídos no ramo aeronáutico. Quando está de bobeira fica desenhando personagens de Anime ou pedalando pela cidade de São Paulo.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Comentários:
Notificações
Notificar
guest
1 Comentário
recentes
antigos mais votados
Inline Feedbacks
View all comments
Felipe Ferreira
Felipe
07/04/2021 00:49

Parabéns pela explicação, muito clara e objetiva. Assunto de extrema importância no mundo da computação.

Talvez você goste:

Nenhum resultado encontrado.

Séries



Outros da Série

Menu

WEBINAR

Inteligência Artificial na Borda

DATA: 29/06 às 15:00h