Concurrency Research Papers - Academia.edu (original) (raw)

Computer modeling and simulation is the art of bringing to life systems and behaviors that otherwise are prohibitively expensive, unethical, or just impossible to build. This article explains how to use SimPy, a Python-based discrete... more

Computer modeling and simulation is the art of bringing to life systems and behaviors that otherwise are prohibitively expensive, unethical, or just impossible to build. This article explains how to use SimPy, a Python-based discrete event simulation framework.

Recently, much discussion has taken place within the Python programming community on how best to support concurrent programming. This paper describes a new Python library, python-csp, which implements synchronous, message-passing... more

Recently, much discussion has taken place within the Python programming community on how best to support concurrent programming. This paper describes a new Python library, python-csp, which implements synchronous, message-passing concurrency based on Hoare's Communicating Sequential Processes. Although other CSP libraries have been written for Python, python-csp has a number of novel features. The library is implemented both as an object hierarchy and as a domain-specific language, meaning that programmers can compose processes and guards using infix operators, similar to the original CSP syntax. The language design is intended to be idiomatic Python and is therefore quite different to other CSP libraries. python-csp targets the CPython interpreter and has variants which reify CSP process as Python threads and operating system processes. An equivalent library targets the Jython interpreter, where CSP processes are reified as Java threads. jython-csp also has Java wrappers which allow the library to be used from pure Java programs. We describe these aspects of python-csp, together with performance benchmarks and a formal analysis of channel synchronisation and choice, using the model checker SPIN.

The risk of New Product Development (NPD) investments is that they are wasted if users and customers do not accept their results. Living Labs set out to involve users early on in the process to reduce this risk. The paper tells the... more

The risk of New Product Development (NPD) investments is that
they are wasted if users and customers do not accept their results. Living Labs
set out to involve users early on in the process to reduce this risk. The paper
tells the story of how Coliquio discusses the contribution of Living Labs to
NPD. User acceptance is a well-known performance indicator for new product
success and user-involvement an indicator of development process maturity.
As the story suggests, the nature of Living Labs as innovation intermediary is
coordination of NPD processes in open-network settings. The paper provides a
framework of Living Lab capabilities including team mobilisation and idea
scouting, match making, product development, user validation and market
positioning, project financing and venturing for future growth. Their concurrent
coordination is a capability by itself. Living Labs are entrepreneurship
capabilities.

