Quando un processo genera un altro processo


13

Il mio background è nella teoria / logica della complessità (dove c'è un solo processo per la maggior parte del tempo) e nel calcolo distribuito (dove ci sono processi e uno o più potrebbero fallire nel tempo). Tuttavia, ora voglio essere in grado di dire qualcosa su un processo che genera / crea / gira via un altro processo. C'è rigore nell'elaborazione parallela, nei sistemi operativi, ecc., Che spiega questo?n

Motivazione:

Sto cercando di costruire modelli che astraggano determinate caratteristiche delle interazioni molecolari. Vorrei dire che l'insieme di reazioni chimiche è un processo indipendente e che a un certo punto t genera un altro processo indipendente S . Intuitivamente, queste cose si sentono come processi indipendenti, perché non hanno alcun contatto con l'altro dopo il tempo t - "messaggi" o molto poco contatto, solo scambiandoStSt

Più formalmente:

(1) Esistono definizioni CS preesistenti che catturano l'idea di un processo generando un altro processo indipendente? Sono particolarmente interessato a essere in grado di delimitare dove ferma e S e perché questo è "ragionevole" da fare.SS

(2) Se esiste più di una risposta a (1), quali sono i pro ei contro delle varie definizioni?

(Nota: non ho idea di come etichettarlo in modo appropriato e ho intenzione di ricodificare in base alle risposte.)


Ho sempre trovato la forkchiamata di sistema in sistemi operativi simili a Unix concettualmente molto eleganti. Puoi vederlo come un'operazione atomica che duplica il processo corrente. Prima di un fork, c'era solo un processo , mentre dopo il fork ci sono due processi S e S ' . Se semplifichiamo eccessivamente le cose, S e S ' sono identici in tutti gli altri aspetti, tranne per il fatto che esiste un indicatore a un bit che fa sapere a S che è il "nuovo" processo mentre S sa che è il processo "originale". Dopo che S e S SSSSSSSSSpossono continuare separatamente e possono persino modificarsi .
Jukka Suomela,

@Jukka: Grazie :-) Sarebbe bello se ci fosse un modo per collegare ciò che sto facendo a una primitiva Unix.
Aaron Sterling,

Risposte:


13

Naturalmente ci sono molti sistemi per i processi di modellazione. Questi rientrano nella categoria delle algebre di processo . Gli esempi chiave sono -calculusπ , CCS , ACP e CSP .

I calcoli di processo hanno meccanismi di base per specificare il comportamento del processo, tra cui: invio e ricezione di messaggi (in modo sincrono o asincrono), creazione di processi paralleli, scelta non deterministica tra comportamenti e replica dei processi. Sebbene i calcoli siano piccoli in termini di numero di costrutti, sono molto espressivi e una grande quantità di ricerca è stata dedicata allo studio delle loro proprietà.

Il calcolo differisce dagli altri in quanto consente, in sostanza, che i processi vengano passati come valori di prima classe. In realtà consente ai nomi dei canali di essere passati come valori di prima classe, consentendo cambiamenti nella topologia dinamica. Questo è probabilmente il calcolo che desideri perché offre la massima dinamicità.π

Il CSP (comunicazione dei processi sequenziali) è un po 'strano, se visto dal punto di vista della modellizzazione delle molecole. Ha un sacco di teoria del supporto e supporto degli strumenti. (Inventato da CAR Hoare.)

CCS e ACP hanno meno dinamicità rispetto al calcolo , ma sono molto più facili da analizzare e simulare. Un set di strumenti solido chiamato μ CRL (e μ CRL2) è disponibile per ACP. Strumenti simili esistono sicuramente per CCS.πμμ

Inizierei a esaminare il lavoro correlato (vedi sotto) e poi troverei quale dei formalismi di modellistica si adatta a quello che stai cercando.

