FreeRTOS is a better choice in a lot of circumstances. But you don't get a driver ecosystem like Linux.
In embedded the trend is heading toward heterogenous systems, where you have an application processor running Linux and a coprocessor (sometimes on the same die) that runs an RTOS.
In some of the systems I've worked with the Linux side runs the GUI, mass storage, connectivity, etc while the small RTOS processor manages the time-critical control and measurement.
Depends how "hard" realtime we're talking. For tighter deadlines you'd usually use QNX or PikeOS or the like. The bigger issue is that for higher task frequencies you probably don't want to use big microprocessors, but microcontrollers that don't have a MMU but a MPU max. That rules out Linux quite often (plus space constraints).