That's a pretty vague question.
What criteria are you looking at/for? Or, are you just fishing?
Are you planning on coding in an HLL? Or, ASM? You can achieve relatively more in an ASM environment than a HLL as you are freed of many "requirements" imposed by the HLL.
Do you really need an RTOS? Or, will an MTOS suffice? IME, the biggest benefit comes from the multitasking capability (which can be relatively inexpensive). Most folks don't truly appreciate what real-time constraints impose on an RTOS (and simply claim the MTOS is an RTOS -- when it often isn't).
Which deterministic guarantees are important? What sort of resources can you afford to expend on/in the OS? There are no free lunches so you have to decide what you are willing to pay/trade away for the benefits you want to accrue.
Will your task set be static? Or, will they "come and go", over time, in response to particular needs in your application?
Do you need a preemptive MTOS/RTOS? Or, will a cooperative scheduler work for you? How much do you trust your (present/future) developers to be good citizens? How much attention do you want them to have to pay to what they are doing in their code?
Will you be handling all of your memory needs statically? At design time? Or, do you expect the OS to provide some assistance in that regard?
What sort of communication mechanisms do you need? Shared memory? Monitors? FIFO's? Message passing? Or, are you just planning on developing ad hoc mechanisms, "as required"?
Likewise, what sort of synchronization primitives do you expect? Or, are all of your "tasks" completely independant of each other?
Do you need support for hardware devices ("drivers")? Or, will you develop that yourself and integrate it with the operating environment?
How much support do you require for the OS in your development environment? Do you expect the debugger to react to asynchronous changes in the execution environment? (how do you expect to address this for a preemptive/timesliced implementation)
How well do you understand your application and the likely design of the constituent tasks therein? Can you already see the concurrency in your (planned) design? Or, are you just hoping to put mechanism in place that you may (or may NOT!) use later?
How much effort are you willing to invest in this (assuming you aren't keen on investing monies)?
Just some issues to get you thinking about what you really *need* vs. what you would *like*...
Good luck!