In effetti, ci sono stati molti lavori per modellare reazioni chimiche e processi biologici usando l'algebra di processo. Probabilmente il posto migliore dove cercare è la lista delle pubblicazioni di Luca Cardelli . Tutta la sua linea di ricerca su BioComputing ha probabilmente 30 articoli sull'argomento. Questo discorso offre una panoramica di gran parte del suo lavoro. Questo uno è leggermente più formale, anche se leggendo i giornali è davvero l'unico modo per vedere i dettagli.

Un approccio che modella direttamente i processi chimici è CHAM (la macchina chimica astratta). L'ingrediente chiave qui è una soluzione di molecole e membrane. Esistono regole di riscaldamento e raffreddamento per riorganizzare le molecole e rimuovere la spazzatura. Queste regole sono reversibili. Infine ci sono regole di reazione che modellano le reazioni. Contrariamente alle algebre di processo, i modelli CHAM non sono così preoccupati per la sintassi dei processi, quindi puoi inventare la tua rappresentazione delle molecole.

Riscrivere la logica come realizzata nel set di strumenti Maude offre un altro approccio più o meno diretto per specificare tali reazioni. Basta specificare le regole di riscrittura, la consegna della "zuppa" è automatica. Il set di strumenti consentirebbe la simulazione e l'analisi di reazioni chimiche (piccole). Esiste anche una variante probabilistica di Maude.


Le reti di Petri potrebbero anche essere considerate tra le possibilità? il fork potrebbe essere modellato avendo un posto con due transizioni in uscita.
M. Alaggan,

Più in generale, le interazioni di stile petri-net possono essere modellate in logica lineare (per un esempio, sebbene non l'unico, vedi "Un quadro logico concorrente: il frammento proposizionale" di Watkins et al, TYPES 2003)
Rob Simmons,

π

@M. Alaggan: In apparenza sembra che le reti di Petri possano fare il lavoro. Ogni luogo potrebbe essere considerato come un pool di sostanze chimiche. Ogni transizione potrebbe essere considerata come una reazione. Quindi se avessimo posti chiamati H e O e H2O, una transizione potrebbe prendere due token da H uno da O e mettere un token in H2O. Il problema con la modellazione in questo modo è che solo una di ciascuna di queste transizioni può sparare contemporaneamente, al contrario di elaborare algebre che consentirebbero a molte di queste transizioni di sparare alla volta.
Dave Clarke,

@Aaron: a seconda di ciò che stai cercando di fare, calcoli di processo più moderni come BioPEPA potrebbero esserti utili.
András Salamon,

7

Un'altra linea di lavoro che - credo - è collegata ma non uguale al BioComputing (sfortunatamente non sono molto esperto in questo settore) è il "calcolo a membrana".

La mia comprensione del calcolo a membrana è che utilizza metafore ampiamente sviluppate nel mondo dei processi-caclui (la risposta di Dave Clarke ha fornito lì un buon set di puntatori) esplicitamente per modellare le interazioni cellulari. Una buona guida all'informatica su membrana è probabilmente la guida A sull'informatica su membrana di Paun e Rozenberg nel TCS. È stato qualche anno fa (e al momento non sono all'interno di un paywall da verificare), ma credo che alcuni modelli di calcolo a membrana abbiano una nozione di "biforcazione" che dovrebbe in qualche modo rispecchiare la mitosi cellulare.


Grazie Rob. Per quanto ne so, il lavoro di Cardelli non tocca il calcolo a membrana. È più concentrato sulla costruzione di una teoria del linguaggio di programmazione per i circuiti del DNA. Apprezzo il puntatore, ma immagino che sto cercando qualcosa di più "mainstream" (che non significa in alcun modo bio-correlato in alcun modo).
Aaron Sterling,

1
Questa è sicuramente un'alternativa. @Aaron: le membrane dei modelli Brane Calculus lucacardelli.name/Papers/Brane%20Calculi.pdf .
Dave Clarke,

Ha! Il potere del crowdsourcing! Grazie ancora! :-)
Aaron Sterling
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.