Uma implementação do OpenMP para o sistema operacional Nanvix
Nanvix, OpenMP, PULP GNU, GCC, Sistema Operacional, API, baixo custo, Risc-V
Plataformas de baixo custo energetico tendem a ter um sistema de processamento diretamente atrelado ao hardware, pois sistemas operacionais robustos costumam demandar alto consumo e processamento para lidar com os processos. Um problema de se lidar com sistemas que lidam diretamente com hardware ou com sistemas real time (RTOS) é que existe uma especificidade a cada sistema, fazendo com que os programadores percam muito tempo se preocupando com especificidades de suas plataformas e menos nas aplicações e soluções desejadas. Esses problemas são comuns em plataformas Risc-V de baixo custo energetico e paralelo (PULP), para isso costuma-se utilizar RTOSs para lidar com suas arquiteturas (Team 2013). OpenMP é uma API de importante para o desenvolvimento de aplicações paralelas pois torna uma tarefa complexa que é paralelizar processos em C em algo mais alto nível e simples para o programador além da alta capacidade de otimização dos processos. É um desafio a implementação em hardware do OpenMP além de ser muito específica para cada plataforma, por isso seria interessante um sistema operacional lidar com esse tipo de API tal qual é feito em um sistema Linux por exemplo. Nanvix é um sistema operacional(SO) para fins educacionais from scratch de um forma que fosse o mais simples e compacto possível mas ainda assim tendo todas os recursos necessários. Podendo lidar com computação concorrente com todos os recursos necessários para funcionar e ajudar o aprendizado de entusiastas de sistemas operacionais a desenvolver suas habilidades. O sistema não possui todas os recursos de um sistema considerado completamente POSIX como o LINUX tendo certas limitações que não o permitem fazer funcionar APIs de desenvolvimento como OpenMP existente no compilador GNU Compiling Collection(GCC). A proposta desse trabalho é desenvolver uma versão de OpenMP simplificada para o sistema Nanvix utilizando dos recursos disponíveis, inspirando-se na implementação do GNU. Além de estimular os pesquisadores do Nanvix a desenvolver o SO a medida que esse projeto avança e requer upgrades de sistema. Esse projeto visa contribuir com a evolução das plataformas PULP, o crescimento do sistema Nanvix com a integração dessa API e do projeto CEVERO de processamento de sinais aeroespaciais que dá origem a esse trabalho fazendo uma integração a esses projetos