Loris: In that case, I think you've been blinkered so much that you couldn't acknowlege it if it were perfect. (Which I admit it's not - nowhere near.)
Windows's multitasking isn't perfect. Neither is Linux's or MacOS X/Mach's. But they seem to get it better. I think to say Microsoft don't worry about usability at all is extremely unfair. From the available evidense, it would appear that ROL and CTL care very little about stability or development. But this most likely isn't true at all. Most people I know are perfectly happy with Windows, and when they're shown Linux or RISC OS, really don't like it all. People who say that RISC OS's GUI is intuative are missing something important: Lots of the state is hidden until you do something that isn't actually obvious. (ie, pressing the middle button for menus.) While I like that idea, because it saves screen real estate, and means moving the mouse less, it certainly isn't intuative.
Windows uses a prioritised scheduling system, like most pre-emptively multitasking OSes. When a process wants to run, the sheduler puts it on a "run" list. It knows when it wants to run, because the OS knows if it has received an event, or if data it was requesting from the disc or IP stack is now ready. The list is then sorted in terms of priority - different processes have different priorities. It then works through them all, giving them all a slice of time. Obviously, this is a hideous simplifcations of how it actually works. Read Tanenbaum if you're more interested on the subjection of multitasking and scheduling algorithms. It's amusingly written, and quite easy reading considering the horrific complexity of the subject. Unix allows processes to change their priority at run time. But obviously, if the process has work to do, you want it to do it. Unlike RISC OS, if no processes want to do anything, Windows and Unix essentially turn the CPU off until one does. It isn't eager to do something if nothing needs doing.
A process can surrender the remaining time in its allocated time slice by "blocking" - ie, asking the OS for something that isn't available instantly. This could be to read some data from a file, waiting on a socket for activity, or waiting for a specific time to occur. It's quite easy for a Unix process to say "Don't return to me for a tenth of a second" for example, but there's little point. The whole idea of PMT is that processes rarely need to concern themselves in multitasking at all. They all act if they're going full-pelt all the time. Which also simplifies programs quite dramatically, leading to fewer bugs.