At 11:20 AM 6/2/97 +1000, you wrote: I'm not sure I understand exactly what you are describing in the first paragraph, but the second describes what is usually called "preemptive" multitasking. Cooperative multitasking is multitasking where a context switch occurs only when the current task or thread decides it is prepared to relinquish the CPU. This is usually done by calling an OS function, e.g. Yield(), which will either return immediately if no other task is ready to run, or perform a context switch if there is another task ready. -snip- -- Clyde Smith-Stubbs ++++++++++++++++++++++ I meant to describe in the first paragraph programming like I do state machine design for chips, where you DO know all the possible states of your program,(it may be a big set), or if you can't define all the states in a problem, you separate that problem and use another processor to handle it so that you CAN define all the states in the program at hand. Then you dont need a preemptive RTOS. Thanks for the clear definitions.