RTEMS 操作系统的概念:任务

任务~(Task)~不是所有操作系统里都有的概念。常见的实时操作系统,如~uC/OS-II、
FreeRTOS、RTEMS~中是有这个概念的。这些操作系统有一个共同的特点,即用户
的应用程序和操作系统作为一个执行体运行在目标系统上。这里的执行体(Executive)指的是用户代码和操作系统代码编译在一起形成的
可执行文件。一般的操作系统中如~Linux、Windows~中,是没有这个概念的。以~Linux~为例,用户的应用程序作为一个或多个进程(Process)运行在~Linux~上,
用户的代码和操作系统代码分开编译,开发方法和加载方式都有着较大的区别。这类操作系统有一个共同的特点,操作系统作为一个单独的执行体运行
在目标系统上,用户应用代码编译后形成的执行体在有操作系统支持环境中运行。

从以上的介绍来看,既然任务没有和操作系统分开,那么操作系统和任务是糅合在一个进程里运行的。
任务是可以并发执行,是操作系统可调度的最小单位。
一般来说,进程作为资源拥有的基本单位,线程(Thread)作为调度(Schedule)的基本单位。
对于以执行体方式运行的系统,显然不能再把进程作为资源拥有的基本单位,只能将任务作为资源拥有的基本单位;
同时,任务作为系统中可调度的实体,没有比其更小的实体被系统调用,所以它也是调度的基本单位。
许多文献都给出任务的定义,但这个概念本身就和其操作系统有着千丝万缕的联系,没有一个使用了与操作系统无关形式去定义这个概念,并囊括了这个概念的全部内容。
这里列出一些常见的定义,促使读者利用自己的经验去理解这个概念:

1. 一个可调度和分派的基本单位;
2. 一个可以申请处理器时间的实体;
3. 一个实时,多处理器系统的一个原子单位;
4. 可并发执行的完全拥有资源的单个线程;
5. 可以和别的计算序列并发执行的一个计算序列。


从~RTEMS~的角度看,一个任务是能完全拥有系统资源、最基本的、可执行的线程。从定义上看,
任务的概念是比较接近线程的,不同的是它也是拥有资源的基本单位,这点和进程类似。

你可能感兴趣的:(thread,linux,windows,任务)