Re: RiscOS really was magnificent but...
Whilst it was co-operative multitasking with no interrupt driven scheduler, the points at which a process could lose the CPU were built into many of the system calls, including the ones to read keystrokes from the keyboard and the mouse position.
What this meant was that if you were doing any I/O through the OS, there were regular points where control could be wrested from a process.
That's not to say that it was not possible to write a process that would never relinquish the CPU, but most normal processes are not written like that.
The real issue (IIRC) is that the earlier versions of RiscOS did not enforce any memory space virtualisation or separation. All processes had to be written as position independent code that could sit anywhere in memory, and used the OS to manage their data space. This meant that in this day and age, RiscOS would be regarded as a really insecure OS.