Combuster wrote: The problem is that eliminating context switches means a single program single tasking system
as I understand, context switch is INTERRUPTION of a running process to give time to another process. But you can run many tasks of the same program until the program can't continue because of dependencies with other programs. The program will have to leave the CPU. This will be a MULTI tasking system on ONE core.
So, it IS possible to have an OS without context switching.
The problem is to organize the software to execute in a cooperative way, probably the programs must be behaving more like libraries than as independent applications. Unix was developed 50 years ago, and computers were single CPU, so you had to do context switching. Today we have multicore systems that can easily distribute tasks on different cores being free to run the time slice they need, but the preemptive paradigm keeps dragging developers into the old style.
I do not have a ready solution yet using cooperative multiasking, but this is the idea and I am working on it.