• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 125
  • 23
  • 13
  • 9
  • 8
  • 3
  • 3
  • 2
  • 2
  • 1
  • 1
  • 1
  • Tagged with
  • 253
  • 78
  • 53
  • 50
  • 44
  • 42
  • 39
  • 37
  • 35
  • 32
  • 32
  • 30
  • 29
  • 27
  • 25
  • 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.
121

Blocking violations in reactive Java frameworks

Vallin, Morgan, Sundström, Robin January 2020 (has links)
Concurrency in programming is a way of interleaving tasks in order to enhance the performance of an application. Previous research has found that concurrency errors are hard to avoid, hard to find, and that they often degrade performance of the application. Reactive programming provides an abstraction, to make it easier to implement complex concurrent and asynchronous tasks. When programming reactively in Java, it is often done with a reactive framework, where RxJava and Project-Reactor are two of the more popular choices. Blocking a thread that is not supposed to be blocked will result in concurrency errors, without the Java compiler providing a warning. In order to find incorrect blocking, a tool called BlockHound can be used. BlockHound wraps the original code, intercepts any blocking calls, and provides an error if the blocking call was used incorrectly. In this study, BlockHound was used to detect erroneous blocking calls in open source projects which use RxJava or Project-Reactor. A JavaAgent was created to automate the process of adding BlockHound to a project. The selection of projects to test was done by evaluating the community usage, and selecting the projects with the most amount of stars and forks, as this indicates that the projects are widely used. The projects were tested with BlockHound, and the errors were saved to external log files for analysation. The study found that a considerable percentage of the projects investigated exhibited blocking violations. These violations were all caused by a low number of system calls, made from methods in threads that forbid blocking. Generalizable solutions to the violations were applied, and considered successful. / Samtidighet (concurrency) inom programmering är ett sätt att kombinera olika uppgifter, för att få utökad prestanda i ett program. Tidigare forskning har visat att concurrencybuggar är svåra att undvika, svåra att upptäcka och att dem ofta försämrar programmets prestanda. Reaktiv programmering skapar en abstraktion som gör det enklare att implementera komplexa samtidiga och asynkrona uppgifter. Reaktiv programmering i Java används ofta med hjälp av ett reaktivt ramverk, där två av de mer populära är RxJava och Project-reactor. Att blockera i en tråd som inte tillåter blockering kommer skapa concurrency buggar, som Javas kompilator inte varnar för. För att upptäcka felaktiga blockeringar kan ett verktyg som heter BlockHound användas. BlockHound omsluter den ursprungliga koden, fångar eventuella blockeringar, och skickar ett felmeddelande om en felaktig blockering har upptäckts. I den här studien har BlockHound använts för att hitta felaktiga blockeringar i open source projekt som använde sig av antingen RxJava eller Project-reactor. En JavaAgent skapades för att automatisera processen att lägga till BlockHound i projekten. Processen att välja projekt för testning gjordes genom att utvärdera hur stor användningen av projekten var, samt genom att välja de projekt med mest antal stjärnor och forks, eftersom de ger en bra indikering på att projekten används brett inom området. Projekten testades sedan med BlockHound, och loggarna sparades manuellt till externa loggfiler för analys. Studien fann att en betydande procent av projekten som undersöktes innehöll felaktiga blockeringar. Orsaken till dessa var ett fåtal systemanrop som kallades från trådar som inte tillåter blockering. Generaliserbara lösningar till dessa buggar testades, och ansågs vara lyckade.
122

Support à l'exécution pour objets actifs multi-threadés : conception et implémentation / Execution support for multi-threaded active objects : design and implementation

