In reading through the "Patterns" book, Pont seems dead-set on that Cooperative schedulers are the only way to go. This, to me at least, means that you ignore all interrupt sources in a system and just work off the scheduler's ticks. The question is: Does this really work for designs that might have a non-trivial real-time I/O requirement?
Let's say you have:
10/100 Ethernet USB 1.0 Host USB 1.0 Peripheral A few serial ports KeypadI suppose you could fashion your code so that tasks quickly gather data from inputs or outputs and stuff it into buffers. You still need data-crunching tasks. Just as an example, if you have data coming in the Ethernet port at a good pace that needs to be manipulated and spit out the USB port, I'm not sure how this can be done without less cooperation from the part of a scheduler and more interrupt action.
Of course, there's a fine line below which you don't have the luxury of implementing schedules. We've all designed systems, I'm sure, where every single clock tick counts and you have to get truly creative to get the design to do more than one thing at the same time.
Is he coming from an assumption that MCU's are so fast these days that task execution time might be much less significant --thus warranting a blanket "use this approach" recommendation?
BTW, if any book authors/editors are reading. Please, I beg you, do not burn 1/3 of the book with useless basics. I don't know how many books I have where there's a permanent bookmark about 1/3 of the way in because the front third is useless stuff that belongs in another book. Most serious practitioners will have more than one book. No need to cover this over and over.
-Martin