|
知识路径: > 嵌入式系统软件基础知识 > 嵌入式操作系统基础知识 > 处理器管理 > 分区、进程、线程、任务的概念 > 任务的实现 >
|
相关知识点:6个
|
|
|
|
在多道程序系统中,任务是独立运行的实体,需要参与系统资源的竞争,只有在所需资源都得到满足的情形下,才能在CPU上运行。因此,任务所拥有的资源情况是在不断变化的,这导致任务的状态也表现出不断变化的特性。不同的嵌入式操作系统对任务状态的定义不尽相同,但是一般来说,它们都会具备以下的三种基本状态。
|
|
|
.运行状态(Running):任务占有CPU,并在CPU上运行。显然,处于此状态的任务个数必须小于或等于CPU的数目。如果在系统当中只有一个CPU的话,那么在任何一个时刻,最多只能有一个任务处于运行状态。
|
|
|
.就绪状态(Ready):任务已经具备了运行的条件,但是由于CPU正忙,正在运行其他的任务,所以暂时不能运行。不过,只要把CPU分给它,它就能够立刻执行。
|
|
|
.阻塞状态(Blocked):也叫等待状态(Waiting)。任务因为正在等待某种事件的发生而暂时不能够运行。例如,它正在等待某个I/O操作的完成,或者它跟某个任务之间存在着同步关系,正在等待该任务给它发信号。此时,即使CPU已经空闲下来了,它也还是不能运行。
|
|
|
在一定条件下,任务会在不同的状态之间来回转换,如下图所示。对于任务的三种状态,可以有四种转换关系。
|
|
|
|
|
.运行→阻塞:任务由于等待某个事件而被阻塞起来。例如,一个任务正在CPU上运行,这时它需要用户输入一个字符。由于CPU的运行速度远远高于I/O设备的处理速度,因此操作系统不会允许该任务继续占用CPU,在那里空等,而是把它变成阻塞状态,然后调用其他的任务去运行。
|
|
|
.运行→就绪:一个任务正在CPU上运行,这时由于种种原因(如该任务的时间片用完,或另一个高优先级任务就绪),调度器选择了另一个任务去运行。这样对于当前的任务来说,就从运行状态变成了就绪状态。
|
|
|
.就绪→运行:处于就绪状态的任务被调度器选中去运行。
|
|
|
.阻塞→就绪:一个任务曾经因为等待某个事件而被阻塞起来,如果它等待的事件发生了,那么该任务就从阻塞状态变成了就绪状态,从而具备了继续运行的条件。
|
|
|