35 research outputs found
Actors that Unify Threads and Events
There is an impedance mismatch between message-passing concurrency and virtual machines, such as the JVM. VMs usually map their threads to heavyweight OS processes. Without a lightweight process abstraction, users are often forced to write parts of concurrent applications in an event-driven style which obscures control flow, and increases the burden on the programmer. In this paper we show how thread-based and event-based programming can be unified under a single actor abstraction. Using advanced abstraction mechanisms of the Scala programming language, we implemented our approach on unmodified JVMs. Our programming model integrates well with the threading model of the underlying VM
Virtual Machine Support for Many-Core Architectures: Decoupling Abstract from Concrete Concurrency Models
The upcoming many-core architectures require software developers to exploit
concurrency to utilize available computational power. Today's high-level
language virtual machines (VMs), which are a cornerstone of software
development, do not provide sufficient abstraction for concurrency concepts. We
analyze concrete and abstract concurrency models and identify the challenges
they impose for VMs. To provide sufficient concurrency support in VMs, we
propose to integrate concurrency operations into VM instruction sets.
Since there will always be VMs optimized for special purposes, our goal is to
develop a methodology to design instruction sets with concurrency support.
Therefore, we also propose a list of trade-offs that have to be investigated to
advise the design of such instruction sets.
As a first experiment, we implemented one instruction set extension for
shared memory and one for non-shared memory concurrency. From our experimental
results, we derived a list of requirements for a full-grown experimental
environment for further research
Programming and Deployment of Active Objects with Application-Level Scheduling
We extend and implement a modeling language based on
concurrent active objects with application-level scheduling
policies. The language allows a programmer to assign pri-
orities at the application level, for example, to method def-
initions and method invocations, and assign corresponding
policies to the individual active objects for scheduling the
messages. Thus, we leverage scheduling and performance
related issues, which are becoming increasingly important
in multi-core and cloud applications, from the underlying
operating system to the application level. We describe a
tool-set to transform models of active objects extended with
application-level scheduling policies into Java. This tool-set
allows a direct use of Java class libraries; thus, we obtain a
full-fledged programming language based on active objects
which allows for high-level control of deployment related is-
sues
Programming and deployment of active objects with application-level scheduling
We extend and implement a modeling language based on concurrent active objects with application-level scheduling policies. The language allows a programmer to assign pri-orities at the application level, for example, to method def-initions and method invocations, and assign corresponding policies to the individual active objects for scheduling the messages. Thus, we leverage scheduling and performance related issues, which are becoming increasingly important in multi-core and cloud applications, from the underlying operating system to the application level. We describe a tool-set to transform models of active objects extended with application-level scheduling policies into Java. This tool-set allows a direct use of Java class libraries; thus, we obtain a full-fledged programming language based on active objects which allows for high-level control of deployment related is-sues
An Automatic Actors to Threads Mapping Technique for JVM-Based Actor Frameworks
Actor frameworks running on Java Virtual Machine (JVM) platform face two main challenges in utilizing multi-core architectures, i) efficiently mapping actors to JVM threads, and ii) scheduling JVM threads on multi-core. JVM-based actor frameworks allow fine tuning of actors to threads mapping, however scheduling of threads on multi-core is left to the OS scheduler. Hence, efficiently mapping actors to threads is critical for achieving good performance and scalability. In the existing JVM-based actor frameworks, programmers select default actors to threads mappings and iteratively fine tune the mappings until the desired performance is achieved. This process is tedious and time consuming when building large scale distributed applications. We propose a technique that automatically maps actors to JVM threads. Our technique is based on a set of heuristics with the goal of balancing actors computations across JVM threads and reducing communication overheads. We explain our technique in the context of the Panini programming language, which provides capsules as an actor-like abstraction for concurrency, but also explore its applicability to other approaches
Решение задачи распределенного индексирования в оперативной памяти на базе модели актеров с использованием фреймворка Akka
Описана программная система построения распределенного координатного индекса в оперативной памяти на базе модели актеров с использованием языка программирования Java и фреймворка Akka. Система позволяет подключать в сеть любое количество машин, легко расширятся и обрабатывать фразовые запросы. Реализованная в системе поддержка репликаций обеспечивает стабильную работу.The distributed solving system for construction of coordinate index in the RAM based on model of actors using Java programming language and framework Akka is described. The system allows to connect any number of machines, it expands easily, allowing to process phrase queries. The system provides ability to replicate that ensures its stable operations.Описано програмну систему побудови розподіленого координатного індексу в оперативній пам’яті на базі моделі акторів з використанням мови програмування Java і фреймворку Akka. Система дозволяє під’єднувати будь-яку кількість машин, легко розширюватися та опрацьовувати фразові запити. Реалізована в системі підтримка реплікації забезпечує стабільну роботу
Ренесанс використання моделі акторів до побудови паралельних та розподілених застосунків
У статті проаналізована модель акторів (Actor model) як засіб високорівневого підходу до побудови паралельних та розподілених систем. Досліджено розвиток моделі під впливом парадигми об’єктно-орієнтованого програмування та формування головних властивостей акторів. Розглянуто основні особливості реалізації моделі за допомогою об’єктно-функціональної мови Scala на прикладі бібліотеки Akka