It's closer to bare metal than Linux but it's not a real time operating system capable of precise timing like you'd see on a microcontroller. I see some configs that allow for pinning a thread to a core that they claim can be used for real time workloads so it'll be a lot more predictable than a Linux kernel. However, the RPi has a memory controller with a caching layer so it'll still be different than using an STM32 or Atmega with or without an RTOS (i.e. with Ultibo you can use malloc to allocate memory and you'll have to watch out for the cache if you're touching DMA).