| Name: | Description: | Size: | Format: | |
|---|---|---|---|---|
| 3.91 MB | Adobe PDF |
Authors
Abstract(s)
The development of real-time systems has gained increasing relevance in recent years, driven by
the growing presence of critical applications in areas like robotics, automotive systems, and the
Internet of Things. These systems require correctness and strict timing guarantees, which the
increased complexity of modern systems has made more difficult. One common solution to
increase performance has been the use of multi-core processors. However, the limits of sequential
programming soon became clear, making parallelism a necessary step forward.
This thesis presents the design, implementation, and evaluation of a custom framework for realtime
parallelism. After an initial comparison between Rust and the OpenMP model in C, Rust was
selected for its safety features, low-level control, and growing ecosystem. The goal was to test
whether real-time behaviour could be reliably achieved in a Rust-based environment by taking
control over thread and job management.
A custom library was built and tested measuring metrics such as execution time, dispatch latency,
and task distribution. Results show that, with careful design, efficient and predictable performance
is possible even on a non-real-time OS like Linux. Future improvements include deeper scheduler
integration, integration with real-time operating system, and deployment on embedded platforms
such as RISC-V.
O desenvolvimento de sistemas de tempo real é um dos temas com maior relevância dos últimos anos. A quantidade de esforço que é investido para o melhoramento destes sistemas tem sido elevada e com tendências de aumentar. Isto deve-se principalmente às exigências da atualidade no que diz respeito a tecnologia. O número de sistemas críticos tem aumentado cada vez mais, o que resultou num grande aumento de problemas que exigem soluções com maior rapidez e previsibilidade temporal. De forma a conseguir aumentar a performance destes sistemas, a utilização de computadores com mais do que um processador foi a solução que mais resultados obteve. No entanto, esta abordagem também alcançou o seu limite devido às restrições impostas pela programação sequencial. Como tal, as soluções mais recentes têm-se apoiado no uso de programação em paralelo. Esta dissertação apresenta o design, a implementação e a avaliação de uma framework personalizada para suportar a execução paralela com requisitos de tempo real, utilizando a linguagem de programação Rust. Após uma análise inicial entre Rust e o modelo OpenMP em C, foi selecionado o Rust pelas suas garantias de segurança de memória, pelo seu ecossistema em expansão e pela sua adequação ao desenvolvimento de sistemas concorrentes e de baixo nível. O principal objetivo do projeto foi avaliar se seria possível alcançar um comportamento próximo de um sistema em tempo real através de um sistema baseado em Rust, recorrendo ao controlo detalhado da gestão de threads e tarefas. Para isso, foi desenvolvida uma biblioteca que permite esse controlo, dando ao utilizador diferentes formas de criação de threads e distribuição de tarefas. Foram realizados diversos testes de desempenho para avaliar métricas como a duração da execução, a latência na distribuição de tarefas e o equilíbrio de carga entre as threads. Os resultados mostraram que, com uma configuração e design cuidadosos, é possível obter uma execução paralela estável e eficiente, com um comportamento temporal que se aproxima das exigências dos sistemas em tempo real, mesmo em ambientes que não são nativamente de tempo real, como é o caso do sistema operativo Linux. Apesar dos resultados encorajadores, o trabalho também evidenciou algumas limitações, nomeadamente as restrições impostas pelo escalonador do Linux e a ausência de mecanismos mais precisos para a gestão de deadlines. Como possíveis melhorias futuras, propõe-se a extensão da interface de escalonamento com novos algoritmos, a integração com sistemas operativos de tempo real e o desenvolvimento em arquiteturas embarcadas, como por exemplo as plataformas baseadas em RISC-V.
O desenvolvimento de sistemas de tempo real é um dos temas com maior relevância dos últimos anos. A quantidade de esforço que é investido para o melhoramento destes sistemas tem sido elevada e com tendências de aumentar. Isto deve-se principalmente às exigências da atualidade no que diz respeito a tecnologia. O número de sistemas críticos tem aumentado cada vez mais, o que resultou num grande aumento de problemas que exigem soluções com maior rapidez e previsibilidade temporal. De forma a conseguir aumentar a performance destes sistemas, a utilização de computadores com mais do que um processador foi a solução que mais resultados obteve. No entanto, esta abordagem também alcançou o seu limite devido às restrições impostas pela programação sequencial. Como tal, as soluções mais recentes têm-se apoiado no uso de programação em paralelo. Esta dissertação apresenta o design, a implementação e a avaliação de uma framework personalizada para suportar a execução paralela com requisitos de tempo real, utilizando a linguagem de programação Rust. Após uma análise inicial entre Rust e o modelo OpenMP em C, foi selecionado o Rust pelas suas garantias de segurança de memória, pelo seu ecossistema em expansão e pela sua adequação ao desenvolvimento de sistemas concorrentes e de baixo nível. O principal objetivo do projeto foi avaliar se seria possível alcançar um comportamento próximo de um sistema em tempo real através de um sistema baseado em Rust, recorrendo ao controlo detalhado da gestão de threads e tarefas. Para isso, foi desenvolvida uma biblioteca que permite esse controlo, dando ao utilizador diferentes formas de criação de threads e distribuição de tarefas. Foram realizados diversos testes de desempenho para avaliar métricas como a duração da execução, a latência na distribuição de tarefas e o equilíbrio de carga entre as threads. Os resultados mostraram que, com uma configuração e design cuidadosos, é possível obter uma execução paralela estável e eficiente, com um comportamento temporal que se aproxima das exigências dos sistemas em tempo real, mesmo em ambientes que não são nativamente de tempo real, como é o caso do sistema operativo Linux. Apesar dos resultados encorajadores, o trabalho também evidenciou algumas limitações, nomeadamente as restrições impostas pelo escalonador do Linux e a ausência de mecanismos mais precisos para a gestão de deadlines. Como possíveis melhorias futuras, propõe-se a extensão da interface de escalonamento com novos algoritmos, a integração com sistemas operativos de tempo real e o desenvolvimento em arquiteturas embarcadas, como por exemplo as plataformas baseadas em RISC-V.
Description
Keywords
Rust Real-Time Systems Parallel Programming Thread Management Sistemas de Tempo Real Programação em paralelo Gestão de Threads
Pedagogical Context
Citation
Publisher
CC License
Without CC licence
