| Nome: | Descrição: | Tamanho: | Formato: | |
|---|---|---|---|---|
| 1.45 MB | Adobe PDF |
Autores
Orientador(es)
Resumo(s)
Over a decade ago the architectural paradigm shifted from single-core to multi-core/multi-
threaded CPUs. Since then programming in parallel became crucial for developing effi-
cient and faster programs. With concurrent programming came the challenge of writing
programs free of data races. There are mechanisms to control the concurrency by means
of synchronizing the threads, but using them does not always guarantee a correct pro-
gram.
To overcome this issue, in this thesis we investigate and present how we can use static
program analysis to detect data races in Java classes without any extra input from the
programmer. We used static analysis in Java to perform points-to analysis to find the
accesses that cause data races.
We benchmarked our tool with some open source code examples and compared the
results of our solution with an existing tool for static analysis. We found that, while our
tool still needs more refinement and optimization, it can already detect most, if not all of
the data races in Java classes.
Há mais de uma década, o paradigma arquitetural mudou de CPUs single-core para CPUs multi-core/multi-threaded. Desde então programar em paralelo tornou-se crucial para desenvolver programas mais rápidos e eficientes. Com a programação concorrente veio o desafio de escrever programas livres de data races. Existem mecanismos que efetuam controlo de concorrência ao sincronizarem as threads, mas usá-los por si só não garante um programa correto. Para resolver este problema, neste trabalho investigamos e apresentamos como po- demos usar análise estática de programas para detetar data races em classes Java sem qualquer informação extra dada pelo do utilizador. Fizemos testes à nossa ferramenta usando exemplos de código de fonte aberta e com- parámos os resultados da nossa solução com os de uma ferramenta de análise estática já existente. Descobrimos que, apesar de a nossa ferramenta ainda precisar de ser aperfeiço- ada e otimizada, esta já consegue detetar a maioria, senão todas as data races em classes Java.
Há mais de uma década, o paradigma arquitetural mudou de CPUs single-core para CPUs multi-core/multi-threaded. Desde então programar em paralelo tornou-se crucial para desenvolver programas mais rápidos e eficientes. Com a programação concorrente veio o desafio de escrever programas livres de data races. Existem mecanismos que efetuam controlo de concorrência ao sincronizarem as threads, mas usá-los por si só não garante um programa correto. Para resolver este problema, neste trabalho investigamos e apresentamos como po- demos usar análise estática de programas para detetar data races em classes Java sem qualquer informação extra dada pelo do utilizador. Fizemos testes à nossa ferramenta usando exemplos de código de fonte aberta e com- parámos os resultados da nossa solução com os de uma ferramenta de análise estática já existente. Descobrimos que, apesar de a nossa ferramenta ainda precisar de ser aperfeiço- ada e otimizada, esta já consegue detetar a maioria, senão todas as data races em classes Java.
Descrição
Palavras-chave
program analysis points-to analysis static analysis data race
