• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 8
  • 7
  • Tagged with
  • 15
  • 15
  • 5
  • 4
  • 4
  • 4
  • 4
  • 4
  • 4
  • 3
  • 2
  • 2
  • 2
  • 2
  • 2
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
1

[en] AN ALTERNATIVE MODEL FOR CONCURRENT PROGRAMMING IN LUA / [pt] UM MODELO ALTERNATIVO PARA PROGRAMAÇÃO CONCORRENTE EM LUA

ALEXANDRE 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] OPERATING SYSTEM KERNEL SCRIPTING WITH LUA / [pt] LUNATIK: SCRIPTING DE KERNEL DE SISTEMA OPERACIONAL COM LUA

LOURIVAL PEREIRA VIEIRA NETO 26 October 2011 (has links)
[pt] Existe uma abordagem de projeto para aumentar a flexibilidade de sistemas operacionais, chamada sistema operacional extensível, que sustenta que sistemas operacionais devem permitir extensoes para poderem atender a novos requisitos. Existe também uma abordagem de projetos no desenvolvimento de aplicações que sustenta que sistemas complexos devem permitir que usuários escrevam scripts para que eles possam tomar as suas próprias decisões de configuração em tempo de execução. Seguindo estas duas abordagens de projeto, nos construímos uma infra-estrutura que possibilita que usuários carreguem e executem dinamicamente scripts Lua dentro de kernels de sistema operacional, aumentando a flexibilidade deles. Nesta dissertação, nos apresentamos Lunatik, a nossa infra-estrutura para scripting de kernel baseada em Lua, e mostramos um cenário de uso real no escalonamento dinâmico da frequência e voltagem de CPU. Lunatik está implementado atualmente tanto para NetBSD quanto para Linux. / [en] There is a design approach to improve operating system flexibility, called extensible operating system, that supports that operating systems must allow extensions in order to meet new requirements. There is also a design approach in application development that supports that complex systems should allow users to write scripts in order to let them make their own configuration decisions at run-time. Following these two design approaches, we have built an infrastructure that allows users to dynamically load and run Lua scripts into operating system kernels, improving their flexibility. In this thesis we present Lunatik, our scripting subsystem based on Lua, and show a real usage scenario in dynamically scaling CPU frequency and voltage. Lunatik is currently implemented both for NetBSD and Linux.
3

[en] UTILIZATION OF DHT IN DISTRIBUTED COMPUTING SYSTEMS / [pt] APLICAÇÕES DE DHT EM SISTEMAS DE MPUTAÇÃO DISTRIBUÍDA

FELIPE FREIXO PINA 07 February 2012 (has links)
[pt] Arquiteturas P2P destacam-se pela descentralização e pelo incentivo a cooperação entre nós. Essas características permitem que sistemas baseados nesta arquitetura sejam tolerantes a falhas e que os recursos sejam distribu ídos entre os nós (via replicação). A utilização da técnica de DHT na criação de redes P2P permite que os sistemas sejam escaláveis. Ao contrário do uso mais comum em sistemas de distribuição de conteúdo, este trabalho investiga aplicacações da técnica de DHT em sistemas de computação distribu ída, onde o recurso compartilhado é a capacidade de processamento de cada nó. Quatro protocolos de roteamento de mensagens foram analisados para identificar os mais adequados aos sistemas de computação distribuída e aplicou-se o conceito de grupo de nós com o objetivo de aumentar a tolerância a falhas e distribuir tarefas entre os nós da rede. / [en] P2P architectures are recognized for decentralization and incentive for the cooperation among nodes. These characteristics allow for fault tolerance and resource distribution among the nodes (by replication) to systems based on the P2P architecture. Systems based in P2P networks built using the DHT technique are scalable. Since this architecture is commonly used in content distribution systems, in this work we investigate the utilization of the DHT technique in distributed computing systems, where the shared resources are the node’s computational power. Four routing protocols were analyzed to identify the most appropriated for use in distributed computing systems and applied the group concept to archive fault tolerance and resource distribution among nodes.
4

[en] SAFE RECORD SHARING IN DYNAMIC PROGRAMMING LANGUAGES / [pt] COMPARTILHAMENTO SEGURO DE REGISTROS EM LINGUAGES DE PROGRAMAÇÃO DINÂMICAS

ALEXANDRE 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.
5