Rochas, Justine 22 September 2016 (has links)
Pour aborder le développement d'applications concurrentes et distribuées, le modèle de programmation à objets actifs procure une abstraction de haut niveau pour programmer de façon concurrente. Les objets actifs sont des entités indépendantes qui communiquent par messages asynchrones. Peu de systèmes à objets actifs considèrent actuellement une exécution multi-threadée. Cependant, introduire un parallélisme contrôlé permet d'éviter les coûts induits par des appels de méthodes distants. Dans cette thèse, nous nous intéressons aux enjeux que présentent les objets actifs multi-threadés, et à la coordination des threads pour exécuter de façon sûre les tâches d'un objet actif en parallèle. Nous enrichissons dans un premier temps le modèle de programmation, afin de contrôler l'ordonnancement interne des tâches. Puis nous exhibons son expressivité de deux façons différentes: d'abord en développant et en analysant les performances de plusieurs applications,puis en compilant un autre langage à objets actifs avec des primitives de synchronisation différentes dans notre modèle de programmation. Aussi, nous rendons nos objets actifs multi-threadés résilients dans un contexte distribué en utilisant les paradigmes de programmation que nous avons développé. Enfin, nous développons une application pair-à-pair qui met en scène des objets actifs multi-threadés. Globalement, nous concevons un cadre de développement et d'exécution complet pour les applications hautes performances distribuées. Nous renforçons notre modèle de programmation en formalisant nos contributions et les propriétés du modèle. Cela munit le programmeur de garanties fortes sur le comportement du modèle de programmation. / In order to tackle the development of concurrent and distributed applications, the active object programming model provides a high-level abstraction to program concurrent behaviours. Active objects are independent entities that communicate by mean of asynchronous messages. Very few of the existing active object frameworks consider a multi-threaded execution of active objects. Introducing a controlled parallelism enables removing some latency induced by remote method invocations. In this thesis, we take interest in the challenges of having multiple threads inside an active object, and in their safe coordination to execute tasks in parallel. We enhance this programming model by adding language constructs that control the internal scheduling of tasks. We then show its expressiveness in two ways: first with a classical approach, by developing and analysing the performance of several applications, and secondly, by compiling another active object language with different synchronisation primitives into our programming model. Also, we make multi-threaded active objects resilient in a distributed context through generic engineering constructs, and by using our programming abstractions. Finally, we develop a peer-to-peer application that shows multi-threaded active objects and their features in action. Overall, we design a thorough framework for the development and execution of high performance distributed applications. We reinforce our programming model by formalising our work and the model’s properties
123

Implementing Erlang/OTP on Intel Galileo

Coada, Paul, Kaya, Erkut January 2015 (has links)
The Intel Galileo, inspired by the well-known Arduino board, is a development board with many possibilities because of its strength. The Galileo is has an Intel processor capable of running GNU/Linux and can be connected to the internet, which opens up the possibility to be controlled remotely. The programming language that comes with the Intel Galileo is the same as for the Arduino development boards, and is therefore very limited and does not utilize the Galileo’s entire strength. Our aim with this project is to integrate a more suitable programming language; a language that can make better use of the relatively powerful processor to control the components of the board. The programming language of choice is Erlang, and the reason is obvious. Erlang can be described as a process-oriented programming language based on the functional programming paradigm and its power in concurrency. The result of the project was the successful integration of a complete version of GNU/Linux on the board and the cross-compilation of Erlang/OTP onto the board. Having Erlang running on the system opens up many possibilities for future work, amongst all: creating Erlang programs for the Intel Galileo, integrating an effective API, and measuring the pros and cons of using Erlang on an Intel Galileo. / Intel Galileo är ett utvecklingskort som bygger på Arduinos succe. Den kommer med en kraftigare processor jämfort med Arduino Uno, och den har möjlighet att kunna köra GNU/Linux. Den har också en port för att kunna kopplas till internet och på så sätt kommunicera med andra enheter. Programmeringsspråket som rekommenderas för Intel Galileo är densamma som används för Arduinos utvecklingskort. Det finns däremot en möjlighet att kunna kombinera utvecklingskortet med ett programmeringsspråk som kan erbjuda mer funktionalitet och fortfarande vara enkelt. Vårt val hamnade på Erlang för den är ett funktionellt språk och har möjlighet att hantera olika processer. Tanken är att kunna behandla olika komponenter kopplade till utvecklingskortet som processer, som kan kommunicera med andra komponenter och med internet. Projektarbetet bestod av att undersöka ifall det är möjligt att kunna kombinera Erlang/OTP med Intel Galileon samt skriva en guide för hur implementeringen gick till. Att kombinera de två var lyckat och det öppnar upp möjligheter för fortsätta arbeten och försök.
124

Transformation of a single-user system into a multi-user system with Swift / Transformation av ett system för en användare till flera användare med hjälp av Swift

