1 |
[en] AN ALTERNATIVE MODEL FOR CONCURRENT PROGRAMMING IN LUA / [pt] UM MODELO ALTERNATIVO PARA PROGRAMAÇÃO CONCORRENTE EM LUAALEXANDRE RUPERT ARPINI SKYRME 23 July 2008 (has links)
[pt] A popularização dos processadores multinúcleo e de
tecnologias como o hyper-threading evidencia uma mudança de
foco na evolução dos processadores. Essa mudança fomenta o
interesse por programação concorrente e a exploração de
paralelismo para obtenção de melhor desempenho. Entretanto,
os modelos atuais para programação concorrente são alvo de
críticas recorrentes, o que estimula a elaboração de
propostas alternativas. Este trabalho apresenta uma análise
crítica do multithreading preemptivo com compartilhamento de
memória, um modelo amplamente utilizado para programação
concorrente, e faz um breve apanhado de trabalhos que
abordam alternativas para programação concorrente. Em
seguida, propõe um modelo para programação concorrente
estruturado com a linguagem de programação Lua e descreve as
suas principais características e vantagens. Finalmente,
apresenta os resultados da avaliação de diversos aspectos de
uma biblioteca desenvolvida para implementar o modelo proposto. / [en] The popularization of multi-core processors and of
technologies such as hyper-threading indicates a different
approach to the evolution of processors. This new approach
brings about an increased interest in concurrent
programming and the exploration of parallelism in order to
achieve better performance. However, concurrent programming
models now in use are subject to recurring criticism, which
stimulates the development of alternative
proposals. This work presents a critical analysis of
preemptive multithreading with shared memory, which is a
widely used model for concurrent programming,
and brie y summarizes some studies that deal with
alternatives for concurrent programming. It then, proposes a
model for concurrent programming structured with the Lua
programming language and describes its main characteristics
and advantages. Finally, it presents the results of
an evaluation of several aspects of a library developed to
implement the proposed model.
|
2 |
[en] A MULTIGRANULARITY LOCKING MODEL FOR RDF / [pt] UM MODELO DE BLOQUEIO MULTIGRANULAR PARA RDFMARK DOUGLAS DE AZEVEDO JACYNTHO 17 August 2012 (has links)
[pt] Em aplicações Web, sessões cliente são organizadas em transações,
envolvendo requisições que leem e atualizam dados compartilhados.
Executando concorrentemente, estas sessões podem invalidar os dados umas
das outras. O advento do movimento Linked Data vem estimulando
sobremaneira a criação de aplicações que empregam o modelo de dados RDF
em sua camada de informação. Além de consultas aos dados RDF, também se
faz presente o requisito de atualizações online, com adequado controle de
concorrência. Este trabalho apresenta um modelo de bloqueio, inspirado no
protocolo de bloqueio multigranular, voltado para isolamento entre transações
que manipulam dados RDF, considerando quatro problemas de concorrência, a
saber: lost updates, dirty reads, non-repeatable read e phantoms reads. São
oferecidos quatro grânulos hierarquicamente relacionados, bem como novos
tipos de bloqueio de escrita e leitura, especificamente criados para o modelo
RDF. Por fim, o desempenho do modelo de bloqueio proposto é avaliado por
meio de simulação. / [en] Client sessions in Web applications are organized as transactions involving
requests that read and write shared data. Executing concurrently, these sessions
may invalidate each other s data. The advent of Linked Data is spurring the
deployment of applications that use the RDF data model at the information tier. In
addition to querying RDF data, there is also the requirement for online updates
with suitable concurrency control. This work presents a locking model, inspired
by the multigranularity locking protocol, to address isolation between transactions
that manipulate RDF data, considering four concurrency-related issues, namely:
lost updates, dirty reads, non-repeatable reads and phantom reads. Four
hierarchically related granules are offered, as well as new read and write lock
modes, specifically created for the RDF data model. Finally, the performance
assessment of the proposed locking model is done through simulation.
|
3 |
[en] SAFE RECORD SHARING IN DYNAMIC PROGRAMMING LANGUAGES / [pt] COMPARTILHAMENTO SEGURO DE REGISTROS EM LINGUAGES DE PROGRAMAÇÃO DINÂMICASALEXANDRE RUPERT ARPINI SKYRME 29 February 2016 (has links)
[pt] Linguagens de programação dinâmicas estão cada vez mais populares e já
foram utilizadas para desenvolver uma ampla gama de aplicações. Enquanto
isso, processadores multi-núcleo se tornaram padrão, mesmo em computadores
pessoais e dispositivos móveis. Dessa forma, os programadores precisam
recorrer ao paralelismo para aprimorar o desempenho de seus programas.
Entretanto, a programação concorrente permanece difícil. Adicionalmente,
a despeito de avanços em linguagens estáticas, avaliamos que linguagens
dinâmicas ainda carecem de suporte adequado à concorrência. Nesta
tese argumentamos que o principal problema da programação concorrente é
a imprevisibilidade - comportamentos inesperados de programas, tais como
retornar valores descabidos. Observamos que a imprevisibilidade é mais
provável quando memória compartilhada é utilizada. Consequentemente,
propomos um modelo de comunicação para concorrência que visa disciplinar
o compartilhamento de memória em linguagens dinâmicas. O modelo
é baseado nos padrões emergentes de concorrência de não compartilhar dados
por padrão, imutabilidade de dados e tipos e efeitos (que transformamos
em capacidades). Ele demanda a utilização de objetos compartilháveis para
compartilhar dados e utiliza troca de mensagens para comunicação entre
fluxos de execução. Objetos compartilháveis podem ser compartilhados apenas para
leitura ou para leitura e escrita, o que permite acesso individual de
escrita e acessos paralelos de leitura. Implementamos um protótipo em Lua
para experimentar com o modelo na prática, bem como para conduzir uma
avaliação geral de desempenho. A avaliação demonstra que há benefícios na
utilização de memória compartilhada, mas ao mesmo tempo revela que os
controles utilizados para assegurar a disciplina ocasionam um impacto de
desempenho. / [en] Dynamic programming languages have become increasingly popular and
have been used to implement a range of applications. Meanwhile, multicore
processors have become the norm, even for desktop computers and
mobile devices. Therefore, programmers must turn to parallelism as a
means to improve performance. However, concurrent programming remains
difficult. Besides, despite improvements in static languages, we find dynamic
languages are still lacking in concurrency support. In this thesis, we argue
that the main problem with concurrent programming is unpredictability -
unexpected program behaviors, such as returning out-of-thin-air values. We
observe that unpredictability is most likely to happen when shared memory
is used. Consequently, we propose a concurrency communication model to
discipline shared memory in dynamic languages. The model is based on
the emerging concurrency patterns of not sharing data by default, data
immutability, and types and effects (which we turn into capabilities). It
mandates the use of shareable objects to share data. Besides, it establishes
that the only means to share a shareable object is to use message passing.
Shareable objects can be shared as read-write or read-only, which allows
both individual read-write access and parallel read-only access to data. We
implemented a prototype in Lua, called luashare, to experiment with the
model in practice, as well as to carry out a general performance evaluation.
The evaluation showed us that safe data sharing makes it easier to allow
for communication among threads. Besides, there are situations where
copying data around is simply not an option. However, enforcing control
over shareable objects has a performance cost, in particular when working
with nested objects.
|
4 |
[en] CONCURRENCY AND COORDINATION MODELS FOR EVENT-DRIVEN IN LUA / [pt] MODELOS DE CONCORRÊNCIA E COORDENAÇÃO PARA O DESENVOLVIMENTO DE APLICAÇÕES ORIENTADAS A EVENTOS EM LUABRUNO OLIVEIRA SILVESTRE 08 February 2010 (has links)
[pt] O uso de multithreading tem se popularizado como forma de separar a execução
de tarefas concorrentes e de alcançar maior desempenho aproveitando melhor o
tempo das CPUs. No entanto, a programação com threads não é uma tarefa fácil.
O uso dos recursos compartilhados deve ser coordenado, pois o acesso concorrente
aos mesmos, na maioria dos casos, gera inconsistência na aplicação. O
modelo de desenvolvimento orientado a eventos foi apontado por alguns como
uma boa alternativa na criação de aplicações. Nesse modelo, a tarefa é realizada
por um ou mais eventos, e um loop principal fica responsável por receber
e despachar esses eventos. Investigamos, neste trabalho, um modelo em Lua que
combina orientação a eventos com preempção sem trazer de volta os problemas
de programação concorrente. Investigamos também como características da linguagem
podem ser utilizadas para prover mecanismos de coordenação flexíveis.
Essas características podem ajudar, por exemplo, a compor novos mecanismos a
partir de existentes. / [en] Multithreading has become popular as a way to organize concurrent tasks and
achieve better performance from CPUs. However, programming with threads is
not an easy task. Usage of shared resources needs to be coordinated because
concurrent access to them, in most cases, may create inconsistency in the
application. The event-driven model has been pointed as a good alternative
to multithreaded programming. In this model, a task is performed by one or
more events, where a main loop is responsible for receiving and dispatching
these events. In this work, we investigate a model to combine event-driven
and preemption in Lua without bringing back all the concurrent programming
problems. We also investigate how the language’s characteristics can be used
to provide flexible coordination mechanisms. These characteristics can aid, for
example, to create new mechanisms based on the ones already existent.
|
5 |
[en] CONCURRENT PROGRAMMING IN LUA: REVISITING THE LUAPROC LIBRARY / [pt] PROGRAMAÇÃO CONCORRENTE EM LUA: REVISITANDO A BIBLIOTECA LUAPROCLIANDER MILLAN FERNANDEZ 09 June 2017 (has links)
[pt] Nos últimos anos, a tendência por aumentar o desempenho de um microprocessador, como uma solução alternativa para a crescente demanda por recursos computacionais de aplicações e sistemas, diminuiu significativamente. Isto levou a um aumento do interesse em utilizar ambientes multi-processados.
Embora muitos modelos e bibliotecas tenham sido desenvolvidos para oferecer suporte à programação concorrente, garantir que vários fluxos de execução acessem recursos compartilhados de forma controlada continua a ser uma tarefa complexa. A biblioteca Luaproc, que oferece suporte para a concorrência em
Lua, mostrou alguma promessa em termos de desempenho e casos de uso. Nesta tese, nós estudamos a biblioteca Luaproc e incorporamos-lhe novas funcionalidades a fim de torná-la mais amigável e estender o seu uso a novos cenários. Primeiro, nós apresentamos as motivações para nossas extensões a Luaproc, discutindo formas alternativas de lidar com as limitações existentes. Em seguida, nós apresentamos requisitos, características da implementação e limitações associadas a cada um dos mecanismos desenvolvidos como soluções alternativas a essas limitações. Finalmente, nós utilizamos as funcionalidades incorporadas na implementação de algumas aplicações concorrentes, a fim de avaliar o desempenho e testar o funcionamento adequado de tais mecanismos. / [en] In recent years, the tendency to increase the performance of a microprocessor, as an alternative solution to the increasing demand for computational resources of both applications and systems, has decreased
significantly. This has led to an increase of the interest in employing multiprocessing environments. Although many models and libraries have been developed to offer support for concurrent programming, ensuring that several execution ows access shared resources in a controlled way remains a complex task. The Luaproc library, which provides support for concurrency in Lua, has shown some promise in terms of performance and cases of use. In this thesis, we study the Luaproc library and incorporate to it new functionalities in order to make it more user friendly and extend its use to new scenarios. First, we introduce the motivations to our extensions to Luaproc, discussing alternative ways of dealing with the existing limitations. Then, we present requirements, characteristics of the implementation, and limitations associated to each of the mechanisms implemented as alternative solutions to these limitations. Finally, we employ the incorporated functionalities in implementing some concurrent applications, in order to evaluate the performance and test the proper functioning of such mechanisms.
|
6 |
[en] CONCURRENCY AND SANDBOXES MODELS APPLIED TO LUA HTTP SERVERS / [pt] MODELOS DE CONCORRÊNCIA E SANDBOXES APLICADOS A SERVIDORES HTTP EM LUALEONARDO GODINHO DA CUNHA 09 April 2007 (has links)
[pt] Os desenvolvedores de sistemas cliente-servidor
constantemente se deparam
com questões de desempenho e escalabilidade, muitas vezes
o número de
clientes simultâneos de um servidor pode crescer de forma
significativa.
Além disso, se esses sistemas podem executar códigos de
terceiros, passa
a existir a preocupação com a questão de segurança da
execução destes
trechos de códigos.
O objetivo desse trabalho é testar o desempenho de
diversas combinações
de modelos de concorrência e sandboxes. Como exemplo de
sistema sujeito
a solicitações concorrentes que precisa permitir a
execução de programas de
terceiros, temos os servidores web.
O Xavante é um servidor web desenvolvido na linguagem de
programação
Lua que originalmente utiliza um modelo de programação
concorrente
baseado em co-rotinas. Esse servidor já possuía a
flexibilidade de mapear
tipos de requisição a tratadores diferentes. Alguns desses
tratadores de requisi
ção permitem a utilização de código de terceiros em tempo
de execução
e, por isso, já fazem uso de sandboxes a fim de oferecer
um ambiente de
execução protegido. Nesse trabalho testamos o uso dessas
sandboxes nativas
ao Xavante além de outros tipos de sandboxes. Também
aumentamos
as possibilidades de extensão do servidor, flexibilizando
a arquitetura de
modo a permitir diferentes estratégias de concorrência.
Utilizando a nova
arquitetura testamos o desempenho das diversas combinações
de sandboxes
e modelos de programação concorrente, permitindo a
comparação dos modelos
não só do ponto de vista qualitativo mas também medindo o
impacto
de desempenho do seu uso. / [en] Client-server developers constantly have to deal with
questions concerning
performance and scalability, since the number of
simultaneous clients can
grow significantly. Moreover, if these systems can execute
third-party code,
there is also the concern of secure execution of these
pieces of code. This
work goal is to benchmark several combinations of
concurrency and sandboxes
models. As an example of a system exposed to several
concurrent
requests that must be able to execute third-party code, we
have the web
servers. Xavante is a web server developed in the Lua
programming language
that originally uses an concurrency programming model
based on
coroutines. This server offers the flexibility to map
request types to different
handlers. Some of these request handlers dynamically allow
the use of
third-party code, therefore they make use of sandboxes in
order to offer a
protected running environment. In this work we test the
use of Xavante´s
native sandboxes and other types of sandboxes.We also
improve the extensibility
of the server, using a different architecture in order to
allow different
concurrency strategies. Using the new architecture we
tested the performance
of several combinations of sandboxes and concurrency
programming
models, allowing the model comparison not only in a
qualitative point of
view but also measuring the related performance impacts.
|
7 |
[en] EXTENDING LUAPROC: SUPPORT FOR APPLICATIONS IN MOBILE ENVIRONMENTS / [pt] ESTENDENDO O LUAPROC: SUPORTE PARA APLICAÇÕES EM AMBIENTES MÓVEISFERNANDO DE ABREU E LIMA ALVES 19 October 2018 (has links)
[pt] Cada vez mais os aparelhos móveis estão se aperfeiçoando, com aumentos em suas capacidades de processamento e memória. Essa tendência acaba tornando o processamento móvel uma alternativa interessante. Este trabalho visa explorar esse mundo mobile e o seu potencial através do paralelismo,
tanto localmente, na forma de exploração multicore, quanto distribuida, na forma de exploração multidispositivo. Exploramos isto através de uma biblioteca de paralelismo da linguagem de programação Lua, chamada Luaproc. Propomos um novo modelo de comunicação para esta biblioteca, para incluir esse cenário multidispositivo e combinar as facilidades de um serviço de enfileiramento de mensagens com o suporte para paralelismo já existente. Apresentamos algumas aplicações da biblioteca desenvolvida, avaliando sua utilização e desempenho em diferentes cenários. / [en] Mobile devices are undergoing constant increases in their processing and memory capabilities. This tendency is making mobile processing an interesting alternative. This work aims to support the programmer in exploring this potential by using parallelism, both local, in the form of multicore exploitation, as well as distributed, in the form of multidevice exploration. We explored this through a parallel library for the Lua programming language, called Luaproc. We propose an extension to this library and its communication model, to include this multidevice scenario and combine the facilities of a message queuing service with the existing facilities for multicore programming. We then present some applications to show different use cases with distribution and their performance.
|
8 |
[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.
|
9 |
[en] SAFE SYSTEM-LEVEL CONCURRENCY ON RESOURCE-CONSTRAINED NODES WITH CÉU / [pt] CONCORRÊNCIA SEGURA EM NÍVEL DE SISTEMA PARA NÓS COM RESTRIÇÕES DE RECURSOS EM CÉUFRANCISCO FIGUEIREDO GOYTACAZ SANT ANNA 18 January 2017 (has links)
[pt] Apesar da pesquisa contínua para facilitar a programação de redes de sensores sem fio, a análise de perigos de concorrência ainda é de responsabilidade do programador, que deve tratar manualmente de questões como sincronização e memória compartilhada. Nós apresentamos uma linguagem de sistema que garante concorrência segura tratando ameaças em tempo de compilação. A fundamentação estática e síncrona da nossa abordagem permite um raciocínio mais simples sobre questões de concorrência, permitindo uma análise em tempo de compilação que garante programas determinísticos. Como contra-partida, nosso modelo impõe em termos da expressividade da linguagem, tais como para efetuar cálculos demorados, ou atender prazos estritos em tempo real. Nós implementamos diversos protocolos de rede conhecidos e o driver para rádio CC2420 para mostrar que a expressividade e responsividade obtida com a linguagem é suficiente para uma gama considerável de aplicações para redes de sensores. As implementações mostram uma redução de tamanho de código, com um aumento de memória abaixo de 10 porcento em comparação com nesC. O uso da linguagem proposta implica em diversas propriedades de segurança que se baseiam em abstrações de controle de alto nível, também resultando em código mais conciso e legível. / [en] Despite the continous research to facilitate Wireless Sensor Networks development, most safety analysis and mitigation efforts in concurrency are still left to developers, who must manage synchronization and shared memory explicitly. We propose a system language that ensures safe concurrency by handling threats at compile time, rather than at runtime. The synchronous and static foundation of our design allows for a simple reasoning about concurrency that enables compile-time analysis resulting in deterministic and memory-safe programs. As a trade-off, our design imposes limitations on the language expressiveness, such as doing computationally-intensive operations and meeting hard real-time responsiveness. To show that the achieved expressiveness and responsiveness is sufficient for a wide rage of WSN applications, we implement widespread network protocols and the CC2420 radio driver. The implemetations show a reduction in source code size, with a penalty of memory increase below 10 percent in comparison to nesC. Overall, we ensure safety properties for programs relying on high-level control abstractions that also lead to concise and readable code.
|
10 |
[pt] REVISITANDO MONITORES / [en] REVISITING MONITORSRENAN ALMEIDA DE MIRANDA SANTOS 13 August 2020 (has links)
[pt] A maioria das linguagens de programação modernas fornece ferramentas para programação concorrente sem restringir seu uso. Assim, fica a cargo do programador evitar a ocorrência de condições de corrida. Nessa dissertação, revisitamos o modelo de monitores, projetados para prevenir condições de corrida ao limitar o acesso à variáveis compartilhadas, e mostramos que monitores podem ser implementados em linguagens de programação com semântica referencial, dadas as regras de tipagem apropriadas. Nós descrevemos a linguagem de programação Aria, projetada com monitores nativos seguindo a proposta original do modelo. Através da resolução de problemas clássicos de concorrência, nós avaliamos o uso de monitores em Aria
para sincronização em diferentes níveis de granularidade, e extendemos a linguagem com novos recursos a fim de contemplar as limitações do modelo envolvendo desempenho e expressividade. / [en] Most current programming languages do not restrict the use of the concurrency primitives they provide, leaving it to the programmer to detect data races. In this dissertation, we revisit the monitor model, which
guards against data races by guaranteeing that accesses to shared variables occur only inside monitors, and show that this concept can be implemented in a programming language with referential semantics, given appropriate typing rules. We describe the Aria programming language, designed with native monitors according to these rules. Through the discussion of classic concurrency problems, we evaluate the use of Aria monitors for synchronization at different levels of granularity and extend the language with new features to address the limitations of monitors regarding performance and expressiveness.
|
Page generated in 0.0426 seconds