Maxwell Para Simples Indexação

Título
[pt] REVISITANDO MONITORES, NOVAMENTE

Título
[en] REVISITING MONITORS, AGAIN

Autor
[pt] RENAN ALMEIDA DE MIRANDA SANTOS

Vocabulário
[pt] MONITOR

Vocabulário
[pt] PROVA FORMAL

Vocabulário
[pt] SEMANTICA OPERACIONAL

Vocabulário
[pt] CONDICAO DE CORRIDA

Vocabulário
[en] MONITOR

Vocabulário
[en] FORMAL PROOF

Vocabulário
[en] OPERATIONAL SEMANTICS

Vocabulário
[en] DATA RACING

Resumo
[pt] Ao longo dos anos, muitas linguagens de programação foram propostas com o objetivo de prevenir condições de corrida para acessos à memória. O conceito de monitores, em particular, foi concebido justamente para evitar condições de corrida com acessos à memória. Nesta tese, nós descrevemos uma linguagem de programação inspirada por monitores e livre desse tipo de condição de corrida. Nossa linguagem possui threads, memória compartilhada com ponteiros, laços não limitados, e uma construção nova que emula as capacidades de monitores. Essa nova construção é interessante porque é mais simples e, ao mesmo tempo, mais flexível do que monitores. Nós prevenimos condições de corrida na linguagem por meio de um sistema de tipos que permite apenas o compartilhamento entre threads de dados imutáveis ou protegidos. Nós definimos a semântica operacional em passo pequeno da nossa linguagem por meio de três operações distintas e hierarquicamente organizadas: grosseiramente, a primeira camada representa núcleos individuais, a segunda camada gerencia a memória compartilhada e a terceira camada gerencia o conjunto de threads. Sobre essas relações, nós definimos uma relação de múltiplos passos que produz um traço da execução do programa. Nós usamos esse traço para provar a ausência de condições de corrida. Todos esses resultados foram formalmente definidos e provados em Coq.

Resumo
[en] Over the years, many programming languages were proposed with the goal of being free from data races. The concept of monitors, in particular, was envisioned precisely to prevent data races. In this thesis, we describe a data-race-free programming language inspired by monitors. Our languages features threads, shared memory with referential semantics, unbounded loops, and a novel construct that emulates monitor capabilities. This new construct is interesting because it is simpler and at the same time more flexible than monitors. We prevent data races in the language by using a type system that allows only immutable or protected data to be shared among threads. We defined the small-step operational semantics of this language through three distinct and hierarchically layered single-step operations: roughly, the first layer represents individual cores, the second layer manages the shared memory, and the third layer manages the thread pool. Over these relations, we defined a multistep relation that produces a trace of program execution. We use this trace to prove the absence of data races. All these results were formally defined and proved in Coq.

Orientador(es)
ROBERTO IERUSALIMSCHY

Banca
ROBERTO IERUSALIMSCHY

Banca
NOEMI DE LA ROCQUE RODRIGUEZ

Banca
ANAMARIA MARTINS MOREIRA

Banca
FRANCISCO FIGUEIREDO GOYTACAZ SANT ANNA

Banca
HUGO MUSSO GUALANDI

Catalogação
2025-08-26

Apresentação
2025-04-25

Tipo
[pt] TEXTO

Formato
application/pdf

Idioma(s)
INGLÊS

Referência [pt]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=72693@1

Referência [en]
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=72693@2

Referência DOI
https://doi.org/10.17771/PUCRio.acad.72693


Arquivos do conteúdo
NA ÍNTEGRA PDF