Janrik, Karl, Ekenlöw, Oscar January 2022 (has links)
Headlong Developments' application HeadmasterDev is currently adapted for a single user. To turn their application into a multi-user system the programming language Swift will be used. Furthermore, this thesis will evaluate whether Swift is an appropriate programming language for developing a server application, how to handle concurrency of shared resources and if it is possible to deploy the application on a operative system other than macOS. The result is that the concurrency model is dependent on the system's needs and that one should not commit to using Swift as the programming language for a server application, with some regard to the size of the application and it's uses. / Headlong Developments applikation HeadmasterDev är endast anpassad för en användare. För att kunna transformera deras applikation till ett fleranvändarsystem så kommer detta arbete att använda sig av programmeringsspråket Swift. Utöver detta kommer det även undersökas om programmeringsspråket Swift är lämpligt för denna typ av applikation, hur man bäst hanterar samtidighet av delade resurser och om det är möjligt att använda applikationen på en annan plattform än macOS. Resultatet kom att bli att hur man löser samtidighetsproblemen beror på systemets behov och att Swift inte är lämpligt för denna applikation med tanke på dess storlek och användningsområden.
125

Teaching Concurrency in a Modern Manner, Flipped Classroom or Game-Based Learning

Murphie, Bobby, Hansen, Mattias January 2018 (has links)
Mycket forskning har gjorts för att hitta förbättrade sätt att lära ut concurrency. Allt från visualiseringsverktyg till spel-baserad inlärning och flippat klassrum. Dock så saknas forskning som jämför metoder och modeller som lär ut concurrency. Den här artikeln tar upp och tittar på resultat från studenter som studerar concurrent programmering genom att jämföra två olika moderna sätt att lära ut. Den tittar också på vilken metod/modell studenterna f ̈oredrar och håller dem mer engagerade. Författarna av denna artikel jämför ett spel-inlärnings tillvägagångssätt med ett flippat klassrum tillvägagångssätt. Spel-inlärnings tillvägagångssättet som används i denna artikel är utvecklad av Dr. Robert Marmorstein och använder sig av spelet OpenTTD [1]. Studenterna lär sig om race condition, deadlock och starvation genom att använda semaforer(järnvägssignaler) för att förhindra kollisioner. Det flippade klassrum tillvägagångssättet i denna artikel används i en flertrådad programmeringskurs på Malmö Universitet. Efter att båda tillvägagångssätten har genomförts tar studenterna ett test och svarar på ett frågeformulär för att se hur mycket studenterna har lärt sig, hur engagerade de är och vad de föredrar. För att få mer exakta resultat får bara studenterna delta vid ett av tillfällena där tillvägagångssätten genomförs. Resultaten från den här studien gynnar OpenTTD labbens tillvägagångssätt då studenterna verkar vara mer engagerade och föredra den lite mer. Studenterna som deltog i OpenTTD labben gjorde bättre ifrån sig på testet när det kommer till att förstå hur man förhindrar/löser varje synkroniseringsproblem, medans de studenterna som deltog i det flippade klassrummet gjorde lite bättre ifrån sig när det kom till att förklara/beskriva problemet. / Much research has been done to find ways to improve teaching concurrency, from visualization tools to game-based learning and flipped classroom. However, research on comparing these methods or models when teaching concurrency are lacking. This paper looks at the different results from students who are studying concurrent programming by comparing two different modern ways of teaching. It also looks at which method/model students prefer and keeps them more engaged. The authors of this paper compare a game-based learning approach to a flipped classroom approach. The game-based learning approach used in this paper is developed by Dr. Robert Marmorstein and uses the game OpenTTD [1]. The students learn about race condition, deadlock and starvation by using semaphores (railway signals) to prevent collisions. The flipped classroom approach in this paper is used in a concurrent programming course at Malmö University. After both of the approaches have been completed, the students take a test and answer a survey to see how much the students learn, how engaged they are and what they prefer. To gain an accurate result, each student that took part in the study only participated in one of the approaches. The results of the survey favor the OpenTTD lab approach as the students were more engaged during the exercise and preferred the exercise more. The students that participated in the OpenTTD lab also did better on the test when it came to explaining how to prevent/solve each synchronization problem, while in the flipped classroom students did better when it came to describing the problem.
126

Simple, safe, and efficient memory management using linear pointers

