1 |
[en] REVISITING COROUTINES / [pt] REVISITANDO CO-ROTINASANA LUCIA DE MOURA 27 October 2004 (has links)
[pt] O objetivo deste trabalho é defender o resgate do conceito
de co-rotinas como uma construção de controle poderosa e
conveniente, que pode substituir tanto continuações de
primeira classe como threads com um conceito único e mais
simples. Para suprir a ausência de uma definição precisa e
adequada para o conceito de co-rotinas, propomos um novo
sistema de classificação, e introduzimos o conceito de co-
rotinas completas, para o qual provemos uma definição
formal, baseada em uma semântica operacional. Demonstramos
a seguir a equivalência de poder expressivo entre co-rotinas
completas simétricas e assimétricas e entre co-rotinas
completas e continuações one-shot tradicionais e parciais,
discutindo as vantagens de corotinas completas assimétricas
em relação a co-rotinas simétricas e continuações de
primeira classe. Finalmente, analizamos os benefícios e
desvantagens associados aos diversos modelos de
concorrência, justificando a adoção de modelos alternativos
a multithreading e o oferecimento de co-rotinas como
uma construção básica de concorrência, adequada à
implementação desses modelos. / [en] The purpose of this work is to defend the revival of
coroutines as a powerful and convenient control construct,
which can replace both firstclass continuations and threads
with a single and simpler concept. In order to provide an
adequate and precise definition of the concept of
coroutines, we propose a new classifying system, and
introduce the concept of complete coroutines, for which we
provide a formal definition based on an operational
semantics. We then demostrate that complete symmetric
coroutines and complete asymmetric coroutines have
equivalent expressive power, as well as complete coroutines
and one-shot traditional and partial continuations. We
also discuss the advantages of using complete asymmetric
coroutines instead of symmetric coroutines or first-class
continuations. Finally, we analyse the benefits and
problems associated with different concurrency models,
and argue in favor of the replacement of multithreading
with alternative concurrency models and the provision of
coroutines as a basic concurrency construct, adequate for
the implementation of these alternative models.
|
2 |
[en] A FLEXIBLE APPROACH TO STAGED EVENTS / [pt] UMA ABORDAGEM FLEXÍVEL PARA O MODELO DE CONCORRÊNCIA EM ESTÁGIOSTIAGO LIMA SALMITO 11 August 2015 (has links)
[pt] O objetivo deste trabalho é explorar e estender a exibilidade provida pelo modelo híbrido de concorrência orientado a estágios, que visa integrar tanto loops de eventos cooperativos como threads preemptivas em um conceito único de mais alto nível. As contribuições deste trabalho estão centradas numa proposta de extensão do modelo de estágios que desacopla a especificação de aplicações concorrentes das decisões relacionadas ao ambiente de execução, permitindo que elas sejam fexivelmente mapeadas em diferentes configurações de acordo com as necessidades de escalonamento de tarefas e granularidade de processamento em partes específicas da aplicação. Procurando prover uma definição adequada para o conceito de modelos de concorrê-
ncia híbridos, propomos um sistema de classificação que se baseia na combinação de características básicas de sistemas concorrentes e a possibilidade de execução paralela em múltiplos processadores. Com base nessa classificação, analisamos os benefícios e desvantagens associados a cada modelo de concorrência, justificando a adoção de modelos que combinam threads e eventos em um mesmo ambiente de programação, e descrevemos a extensão do paradigma de programação orientado a estágios. Finalmente, apresentamos
a implementação do modelo proposto na linguagem Lua e seu uso em cenários de execução que confirmam os benefícios da extensão do modelo de estágios na especificação de aplicações concorrentes. / [en] The purpose of this work is to explore and extend the
flexibility provided by the staged event-driven concurrency model to integrate both cooperative
event loops and preemptive threads in a single high level abstraction.
The contributions of this work are focused on the extension of the staged
model that decouples the specification of concurrent applications of the
decisions related to the execution environment, allowing them to be fl
exibly mapped to different configurations according to the task scheduling needs
and processing granularity in specific parts of the application. In order to
provide an adequate definition of the concept of hybrid concurrency models,
we propose a classification system that is based on the combination of basic
features of concurrent systems and the possibility of parallel execution on
multiple processors. Based on this classification, we analyze the benefits and
drawbacks associated with each concurrency model, justifying the adoption
of models that combine threads and events in the same programming
environment and the extension of the staged model. Finally, we present the
implementation of the proposed model in the Lua programming language
and its use in execution scenarios that confirm the benefits of the extension
of the staged model in the specification of concurrent applications.
|
3 |
[en] A PROGRAMMING INTERFACE FOR OVERLOAD CONTROL IN STAGED EVENT BASED ARCHITECTURES / [pt] UMA INTERFACE DE PROGRAMAÇÃO PARA CONTROLE DE SOBRECARGA EM ARQUITETURAS BASEADAS EM ESTÁGIOSBRENO RIBA DA COSTA CRUZ 22 February 2016 (has links)
[pt] Controle de sobrecarga pode ser feito com o uso de políticas de escalonamento adequadas, que procuram ajustar dinamicamente os recursos alocados a uma aplicação. Pela dificuldade de implementação, muitas vezes desenvolvedores se veem obrigados a reprogramar o sistema para adequá-lo a uma determinada política. Através do estudo de diversas políticas de escalonamento, propomos neste trabalho um modelo de interface que permite a criação e monitoração de novas políticas dentro de arquiteturas baseadas em estágios. Implementamos a interface de programação proposta e exercitamos um conjunto de políticas que construímos sobre ela em duas aplicações com características de carga bem distintas. / [en] Specific scheduling policies can be appropriate for overload control in
different application scenarios. However, these policies are often difficult to
implement, leading developers to reprogram entire systems in order to adapt
them to a particular policy. Through the study of various scheduling policies,
we propose an interface model that allows the programmer to integrate
new policies and monitoring schemes to the same application in a Staged
Event-Driven Architecture. We describe the implementation of the proposed
interface and the results of it s use in implementing a set of scheduling
policies for two applications with different load profiles.
|
4 |
[en] PARALLEL PROGRAMING IN THE REDIS KEY-VALUE DATASTORE / [pt] PROGRAMAÇÃO PARALELA NO BANCO DE DADOS CHAVE-VALOR REDISJUAREZ DA SILVA BOCHI 12 April 2016 (has links)
[pt] Redis é um banco de dados chave-valor de código livre que dá suporte à
avaliação de scripts Lua, mas sua implementação utiliza apenas uma tarefa
de sistema operacional. Scripts longos são desencorajados porque a avaliação
do código é bloqueante, o que pode causar degradação de desempenho para
os demais usuários. Através da aplicação do modelo de concorrência M:N,
que combina tarefas de nível de sistema operacional com tarefas do nível
de usuário, adicionamos no Redis a capacidade de execução de scripts em
paralelo, permitindo que todos os núcleos do servidor sejam explorados.
Com a utilização de corotinas Lua, implementamos um escalonador capaz
de alocar e suspender a execução de tarefas de nível de usuário nos núcleos
disponíveis sem necessidade de alteração do código dos scripts. Este modelo
permitiu proteger o programador das complexidades naturais do paralelismo
como sincronização no acesso a recursos compartilhados e escalonamento
das tarefas. / [en] Redis is an open source key-value database that supports Lua programming
language scripts, but it s implementation is single threaded. Long running
scripts are discouraged because script evaluation is blocking, which may
cause service levels deterioration. Applying the M:N threading model,
which combines user and operating system threads, we added to Redis the
ability of running scripts in parallel, leveraging all server cores.With the use
of Lua coroutines, we implemented a scheduler able to allocate and suspend
user-level tasks in the available cores without the need of changing scripts
source code. The M:N model allowed us to protect the programmer from the
natural complexities that arise from parallel programming, such as access
to shared resources synchronization and scheduling of tasks into different
operational system threads.
|
Page generated in 0.046 seconds