[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 LUA

BRUNO 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.
6

[en] CONCURRENT PROGRAMMING IN LUA: REVISITING THE LUAPROC LIBRARY / [pt] PROGRAMAÇÃO CONCORRENTE EM LUA: REVISITANDO A BIBLIOTECA LUAPROC

LIANDER 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.
7

[pt] A IMPLEMENTAÇÃO DE REGISTROS EM PALLENE / [en] THE IMPLEMENTATION OF RECORDS IN PALLENE

GABRIEL DE QUADROS LIGNEUL 27 February 2020 (has links)
[pt] As características dinâmicas de linguagens de scripting introduzem um gargalo significativo no tempo de execução quando comparadas a linguagens de sistemas. A arquitetura scripting pode ser usada para melhorar o desempenho ruim de linguagens de scripting. O programador deve usar a linguagem de sistemas para tarefas que consomem muitos recursos, e a de scripting para flexibilidade. Entretanto, essa arquitetura tem duas falhas significativas quando usada para melhorar o desempenho de linguagens de scripting. Primeiro, existe uma lacuna conceitual entre as duas linguagens, logo migrar da linguagem de scripting para linguagem de sistemas pode exigir enorme esforço. Segundo, existe um gargalo escondido ao manipular as estruturas de dados da linguagem de scripting a partir da linguagem de sistemas. Pallene é uma linguagem de sistemas projetada particularmente para Lua que almeja resolver essas duas falhas. Pallene é um subconjunto estaticamente tipado de Lua, o que facilita o processo de migração. Além disso, Pallene manipula diretamente as estruturas de dados de Lua sem introduzir gargalo. Neste trabalho, nós propomos dois tipos de registros para Pallene, e nós apresentamos a implementação do compilador de Pallene. Nós avaliamos o desempenho do nosso compilador para compará-la com Lua padrão, LuaJIT, e programas C que utilizam a API C de Lua. Nossos experimentos mostram que Pallene é competitiva com as soluções existentes para melhorar o desempenho de Lua. / [en] The dynamic features of scripting languages introduce significant overhead in execution time when compared to system languages. The scripting architecture can be used to improve the poor performance of scripting languages. The programmer should use a system language for resourceintensive tasks, and a scripting one for flexibility. However, this architecture has two significant flaws when used to improve the performance of scripting languages. First, there is a conceptual gap between both languages; so migrating from the scripting language to the system language may require enormous effort. Second, there is a hidden overhead when manipulating the scripting-language data structures from the system language. Pallene is a system language designed particularly for Lua that aims to solve these two issues. Pallene is a statically-typed subset of Lua, which facilitates the migration process. Moreover, Pallene manipulates Lua s data structures directly without introducing overhead. In this work, we propose two types of records for Pallene, and we present the implementation of the Pallene compiler. We benchmarked our compiler to compare it to standard Lua, LuaJIT, and C programs using the Lua-C API. Our experiments show that Pallene is competitive with the existing solutions to improve Lua s performance.
8

[en] A FOREIGN FUNCTION INTERFACE FOR PALLENE / [pt] UMA INTERFACE DE FUNÇÕES EXTERNAS PARA PALLENE

GABRIEL COUTINHO DE PAULA 10 December 2021 (has links)
[pt] Pallene é um subconjunto estaticamente tipado da linguagem de programação Lua, projetada para atuar como uma linguagem de sistemas em contraparte ao scripting de Lua, e usada para escrever bibliotecas de baixo nível e módulos de extensão para Lua. Nesse sentido, Pallene é uma linguagem companheira, usada sempre lado a lado com Lua, compartilhando seu runtime. Pallene, tanto como uma linguagem de sistema em contraparte a Lua e como uma ponte entre Lua e outras linguagens, deve fornecer um mecanismo de interação com bibliotecas e serviços de sistema escritos em uma linguagem de baixo nível como C. Para este fim, apresentamos um design e implementação de Interface de Função Estrangeira (IFE) para Pallene, que permite chamar funções externas que seguem as convenções de chamada C, e manipular representações de dados C diretamente. Nosso design equilibra flexibilidade e segurança seguindo uma abordagem empírica, em que preferimos sacrificar flexibilidade hipotética a menos que vejamos um caso de uso que nos faça comprometer em segurança. Nossa implementação tem como objetivo ser tão portátil quanto o Pallene, além de ter um bom desempenho e ser simples. Uma vez que a implementação de Pallene já depende de um compilador de C, a nossa IFE usa agressivamente o compilador de C já disponível para sua vantagem. Dessa forma, podemos usar diretamente os arquivos de cabeçalho de bibliotecas externas, permitindo que a IFE verifique a exatidão das ligações de função externa e que use macros de C. / [en] Pallene is a statically typed subset of the Lua programming language, designed to act as a system-language counterpart to Lua’s scripting, and used to write lower-level libraries and extension modules for Lua. In this sense, Pallene is a companion language, always intended to be used side-by-side with Lua, sharing its runtime. Pallene, both as a system-language counterpart to Lua and as a bridge between Lua and foreign languages, must provide a mechanism to interact with libraries and system services written in a low-level language like C. To this end, we present a Foreign Function Interface (FFI) design and implementation for Pallene, which allows for calling external functions that follow C calling conventions and manipulating C data representations directly. Our design balances flexibility and safety following an empirical approach, wherein we prefer to sacrifice hypothetical flexibility unless we see a real use case that forces us to compromise on safety. Our implementation aims to be as portable as Pallene, as well as performant and simple. Since Pallene s implementation already depends on a C compiler, the FFI aggressively uses the already available C compiler to its advantage. This way, we can directly use foreign libraries header files, enabling the FFI to verify the correctness of function bindings and to use macro definitions.
9

[en] A FRAMEWORK FOR COLLABORATIVE USE OF MOBILE DEVICES FOR REMOTE CONTROL OF SCIENTIFIC APPLICATIONS / [pt] UM FRAMEWORK PARA O USO COLABORATIVO DE DISPOSITIVOS MÓVEIS COMO FERRAMENTA DE CONTROLE REMOTO DE APLICAÇÕES CIENTÍFICAS

JONER MARTINS VEIGA DUARTE JUNIOR 24 July 2013 (has links)
[pt] Hoje em dia, o uso de dispositivos móveis se tornou bastante popular e criou maneiras diferentes de interação com sua interface sensível ao toque. Aplicações de visualização científica possuem um potencial muito grande de desfrutar dessas novas formas de interação, contudo o poder de processamento dos dispositivos móveis ainda não é suficiente para renderizar e-ou tratar o grande volume de dados que esse tipo de aplicação requer. Propomos um framework, seguindo um modelo cliente-servidor, que permite a utilização de dispositivos móveis para visualização e manipulação colaborativa de aplicações de visualização científica. No papel de servidor, a aplicação científica faz uso de uma biblioteca para compactar e enviar as imagens renderizadas para os clientes e também para tratar os eventos recebidos. No papel de cliente, está um aplicativo multiplataforma (iOS-Android) rodando nos dispositivos móveis, que interpreta os gestos de toque e exibe as imagens recebidas via rede Wi-Fi. O mesmo aplicativo é capaz de conectar em qualquer servidor, pois constrói a interface baseada numa descrição em Lua que o servidor fornece. Por fim, o framework proposto é avaliado em dois aplicativos industriais: Geresim e 3DReplay. / [en] Nowadays, mobile devices have become very popular bringing new ways of interaction with their touch-based interface. Scientific visualization applications have a great potential to take advantage of this new kind of interaction, but the processing capabilities of mobile devices are still not enough to render or process the amount of data this type of application requires. We propose a framework, working as a client-server model, which allows the use of mobile devices to collaboratively visualize and manipulate scientific visualization applications. In the server role, the scientific application uses a library to compress and send rendered images to clients and also to process received events. In the client role, there is a multiplatform application (iOS-Android) running on mobile devices, which interpret touch gestures and show the images received through Wi-Fi network. The same application is able to connect in any server, since it builds its interface from a description in Lua language supplied by the server. Lastly, we evaluate the proposed framework with two industrial applications: Geresim e 3DReplay.
10

[pt] ANALIZANDO O USO DE MEMORIA EM LUA / [en] PROFILING MEMORY IN LUA

PABLO MARTINS MUSA 16 July 2020 (has links)
[pt] Inchaço de memória e um problema que ocorre quando a memória consumida por um programa excede a expectativa do programador. Em muitos casos, o inchaço de memória prejudica o desempenho ou, até mesmo, interrompe a execução de aplicações. Detectar e consertar inchaços de memória é uma tarefa difícil para programadores e, portanto, eles costumam usar ferramentas para identificar e consertar problemas desta natureza. Nas últimas duas décadas, muitos trabalhos e ferramentas foram desenvolvidos com o intuito de ajudar programadores a abordar problemas de inchaço de memória, entre eles perfiladores de memória. Apesar de perfiladores de memória terem sido muito estudados nos últimos anos, existe uma lacuna em relação a linguagens de script. Nessa dissertação, nós estudamos perfiladores de memória para linguagens de script. Primeiro, nos propomos uma classificação que divide as ferramentas em manual e automática baseada em como elas são usadas pelos programadores. Em seguida, após estudar ferramentas disponíveis em três linguagens de script diferentes, nós experimentamos algumas das técnicas estudadas ao construir dois perfiladores de memória automáticos para ajudar programadores Lua a resolver inchaços de memória. Finalmente, nós avaliamos ambas as ferramentas com relação a facilidade de integração ao programa, a utilidade dos relatórios para o entendimento de programas desconhecidos e para a localização de inchaços de memória e ao custo de desempenho que elas geram. / [en] Memory bloat is a software problem that happens when the memory consumption of a program exceeds the programmer s expectations. In many cases, memory bloat hurts performance or even crashes applications. Detecting and fixing memory bloat problems is a difficult task for programmers and, thus, they usually need tools to identify and fix these problems. The past two decades produced an extensive research and many tools to help programmers tackle memory bloat, including memory profilers. Although memory profilers have been largely studied in the last years, there is a gap regarding scripting languages. In this thesis, we study memory profilers in scripting languages. First, we propose a classification in which we divide memory profilers in manual and automatic, based on how the programmer uses the memory profiler. Then, after reviewing memory profilers available in three different scripting languages, we experiment some of the studied techniques by implementing two automatic memory profilers to help Lua programmers deal with memory bloat. Finally, we evaluate our tools regarding how easy it is to incorporate them to a program, how useful their reports are to understand an unknown program and track memory bloats, and how much overhead they impose.

Page generated in 0.0468 seconds