Liu, Likai 22 January 2016 (has links)
Efficient and safe memory management is a hard problem. Garbage collection promises automatic memory management but comes with the cost of increased memory footprint, reduced parallelism in multi-threaded programs, unpredictable pause time, and intricate tuning parameters balancing the program's workload and designated memory usage in order for an application to perform reasonably well. Existing research mitigates the above problems to some extent, but programmer error could still cause memory leak by erroneously keeping memory references when they are no longer needed. We need a methodology for programmers to become resource aware, so that efficient, scalable, predictable and high performance programs may be written without the fear of resource leak. Linear logic has been recognized as the formalism of choice for resource tracking. It requires explicit introduction and elimination of resources and guarantees that a resource cannot be implicitly shared or abandoned, hence must be linear. Early languages based on linear logic focused on Curry-Howard correspondence. They began by limiting the expressive powers of the language and then reintroduced them by allowing controlled sharing which is necessary for recursive functions. However, only by deviating from Curry-Howard correspondence could later development actually address programming errors in resource usage. The contribution of this dissertation is a simple, safe, and efficient approach introducing linear resource ownership semantics into C++ (which is still a widely used language after 30 years since inception) through linear pointer, a smart pointer inspired by linear logic. By implementing various linear data structures and a parallel, multi-threaded memory allocator based on these data structures, this work shows that linear pointer is practical and efficient in the real world, and that it is possible to build a memory management stack that is entirely leak free. The dissertation offers some closing remarks on the difficulties a formal system would encounter when reasoning about a concurrent linear data algorithm, and what might be done to solve these problems.
127

Formalizing Time and Causality in Polychronous Polytimed Models / Formalisation du temps et de la causalité dans les modèles polychrones polytemporisés

Nguyen Van, Hai 27 September 2018 (has links)
L'intégration de composants dans un système peut s'avérer difficile lorsque ces composants ont été conçus selon différents paradigmes ou s'ils se basent sur différents cadres de temps devant être synchronisés. Cette synchronisation peut être dirigée par les évènements (un évènement est provoqué par un autre), ou dirigée par le temps (un évènement se produit parce qu'il en est l'heure). En considérant que chaque composant admet son propre cadre de temps et qu'ils peuvent ne pas être reliés, il est possible qu'une unique ligne de temps globale n'existe pas.Nous nous intéressons à la spécification de schémas de synchronisation pour de tels systèmes polychrones et polytemporisés. Notre étude nous a mené à la conception de modèles sémantiques pour un langage temporisé à évènements discrets, appelé TESL et développé par Boulanger et al. Ce langage a été utilisé pour coordonner la simulation de modèles composites et pour tester l'intégration de systèmes.Dans cette thèse, nous présentons une sémantique dénotationnelle fournissant une compréhension précise et logiquement cohérente du langage. Puis nous proposons une sémantique opérationnelle afin de dériver des traces d'exé-cutions satisfaisant une spécification TESL. Celui-ci a été utilisé pour les problématiques de test des systèmes, à travers l'implantation d'un solveur nommé Heron. Pour résoudre la question de cohérence et de correction de ces règles sémantiques, nous avons également développé une sémantique intermédiaire coinductive reliant les deux sémantiques dénotationnelles et opérationnelles. Nous établissons des propriétés sur la relation entre les deux sémantiques: correction, complétude, progrès ainsi que terminaison locale. Enfin, notre formalisation ainsi que les preuves associées ont été entièrement mécanisées dans l'assistant de preuve Isabelle/HOL. / Integrating components into systems turns out to be difficult when these components were designed according to different paradigms or when they rely on different time frames which must be synchronized. This synchronization may be event-driven (an event occurs because another event occurs) or time-driven (an event occurs because it is time for it to occur). Considering that each component admits its own time frame, and that they may not be related, a unique global time line may not exist.We are interested in specifying synchronization patterns for such polychronous and polytimed systems. Our study had led us to design semantic models for a timed discrete-event language, called the TESL language developed by Boulanger et al. This language has been used for coordinating the simulation of composite models and testing system integration.In this thesis, we present a denotational semantics providing an accurate and logic-consistent understanding of the language. Then we propose an operational semantics to derive satisfying runs from TESL specifications. It has been used for testing purposes, through the implementation of a solver, named Heron. To tackle the issue of the consistency and correctness of these semantic rules, we developed a co-inductive intermediate semantics that relates both the denotational and the operational semantics. Then we establish properties over the relation of our semantic models: soundness, completeness and progress, as well as local termination. Finally, our formalization and these proofs have been fully mechanized in the Isabelle/HOL proof assistant.
128

Opinions, Lies and Knowledge. An Algebraic Approach to Mobility of Information and Processes / Opinions, Mensonges et Connaissance. Une Approche Algébrique à la Mobilité de l’Information et des Processus.

