I keep getting the feeling that we take different meanings from the same terms. In order to clarify the situation, can I point to the Wikipedia entries for multithreading and forking?
RO is presently a N:1 multi-threaded system, that is all thread are mapped onto a sinlge processor, and the application itself schedules those threads. In most cases, it does so in response to reasoncodes retruned by Wimp_Poll.
My Wimp_Poll suggestion is an attempt to change to a 1:1 multithreading system, where all thread scheduling is carried out by the kernel. I suppose it would be more correct to consider such a system pre-pemtive, and to finish the picture, I wonder if the pre-filter mechanism could be used (by the kernel) to prevent blocking. Simtec's Hydra was introduced before prefiltering, I think.
Killermike's suggestion is called "forking" in which the OS creates a new instance of itself and starts a process (application) within that instance, thus giving each application its own OS context. Clearly, since all applications need to share hardware resources, the child processes would not be a copy of the OS, just the API. The rest of t he OS would need to be rwritten to allow more than one context.