It was thus said that the Great Huw Davies once stated:
 Are the risks in preemptive scheduling just ones of complexity? I guess
 that it is much harder to "prove" that this type of scheduler is going
 to to the right thing at the right time. I know that,
 for example, the scheduler for VMS has gone from a couple of pages of
 assembler
 to something like 75 pages of BLISS! 
  The biggest risk is still CPU starvation.  The AmigaOS (at least up
through 1.3) used a simple round-robin with priority scheduler.  Dead simple
to implement but can lead to process starvation (three CPU bound tasks, two
at priority 100, the third at 0---the one at 0 would not be scheduled; the
other two would switch off though).
  But generally speaking the two styles of multitasking just shove the
complexity around---in cooperative the complexity is handed off to the
application programmer, while in preemptive, it's handed off to the systems
programmer.
  -spc (Hmmm ... Linux 2.0 has 1800 lines in sched.c, while 2.4 has only
        1300 ... )