Yes and no.
What Ada needs is its own RTS (Runtime System), a fairly large piece of code that (in another recent question) inflates "Hello World" to several hundred kilobytes. This does not at all affect "efficiency" or, otherwise, Ada, it is a one-time cost regardless of the size of the program and for any significant program - for example, with concurrency - it competes with libraries that you must add for other solutions.
Question: How is this runtime implemented? If you use the standard ready-made Ada compiler (Gnat) in your standard mode, you get an RTS that aligns Ada concurrency objects on top of the "pthreads" package (Posix threads) to process low-level details, and this obviously overlaps the OS. Here is a detailed description.
But there are other solutions in which the same tools can be provided either using RTOS, or using Ada RTS itself on a pure metal processor, or not even at all (due to the lack of concurrency) if you are targeting an integrated microcontroller with 1K memory.
You can create any Ada program for another RTS by adding the --RTS=path/to/my/rts option to the build command (gnatmake or something else).
For industrial use, Adacore itself offers VXWorks commercial support .
There are RTS examples for embedded ARM processors located on top of FreeRTOS or other RT applications. (Excellent blog support here). They may not provide full Ada targets, but a selected subset, such as the RAVENSCAR profile, which lends itself to a small system implementation (e.g. 12K or so for the ARM Thumb code) and formal proof of validity (RAVENSPARK).
Since they are partly an open source community , the efforts are fragmented and may not contain all the communication protocols that you mentioned in the comment, however, the convenient Ada interface for C libraries makes it easy to add Ada wrappers for missing components. And I suspect that the community will welcome additional help in covering the remaining bases!
Some protocols are available, but with the rarity of people singing Ada praises, they are not widely advertised and may take some digging to find. For example, there is a library that interacts with the MBUS protocol used by some industrial tools. the same author also offers a preliminary version of the libusb binding .
If you are interested in the Ada launcher with minimal RTS and no operating system, the "Ada Bare Bones" on the OSDev Wiki page may be interesting. This is for the i386, but similar RTS bare bones exist for the AVR and MSP430 microcontrollers.
This book looks like another useful resource with accompanying training material on its own website .
For a more theoretical approach, John McCormick's book, Creating Concurrent, Real, and Embedded Applications in Ada, is valuable.
And one more link: as you mentioned the GUI, I would suggest looking at the Gnoga framework written in Ada, where your application serves to view web pages in any browser.