Tracking CSP computations

[EN] Tracing is one of the most important techniques for program understanding and debugging. A trace gives the user access to otherwise hidden information about a computation. In the context of concurrent languages, computations are particularly complex due to the non-deterministic execution order...

Descripción completa

Detalles Bibliográficos
Autores: Llorens Agost, María Luisa|||0000-0002-2790-0055, Oliver Villarroya, Javier|||0000-0002-1169-1260, Silva, Josep|||0000-0001-5096-0008, Tamarit Muñoz, Salvador
Tipo de recurso: artículo
Fecha de publicación:2019
País:España
Institución:Universitat Politècnica de València (UPV)
Repositorio:RiuNet. Repositorio Institucional de la Universitat Politécnica de Valéncia
Idioma:inglés
OAI Identifier:oai:riunet.upv.es:10251/145536
Acceso en línea:https://riunet.upv.es/handle/10251/145536
Access Level:acceso abierto
Palabra clave:Concurrency theory/modeling
CSP
Semantics
Tracking
LENGUAJES Y SISTEMAS INFORMATICOS
CIENCIAS DE LA COMPUTACION E INTELIGENCIA ARTIFICIAL
Descripción
Sumario:[EN] Tracing is one of the most important techniques for program understanding and debugging. A trace gives the user access to otherwise hidden information about a computation. In the context of concurrent languages, computations are particularly complex due to the non-deterministic execution order of processes and to the restrictions imposed on this order by synchronizations; hence, a tracer is a powerful tool to explore, understand and debug concurrent computations. In CSP, traces are sequences of events that define a particular execution. This notion of trace is completely different to the one used in other paradigms where traces are formed by those source code expressions evaluated during a particular execution. We refer to this second notion of traces as tracks. In this work, we introduce the theoretical basis for tracking concurrent and explicitly synchronized computations in process algebras such as CSP. Tracking computations in this kind of systems is a difficult task due to the subtleties of the underlying operational semantics which combines concurrency, non-determinism and non-termination. We define an instrumented operational semantics that generates as a side-effect an appropriate data structure (a track) which can be used to track computations. The formal definition of a tracking semantics improves the understanding of the tracking process, but also, it allows us to formally prove the correctness of the computed tracks. (C) 2018 Elsevier Inc. All rights reserved.