To make any worthwhile claims you need the worst case execution time of your code. Even in the absence of multi-threading, technologies like caches or out-of-order execution can make this quite painful.
The common solution seems to be: Don't care for some missed values (e.g. non-safety critical systems) or over provisioning (absence of budget pressure).
-> A RTOS alone doesn't give you any reliable claims (but does make a lot of embedded stuff much easier).