As an important element of the Smart Grid, Advanced Metering Infrastructure (AMI) systems have been implemented and deployed throughout the world in the past several years. An AMI system connects millions of end devices (e.g., smart... more

As an important element of the Smart Grid, Advanced Metering Infrastructure (AMI) systems have been implemented and deployed throughout the world in the past several years. An AMI system connects millions of end devices (e.g., smart meters and sensors in the residential level) with utility control centers via an efficient two-way communication infrastructure. AMI systems are able to exchange substantial meter data and control information between utilities and end devices in real-time or near real-time. The major challenge our research was to scale ABB’s Meter Data Management System (MDMS) to manage data that originates from millions of smart meters. We designed a lightweight architecture capable of collect ever-increasing large amount of meter data from various metering systems, clean, analyze, and aggregate the meter data to support various smart grid applications. To meet critical high performance requirements, various concurrency processing techniques were implemented and integrated in our prototype. Our experiments showed that on average the implemented data file parser took about 42 minutes to complete parsing, cleaning, and aggregating 5.184 billion meter reads on a single machine with the hardware configuration of 12-core CPU, 32G RAM, and SSD Hard Drives. The throughput is about 7.38 billion meter reads (206.7GB data) per hour (i.e., 1811TB/year). In addition, well-designed publish/subscribe and communication infrastructures ensure the scalability and flexibility of the system.

Tax expenditures shift responsibilities for policies promoting the public good to tax administrations. This poses practical difficulties to administrators who have to apply general rules and definitions to specific cases. The issue of... more

Tax expenditures shift responsibilities for policies promoting the public good to tax administrations. This poses practical difficulties to administrators who have to apply general rules and definitions to specific cases. The issue of competitive neutrality often proves decisive in granting the status of public utility.

Mata kuliah sistem operasi merupakan salah satu mata kuliah wajib yang harus diajarkan kepada mahasiswa yang mengambil jurusan / program studi teknik informatika / sistem informasi / teknologi informasi. Mata kuliah ini memperkenalkan... more

Mata kuliah sistem operasi merupakan salah satu mata kuliah wajib yang harus diajarkan kepada mahasiswa yang mengambil jurusan / program studi teknik informatika / sistem informasi / teknologi informasi. Mata kuliah ini memperkenalkan kepada mahasiswa mengenai konsep sistem operasi, jenis-jenis sistem operasi yang digunakan dalam kehidupan sehari-hari, layanan-layanan umum yang dimiliki oleh sistem operasi, dan mempelajari teknik dan algoritma yang digunakan dalam penerapan / pengelolaan layanan di sistem operasi. Sistem operasi adalah suatu program yang bertindak sebagai perantara antara user, program aplikasi dan perangkat keras. Beberapa layanan umum yang dimiliki oleh sistem operasi antara lain manajemen penjadwalan proses, manajemen sumber daya (resource), manajemen
memori, sistem berkas, manajenen jaringan, manajemen keamanan, manajemen penyimpanan, dan manajemen perangkat masukan-keluaran. Dalam penelitian kali ini, pembahasan akan dikerucutkan ke dalam salah satu layanan Sistem Operasi yaitu manajemen penjadwalan proses. Salah satu materi turunan dari manajemen proses yang sulit untuk dipahami oleh mahasiswa adalah Concurrency. Secara umum concurrency merupakan proses-proses (lebih dari satu proses) yang terjadi pada saat bersamaan. Beberapa algoritma yang digunakan dalam penerapan concurrency pada manajemen proses antara lain Dining Philosophers, Banker Algorithm, Producer-Consumer, dan Readers-Writers. Penjelasan terkait keempat algoritma tersebut membutuhkan logika dan tingkat keseriusan yang tinggi. Sayangnya tidak semua mahasiswa mampu untuk mempertahankan konsentrasinya dalam waktu yang lama untuk mempelajari alur logika dari keempat algoritma tersebut. Berdasarkan uraian di atas, penulis ingin merancang suatu perangkat lunak yang mampu untuk mensimulasikan keempat algoritma tersebut ke dalam bentuk media pembelajaran berbasis multimedia sehingga diharapkan akan meningkatkan daya tarik dan daya tangkap dari mahasiswa yang mempelajarinya.

Ziel dieser Arbeit ist es, eine Erzeuger–Verbraucher Anwendung in Java zu entwickeln. Anhand dieser Anwendung sollen die typischen Problemstellungen nebenläufiger Anwendungen diskutiert, sowie das Laufzeitverhalten der erstellten... more

Ziel dieser Arbeit ist es, eine Erzeuger–Verbraucher Anwendung in
Java zu entwickeln. Anhand dieser Anwendung sollen die typischen Problemstellungen nebenläufiger Anwendungen diskutiert, sowie das Laufzeitverhalten der erstellten Anwendung beobachtet und erörtert werden.

With the prevalent application of multi-core CPUs, software practitioners are facing the challenge of developing high quality multi-threaded programs. Applying concurrency design patterns is one of the best practices in multi-core... more

With the prevalent application of multi-core CPUs, software practitioners are facing the challenge of developing high quality multi-threaded programs. Applying concurrency design patterns is one of the best practices in multi-core software engineering. We comprehensively surveyed 28 concurrency design patterns, and provided a problem-oriented guide that navigates software developers towards the "right" pattern(s) with minimal search/reading effort. The guide also illustrates the relationship between concurrency design patterns and the quality attributes they address. Additionally, further investigation was conducted on how these concurrency design patterns implement quality attributes tactics. We present a mapping between surveyed concurrency design patterns and the tactics for two important quality attributes: performance and modifiability. The results of these studies provide an insight into concurrency design patterns for software developers who are seeking appropriate or improved solutions to multi-threaded software development issues.

In this paper, we describe a component-based software architecture for the Internet of Things in which proxies for Things and services that we call "accessors" interact with one another under a concurrent, time-stamped, discrete-event... more

In this paper, we describe a component-based software architecture for the Internet of Things in which proxies for Things and services that we call "accessors" interact with one another under a concurrent, time-stamped, discrete-event (DE) semantics. These proxies are analogous to web pages, which proxy a cloud-based service such as a bank, but instead of being designed to interface those services with humans, accessors are designed to interface services and Things with other services and Things. A deterministic DE semantics is combined with a widely used pattern for handling network interactions that we call asynchronous atomic callbacks (AACs). AAC enables many concurrent pending requests to be active at once without blocking and without the treacherous concurrency pitfalls of threads. In effect, our architecture combines AAC with actors where the actor model has been endowed with a temporal semantics. We show how this architecture can leverage the previously reported secure swarm toolkit (SST) to achieve state-of-the-art authentication, authorization, and encryption of interactions across networks.

Social robots must adapt to dynamic environments, human interaction partners and challenging new stringent tasks. Their inner software is usually distributed and should be designed and deployed carefully because slight changes in the... more

Social robots must adapt to dynamic environments, human interaction partners and challenging new stringent tasks. Their inner software is usually distributed and should be designed and deployed carefully because slight changes in the robot’s requirements can have an important impact not only on the existing source code but also on the resulting performance at run-time. This paper proposes an implementation of this inner software using a new lightweight middleware for networked robotics called Nerve. The principal novelty this middleware has with respect to other state-of-the-art approaches is that it guarantees both scalability and QoS, which are key requirements for real-time robotics software. The benefits of Nerve have been proved through its use in two key components of the cognitive system of a social robot: (i) the visual attention mechanism, used to extract relevant data from perceived images; and (ii) a robot learning by imitation control architecture that allows the social robot to be taught by people using natural demonstrations (i.e. using the same communication channels that would be used to teach people). Nerve makes use of existing patterns for networked applications together with the recent Data Distribution Service specification, which is a publish/subscribe standard for real-time and distributed systems that provides a wide set of QoS policies. In this paper, these different QoS policies have been applied carefully to achieve the best performance of the target
robot.

In this paper, we deal with optimizing the monetary costs of executing parallel applications in cloud-based environments. Specifically, we investigate on how scalability characteristics of parallel applications impact the total costs of... more

In this paper, we deal with optimizing the monetary costs of executing parallel applications in cloud-based environments. Specifically, we investigate on how scalability characteristics of parallel applications impact the total costs of computations. We focus on a specific class of irregularly structured problems , where the scalability typically depends on the input data. Consequently, dynamic optimization methods are required for minimizing the costs of computation. For quantifying the total monetary costs of individual parallel computations, the paper presents a cost model that considers the costs for the parallel infrastructure employed as well as the costs caused by delayed results. We discuss a method for dynamically finding the number of processors for which the total costs based on our cost model are minimal. Our extensive experimental evaluation gives detailed insights into the performance characteristics of our approach.

There has been a growing interest in programming models for con-currency. Strategies for dealing with shared data amongst parallel threads of execution include immutable (as in Erlang) and locked (as in Python) data structures. A third... more

There has been a growing interest in programming models for con-currency. Strategies for dealing with shared data amongst parallel threads of execution include immutable (as in Erlang) and locked (as in Python) data structures. A third option exists, called transactional memory (as in Haskell), which includes thread-local journaling for operations on objects which are both mutable and globally shared. Here, we present TraM, a pure Python implementation of the TL2 algorithm for software transactional memory.

Many software development organizations struggle to make informed decisions when investing in new software technologies. The authors' experimental framework can help companies evaluate a new software technology by examining its features... more

Many software development organizations struggle to make informed decisions when investing in new software technologies. The authors' experimental framework can help companies evaluate a new software technology by examining its features in relation to its peers and competitors through a systematic approach that includes modeling experiments

ProCoS aims to improve dependability, reduce timescales and cut development costs of construction for embedded systems, particularly in real-time and safety-critical applications. It uses and develops the results of basic research into... more

ProCoS aims to improve dependability, reduce timescales and cut development costs of construction for embedded systems, particularly in real-time and safety-critical applications. It uses and develops the results of basic research into fundamental properties of interactive systems. It aims to provide a scienti fic basis for future standards of practice in the development of embedded systems, ensuring correctness of all stages in the development, from elicitation and analysis of requirements through design and implementation of programs down
to compilation and execution on veri fied hardware.