Multitasking Systems

来自osdev
跳到导航 跳到搜索

多任务系统是指操作系统 (甚至是系统中的扩展)在多个任务之间自动共享可用处理器时间的行为。

多任务系统的类型

有许多方法可以实现多任务处理。

Cooperative Multitasking 协作多任务

对于 协作多任务,任务可以一直使用CPU,直到它自愿放弃CPU (可以是yields或exits)。 协作多任务系统的示例是pre-X MacOS或Windows 3.X。

在一些单语言协作多任务系统中,如Oberon和ruby中,编译器/解释器会自动确保代码周期性地产生控制; 让这样的程序可以在DOS等操作系统上(译者注:指不是操作系统,而是语言运行时实现的多线程)运行多个线程。

Preemptive Multitasking 抢占性多任务

抢占性多任务 系统中,某些当前运行的任务切换不是由任务主动放弃CPU引起的,并且由于某些其它原因而完成 (包括当任务消耗了给定的时间或当更高优先级的任务需要CPU时)。

几乎所有的现代操作系统都是这种形式 - 例如Linux,*BSD,Windows 3.x以后,BeOS,AmigaOS。

你可以进一步将这些系统细分为可以抢占任务和可以抢占 “内核本身” 的系统。 Linux (pre-2.6内核) 是前者的一个例子,而AmigaOS是后者的一个例子。 这是多媒体应用程序或任何 “软” 实时系统 的主要关注点,因为非抢先内核会引入延迟,从而可能破坏媒体播放 “近乎实时” 的性能要求。

另见

文章

外部链接