Safe and sound lock generation with data-centric concurrency control

Bibliographic Details
Main Author: Salgado, Pedro Miguel Silva Ribeiro
Publication Date: 2023
Format: Master thesis
Language: eng
Source: Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
Download full: http://hdl.handle.net/10362/165842
Summary: The rise of multi-threaded programming propels shared-memory concurrency control to an even more important role, as it hinders program performance with multiple errors such as deadlocks. Most research on concurrency control tends to be control-centric rather than datacentric. This approach focuses on marking the beginning and end of critical regions that require synchronization. However, it decentralizes concurrency and increases the likelihood of errors and bugs by the programmer. In this state-of-the-art analysis, I examine existing control-centric approaches and their specifications, as well as provide a more in-depth analysis of a data-centric approach. I explain how these approaches prevent deadlocks, ensure serializability, and outline the annotations required from the programmer. The RC3 model aims to improve upon current data-centric concurrency control implementations. I provide a thorough explanation of the model’s strategy and pipeline, step-by-step, with real examples of each step’s purpose. In this thesis we take the RC3 Java algorithm as a starting point and create a version of it in OCaml. This OCaml version simplifies some of the complex details from the original Java code while keeping the critical logic intact. The thesis walks through each step of this OCaml implementation, explaining it thoroughly and providing practical code examples. Additionally, we use Cameleer, along with its annotations, combined with the Why3 graphical interface, to check that the OCaml implementations are correct and to ensure both the functionality and the robustness of the algorithm. In the end, I provide a detailed explanation of the results I achieved with the OCaml implementation and Cameleer verification. I’ll clarify which parts of the algorithm I successfully verified and point out areas that require future work. Additionally, I’ll describe the OUnit tests I performed to ensure the robustness of my OCaml implementation.
id RCAP_870db7ab20f7097815c8f1c43fb1b045
oai_identifier_str oai:run.unl.pt:10362/165842
network_acronym_str RCAP
network_name_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository_id_str https://opendoar.ac.uk/repository/7160
spelling Safe and sound lock generation with data-centric concurrency controlData-centric ConcurrencyControl-centric ConcurrencyDeadlock-freedomSerializationFormal VerificationDomínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e InformáticaThe rise of multi-threaded programming propels shared-memory concurrency control to an even more important role, as it hinders program performance with multiple errors such as deadlocks. Most research on concurrency control tends to be control-centric rather than datacentric. This approach focuses on marking the beginning and end of critical regions that require synchronization. However, it decentralizes concurrency and increases the likelihood of errors and bugs by the programmer. In this state-of-the-art analysis, I examine existing control-centric approaches and their specifications, as well as provide a more in-depth analysis of a data-centric approach. I explain how these approaches prevent deadlocks, ensure serializability, and outline the annotations required from the programmer. The RC3 model aims to improve upon current data-centric concurrency control implementations. I provide a thorough explanation of the model’s strategy and pipeline, step-by-step, with real examples of each step’s purpose. In this thesis we take the RC3 Java algorithm as a starting point and create a version of it in OCaml. This OCaml version simplifies some of the complex details from the original Java code while keeping the critical logic intact. The thesis walks through each step of this OCaml implementation, explaining it thoroughly and providing practical code examples. Additionally, we use Cameleer, along with its annotations, combined with the Why3 graphical interface, to check that the OCaml implementations are correct and to ensure both the functionality and the robustness of the algorithm. In the end, I provide a detailed explanation of the results I achieved with the OCaml implementation and Cameleer verification. I’ll clarify which parts of the algorithm I successfully verified and point out areas that require future work. Additionally, I’ll describe the OUnit tests I performed to ensure the robustness of my OCaml implementation.A ascensão da programação multithread impulsiona o controlo de concorrência em memória partilhada para um papel ainda mais importante, uma vez que esta pode prejudicar o desempenho do programa com vários erros, tal como os deadlocks. A maioria das investigações sobre o controlo de concorrência tende a ser controlcentric, em vez de data-centric. Esta abordagem foca-se na marcação do início e do fim de regiões críticas que requerem sincronização. No entanto, esta descentralização da concorrência aumenta a probabilidade de erros e falhas por parte do programador. Nesta análise do estado da arte, examino algumas abordagens control-centric existentes e respetivas especificações, além de fornecer uma análise mais aprofundada de uma abordagem data-centric. Explico também como estas abordagens previnem deadlocks, garantem a serializabilidade e delineio as anotações necessárias por parte do programador nelas. O modelo RC3 visa melhorar as implementações data-centric atuais de controlo de concorrência. Forneço uma explicação detalhada da estratégia e pipeline do modelo, passo a passo, com exemplos reais do propósito de cada passo. Nesta tese, partimos do algoritmo em Java do modelo do RC3 como ponto de partida e criamos uma versão em OCaml. Esta versão em OCaml simplifica alguns dos detalhes complexos do código Java original, mantendo a lógica crítica intacta. A tese percorre cada passo desta implementação em OCaml, explicando-a detalhadamente e fornecendo exemplos práticos de código. Além disso, utilizamos o Cameleer, juntamente com as suas anotações e o Why3, para verificar que as implementações em OCaml estão corretas e para garantir a robustez do algoritmo. No final, forneço uma explicação detalhada dos resultados alcançados e clarificarei quais partes do algoritmo foram verificadas com sucesso, destacando as áreas que requerem trabalho futuro. Além disso, descreverei os testes OUnit que realizei para garantir a robustez da minha implementação em OCaml.Ravara, AntónioPaulino, HervéPereira, MárioRUNSalgado, Pedro Miguel Silva Ribeiro2024-04-05T09:52:52Z2023-072023-07-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10362/165842enginfo:eu-repo/semantics/openAccessreponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiainstacron:RCAAP2024-05-22T18:20:13Zoai:run.unl.pt:10362/165842Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireinfo@rcaap.ptopendoar:https://opendoar.ac.uk/repository/71602025-05-28T17:50:57.437701Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologiafalse
dc.title.none.fl_str_mv Safe and sound lock generation with data-centric concurrency control
title Safe and sound lock generation with data-centric concurrency control
spellingShingle Safe and sound lock generation with data-centric concurrency control
Salgado, Pedro Miguel Silva Ribeiro
Data-centric Concurrency
Control-centric Concurrency
Deadlock-freedom
Serialization
Formal Verification
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
title_short Safe and sound lock generation with data-centric concurrency control
title_full Safe and sound lock generation with data-centric concurrency control
title_fullStr Safe and sound lock generation with data-centric concurrency control
title_full_unstemmed Safe and sound lock generation with data-centric concurrency control
title_sort Safe and sound lock generation with data-centric concurrency control
author Salgado, Pedro Miguel Silva Ribeiro
author_facet Salgado, Pedro Miguel Silva Ribeiro
author_role author
dc.contributor.none.fl_str_mv Ravara, António
Paulino, Hervé
Pereira, Mário
RUN
dc.contributor.author.fl_str_mv Salgado, Pedro Miguel Silva Ribeiro
dc.subject.por.fl_str_mv Data-centric Concurrency
Control-centric Concurrency
Deadlock-freedom
Serialization
Formal Verification
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
topic Data-centric Concurrency
Control-centric Concurrency
Deadlock-freedom
Serialization
Formal Verification
Domínio/Área Científica::Engenharia e Tecnologia::Engenharia Eletrotécnica, Eletrónica e Informática
description The rise of multi-threaded programming propels shared-memory concurrency control to an even more important role, as it hinders program performance with multiple errors such as deadlocks. Most research on concurrency control tends to be control-centric rather than datacentric. This approach focuses on marking the beginning and end of critical regions that require synchronization. However, it decentralizes concurrency and increases the likelihood of errors and bugs by the programmer. In this state-of-the-art analysis, I examine existing control-centric approaches and their specifications, as well as provide a more in-depth analysis of a data-centric approach. I explain how these approaches prevent deadlocks, ensure serializability, and outline the annotations required from the programmer. The RC3 model aims to improve upon current data-centric concurrency control implementations. I provide a thorough explanation of the model’s strategy and pipeline, step-by-step, with real examples of each step’s purpose. In this thesis we take the RC3 Java algorithm as a starting point and create a version of it in OCaml. This OCaml version simplifies some of the complex details from the original Java code while keeping the critical logic intact. The thesis walks through each step of this OCaml implementation, explaining it thoroughly and providing practical code examples. Additionally, we use Cameleer, along with its annotations, combined with the Why3 graphical interface, to check that the OCaml implementations are correct and to ensure both the functionality and the robustness of the algorithm. In the end, I provide a detailed explanation of the results I achieved with the OCaml implementation and Cameleer verification. I’ll clarify which parts of the algorithm I successfully verified and point out areas that require future work. Additionally, I’ll describe the OUnit tests I performed to ensure the robustness of my OCaml implementation.
publishDate 2023
dc.date.none.fl_str_mv 2023-07
2023-07-01T00:00:00Z
2024-04-05T09:52:52Z
dc.type.status.fl_str_mv info:eu-repo/semantics/publishedVersion
dc.type.driver.fl_str_mv info:eu-repo/semantics/masterThesis
format masterThesis
status_str publishedVersion
dc.identifier.uri.fl_str_mv http://hdl.handle.net/10362/165842
url http://hdl.handle.net/10362/165842
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.format.none.fl_str_mv application/pdf
dc.source.none.fl_str_mv reponame:Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
instname:FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron:RCAAP
instname_str FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
instacron_str RCAAP
institution RCAAP
reponame_str Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
collection Repositórios Científicos de Acesso Aberto de Portugal (RCAAP)
repository.name.fl_str_mv Repositórios Científicos de Acesso Aberto de Portugal (RCAAP) - FCCN, serviços digitais da FCT – Fundação para a Ciência e a Tecnologia
repository.mail.fl_str_mv info@rcaap.pt
_version_ 1833597009166073856