Quando um processo gera outro processo

13

Minha formação é em teoria / lógica da complexidade (onde há apenas um processo na maioria das vezes) e em computação distribuída (onde há processos e um ou mais podem falhar ao longo do tempo). No entanto, agora eu quero poder dizer algo sobre um processo de criação / criação / criação de outro processo. Existe rigor na computação paralela, sistemas operacionais etc., que explica isso?n

Motivação:

Estou tentando construir modelos que abstraem certas características das interações moleculares. Eu gostaria de dizer que o conjunto de reações químicas é um processo independente e que, em um certo momento da etapa t , gera outro processo independente S ' . Intuitivamente, essas coisas parecem processos independentes, porque não têm contato um com o outro após o tempo t - ou muito pouco contato, apenas trocando "mensagens".StSt

Mais formalmente:

(1) Existem definições de CS preexistentes que capturam a noção de um processo que gera outro processo independente? Estou especialmente interessado em poder demarcar onde para e S ' começa, e por que isso é "razoável".SS

(2) Se houver mais de uma resposta para (1), o que você considera os prós e os contras das várias definições?

(Observação: não faço ideia de como marcar isso adequadamente e planejo re-marcar dependendo das respostas.)

Aaron Sterling
fonte
Eu sempre achei a forkchamada do sistema em sistemas operacionais tipo Unix conceitualmente muito elegante. Você pode vê-lo como uma operação atômica que duplica o processo atual. Antes de um garfo, havia apenas um processo , enquanto após o garfo, havia dois processos S e S ' . Se simplificarmos demais as coisas, S e S ' serão idênticos em todos os outros aspectos, exceto que existe um indicador de um bit que permite que S ' saiba que é o processo "novo" enquanto S sabe que é o processo "original". Depois disso, S e S SSSSSSSSSpodem continuar separadamente e podem até se modificar .
Jukka Suomela
@Jukka: Obrigado :-) Seria legal se houvesse uma maneira de conectar o que estou fazendo a um primitivo do Unix.
Aaron Sterling

Respostas:

13

Claro que existem muitos sistemas para modelar processos. Estes se enquadram na categoria de álgebras de processo . Os principais exemplos são cálculoπ , CCS , ACP e CSP .

Os cálculos de processos têm mecanismos básicos para especificar o comportamento do processo, incluindo: envio e recebimento de mensagens (síncrona ou assíncrona), criação de processos paralelos, escolha não determinística entre comportamentos e replicação de processos. Embora os cálculos sejam pequenos em termos de número de construções, eles são muito expressivos e uma vasta quantidade de pesquisa foi dedicada ao estudo de suas propriedades.

O cálculo difere dos outros, pois permite, em essência, que os processos sejam passados ​​como valores de primeira classe. Na verdade, ele permite que os nomes de canais sejam transmitidos como valores de primeira classe, permitindo alterações na topologia dinâmica. Este é provavelmente o cálculo que você deseja, pois oferece a maior dinamicidade.π

CSP (comunicar processos seqüenciais) é um pouco estranho, quando visto de uma perspectiva de modelagem de moléculas. Ele tem bastante teoria de suporte e suporte a ferramentas. (Inventado pelo CAR Hoare.)

O CCS e o ACP têm menos dinamicidade que o cálculo, mas são muito mais fáceis de analisar e simular. Um conjunto de ferramentas sólido chamado μ CRL (e μ CRL2) está disponível para o ACP. Ferramentas semelhantes certamente existem para o CCS.πμμ

Começaria a examinar o trabalho relacionado (veja abaixo) e depois descobriria qual dos formalismos de modelagem se adequa ao que você está procurando.

De fato, houve muito trabalho modelando reações químicas e processos biológicos usando álgebra de processo. Provavelmente, o melhor lugar para procurar é a lista de publicações de Luca Cardelli . Toda a sua linha de pesquisa em BioComputing provavelmente possui 30 artigos sobre o assunto. Essa palestra fornece uma visão geral de grande parte de seu trabalho. Este é um pouco mais formal, embora a leitura dos jornais seja realmente a única maneira de ver os detalhes.

Uma abordagem que modela diretamente os processos químicos é o CHAM (a máquina abstrata de produtos químicos). O ingrediente chave aqui é uma solução de moléculas e membranas. Existem regras de aquecimento e resfriamento para reorganizar as moléculas e remover o lixo. Essas regras são reversíveis. Finalmente, há regras de reação que modelam reações. Ao contrário das álgebras de processo, os modelos CHAM não estão tão preocupados com a sintaxe dos processos, para que você possa inventar sua própria representação das moléculas.

A lógica de reescrita, conforme realizada no conjunto de ferramentas Maude, oferece outra abordagem mais ou menos direta para especificar essas reações. Basta especificar as regras de reescrita, a entrega da "sopa" é automática. O conjunto de ferramentas permitiria a simulação e a análise de reações químicas (pequenas). Uma variante probabilística de Maude também existe.

Dave Clarke
fonte
As redes de pesca também podem ser consideradas entre as possibilidades? o bifurcação pode ser modelado tendo um local com duas transições de saída.
M. Alaggan
De maneira mais geral, as interações no estilo petri-net podem ser modeladas em lógica linear (por exemplo, embora não seja o único, consulte "Uma estrutura lógica simultânea: o fragmento proposicional", de Watkins et al, TYPES 2003)
Rob Simmons
π
@M. Alaggan: Aparentemente, as redes de Petri podem fazer o trabalho. Cada local pode ser considerado como um pool de produtos químicos. Cada transição pode ser considerada como reação. Assim, se tivéssemos lugares chamados H e O e H2O, uma transição poderia pegar dois tokens de H um de O e colocar um token em H2O. O problema com a modelagem dessa maneira é que apenas uma de cada transição pode disparar simultaneamente, em contraste com as álgebras do processo que permitiriam que muitas dessas transições disparassem por vez.
Dave Clarke
@ Aaron: dependendo do que você está tentando fazer, cálculos de processos mais modernos como o BioPEPA podem ser úteis para você.
András Salamon
7

Outra linha de trabalho que, acredito eu, está relacionada, mas não é a mesma que a BioComputing (infelizmente não sou muito versada nessa área), é a "computação de membrana".

Minha compreensão da computação por membrana é que ela usa metáforas amplamente desenvolvidas no mundo do processo-caclui (a resposta de Dave Clarke deu um bom conjunto de indicadores lá) explicitamente para modelar interações celulares. Um bom guia para computação em membrana é provavelmente o guia A Paum e Rozenberg, do TCS, chamado de Aun to Computing por membrana . Isso foi há alguns anos atrás (e eu não estou dentro de um paywall no momento para verificar), mas acredito que alguns modelos de computação de membrana têm uma noção de "bifurcação" que supostamente espelha a mitose celular.

Rob Simmons
fonte
Obrigado, Rob. O trabalho de Cardelli não toca na computação de membrana, tanto quanto eu sei. É mais focado na construção de uma teoria da linguagem de programação para circuitos de DNA. Eu aprecio o ponteiro, mas acho que estou procurando por algo mais "mainstream" (significando que não é bio-relacionado de forma alguma).
Aaron Sterling
1
Esta é certamente uma alternativa. @Aaron: O Brane Calculus de Cardelli lucacardelli.name/Papers/Brane%20Calculi.pdf modela membranas.
Dave Clarke
Ha! O poder do crowdsourcing! Obrigado novamente! :-)
Aaron Sterling