Perchy, Yamil Salim 04 October 2016 (has links)
La notion de système de contraintes (cs – selon l'acronyme anglais) est un concept central aux formalismes de la théorie de la concurrence tels que les algèbres de processus pour la programmation concurrente par contraintes. Les systèmes de contraintes sont souvent représentés par des treillis : ses éléments, appelées contraintes, représentent des informations partiales tandis que l’ordre du treillis correspond à des implications. Récemment, une notion appelée “système de contraintes spatiales à n-agents” a été développée pour représenter l’information dans la programmation concurrente par contraintes où les systèmes sont multi-agents et spatialement distribués.D’un point de vue informatique, un système de contraintes spatiales peut être utilisé pour spécifier l’information partiale contenue dans l'espace d'un certain agent (information locale). D’un point de vue épistémique, un cs spatial peut être utilisé pour représenter l’information qui est considérée vrai pour un certain agent (croyance). Les systèmes de contraintes spatiales, néanmoins, ne fournissent pas de mécanismes pour la spécification de la mobilité de l’information ou des processus d'un espace à un autre. La mobilité de l’information est un aspect fondamental des systèmes concurrents.Dans cette thèse nous avons développé la théorie des systèmes de contraintes spatiales avec des opérateurs pour spécifier le déplacement des informations et processus entre les espaces. Nous étudions les propriétés de cette nouvelle famille de systèmes de contraintes et nous illustrons ses applications.Du point de vue calculatoire, ces nouveaux opérateurs nous apportent de l’extrusion d’informations et/ou des processus, qui est un concept central dans les formalismes pour la communication mobile. Du point de vue épistémique, l’extrusion correspond à une notion que nous avons appelé énonciation ; une information qu’un agent souhaite communiquer à d'autres mais qui peut être inconsistante avec les croyances de l’agent même. Des énonciations peuvent donc être utilisées pour exprimer des notions épistémiques tels que les canulars ou les mensonges qui sont fréquemment utilisés dans les réseaux sociaux.Globalement, les systèmes de contraintes peuvent exprimer des notions épistémiques comme la croyance/énonciation et la connaissance en utilisant respectivement une paire de fonctions espace/extrusion qui représentent l’information locale, et un opérateur spatial dérivé qui représente l’information globale. Par ailleurs, nous montrons qu’en utilisant un type précis de systèmes de contraintes nous pouvons aussi représenter la notion du temps comme une séquence d'instances. / The notion of constraint system (cs) is central to declarative formalisms from concurrency theory such as process calculi for concurrent constraint programming (ccp). Constraint systems are often represented as lattices: their elements, called constraints, represent partial information and their order corresponds to entailment. Recently a notion of n-agent spatial cs was introduced to represent information in concurrent constraint programs for spatially distributed multi-agent systems. From a computational point of view a spatial constraint system can be used to specify partial information holding in a given agent’s space (local information). From an epistemic point of view a spatial cs can be used to specify information that a given agent considers true (beliefs). Spatial constraint systems, however, do not provide a mechanism for specifying the mobility of information/processes from one space to another. Information mobility is a fundamental aspect of concurrent systems.In this thesis we develop the theory of spatial constraint systems with operators to specify information and processes moving between spaces. We investigate the properties of this new family of cs and illustrate their applications. From a computational point of view the new operators provide for process/information extrusion, a central concept in formalisms for mobile communication. From an epistemic point of view extrusion corresponds to what we shall call utterance; information that an agent communicates to others but that may be inconsistent with the agent’s beliefs. Utterances can be used to express instances of epistemic notions such as hoaxes or intentional lies which are common place in social media.On the whole, constraint systems can express the epistemic notions of belief /utterance and knowledge by means of, respectively, a space/extrusion function pair that specifies local information and a derived spatial operator that specifies global information. We shall also show that, by using a specific kind of our constraint systems, we can also encode the notion of time as a sequence of instances.
129

Directed homotopy and homology theories for geometric models of true concurrency / Théories homotopiques et homologiques dirigées pour des modèles géométriques de la vraie concurrence

Dubut, Jérémy 11 September 2017 (has links)
Le but principal de la topologie algébrique dirigée est d’étudier des systèmes qui évoluent avec le temps à travers leur géométrie. Ce sujet émergea en informatique, plus particulièrement en vraie concurrence, où Pratt introduisit les automates de dimension supérieure (HDA) en 1991 (en réalité, l’idée de la géométrie de la concurrence peut être retracée jusque Dijkstra en 1965). Ces automates sont géométriques par nature: chaque ensemble de n processus exécutant des actions indépendantes en parallèle peuvent être modélisées par un cube de dimension n, et un tel automate donne naissance à un espace topologique, obtenu en recollant ces cubes. Cet espace a naturellement une direction du temps provenant du flot d’exécution. Il semble alors totalement naturel d’utiliser des outils provenant de la topologie algébrique pour étudier ces espaces: les chemins modélisent les exécutions et les homotopies de chemins, c’est-à-dire les déformations continues de chemins, modélisent l’équivalence entre exécutions modulo ordonnancement d’actions indépendantes, mais ces notions géométriques doivent préserver la direction du temps, d’une façon ou d’une autre. Ce caractère dirigé apporte des complications et la théorie doit être refaite, essentiellement depuis le début. Dans cette thèse, j’ai développé des théories de l’homotopie et de l’homologie pour ces espaces dirigés. Premièrement, ma théorie de l’homotopie dirigée est basée sur la notion de rétracts par déformations, c’est-à-dire de déformations continues d’un gros espaces sur un espace plus petit, suivant des chemins inessentiels, c’est-à-dire qui ne changent pas le type d’homotopie des « espaces d’exécutions ». Cette théorie est reliée aux catégories de composantes et catégories de dimension supérieures. Deuxièmement, ma théorie de l’homologie dirigée suit l’idée que l’on doit regarder les « espaces d’exécutions » et comment ceux-ci évoluent avec le temps. Cette évolution temporelle est traitée en définissant cette homologie comme un diagramme des « espaces d’exécutions » et en comparant de tels diagrammes en utilisant une notion de bisimulation. Cette théorie homologique a de très bonnes propriétés: elle est calculable sur des espaces simples, elle est un invariant de notre théorie homotopique, elle est invariante par des raffinements d’actions simples et elle une théorie des suites exactes. / Studying a system that evolves with time through its geometry is the main purpose of directed algebraic topology. This topic emerged in computer science, more particularly in true concurrency, where Pratt introduced the higher dimensional automata (HDA) in 1991 (actually, the idea of geometry of concurrency can be tracked down Dijkstra in 1965). Those automata are geometric by nature: every set of n processes executing independent actions can be modeled by a n-cube, and such an automaton then gives rise to a topological space, obtained by glueing such cubes together. This space naturally has a specific direction of time coming from the execution flow. It then seems natural to use tools from algebraic topology to study those spaces: paths model executions, homotopies of paths, that is continuous deformations of paths, model equivalence of executions modulo scheduling of independent actions, and so on, but all those notions must preserve the direction. This brings many complications and the theory must be done again.In this thesis, we develop homotopy and homology theories for those spaces with a direction. First, my directed homotopy theory is based on deformation retracts, that is continuous deformation of a big space on a smaller space, following directed paths that are inessential, meaning that they do not change the homotopy type of spaces of executions. This theory is related to categories of components and higher categories. Secondly, my directed homology theory follows the idea that we must look at the spaces of executions and those evolves with time. This evolution of time is handled by defining such homology as a diagram of spaces of executions and comparing such diagrams using a notion of bisimulation. This homology theory has many nice properties: it is computable on simple spaces, it is an invariant of our homotopy theory, it is invariant under simple action refinements and it has a theory of exactness.
130

Safe Concurrent Programming and Execution

Pyla, Hari Krishna 05 March 2013 (has links)
The increasing prevalence of multi and many core processors has brought the issues of concurrency and parallelism to the forefront of everyday computing. Even for applications amenable to traditional parallelization techniques, the subtleties of concurrent programming are known to introduce concurrency bugs. Due to the potential of concurrency bugs, programmers find it hard to write correct concurrent code. To take full advantage of parallel shared memory platforms, application programmers need safe and efficient mechanisms that can support a wide range of parallel applications. In addition, a large body of applications are inherently hard-to-parallelize; their data and control dependencies impose execution order constraints that preclude the use of traditional parallelization techniques. Sensitive to their input data, a substantial number of applications fail to scale well, leaving cores idle. To improve the performance of such applications, application programmers need effective mechanisms that can fully leverage multi and many core architectures. These challenges stand in the way of realizing the true potential of emerging many core platforms. The techniques described in this dissertation address these challenges. Specifically, this dissertation contributes techniques to transparently detect and eliminate several concurrency bugs, including deadlocks, asymmetric write-write data races, priority inversion, live-locks, order violations, and bugs that stem from the presence of asynchronous signaling and locks. A second major contribution of this dissertation is a programming framework that exploits coarse-grain speculative parallelism to improve the performance of otherwise hard-to-parallelize applications. / Ph. D.

Page generated in 0.0882 seconds