并发是现实世界的本质特征,而聪明的计算机科学家用来模拟并发的技术手段便是多任务机制。大致上有这么两种多任务技术,一种是抢占式多任务 (preemptive multitasking),它让操作系统来决定何时执行哪个任务。另外一种就是协作式多任务(cooperative multitasking),它把决定权交给任务,让它们在自己认为合适的时候自愿放弃执行。这两种多任务方式各有优缺点,前者固有的同步问题使得程序经常有不可预知的行为,而后者则要求任务具备相当的自律精神。
Preemptive Multitasking(先占式多任务处理,也可以译为抢占式多任务处理)所有程序代码的执行以Thread(执行绪)为单位,由操作系统统一排程与管理所有的Thread。分配的执行时间结束时,操作系统会主动中断Thread的执行,强制收回CPU的椌制权,但会以一组Thread Context记下Thread被中断时的状态,以备下次再轮到该Thread执行时,Thread能继续执行下去,完全感受不到自己曾被中断过。
Cooperative Multitasking(协调式多任务处理),也称为Non-Preemptive Multitasking(非先占式多任务处理,也可以译为非抢占式多任务处理)所有并行的程序们必须有良好的自律与公德心,在执行一段时间之后,自愿将CPU的控制权释出,依一定的排程规则交给其它程序轮流执行。可以想见的,如果其中一只程序设计不良或是出了问题,发了疯似的绕循环而迟迟不将CPU控制权交给下一只程序,整个操作系统就被拖垮了。