首先我们的熟悉实时系统的概念,实时系统它分为软实时和硬实时;软实时系统它是指系统的目的是为了使各个任务尽快的执行,而不要求限定的某一个任务在多长时间内完成,也就是该系统超过规定时间对系统不会产生很大的影响,系统依然可以运行。而硬实时系统则不仅要求任务执行无误,而且还要做到准时;也就是说在一到达规定的时间,任务必须完成,否则会给系统带来灾难性的后果。
我以前写的程序很多是没有嵌系统的,所以它们称为前/后台系统或超循环系统。那么什么是前台,什么是后台呢?我们的程序中有个main函数,这个函数肯定是一个无限循环系统,在循环中调用相应的驱动函数完成相应的功能,这部分可以看成是后台行为;一般的系统都是有中断发生的,那么中断服务处理程序可以看成是前台行为;固有这个说法,后台可以成为任务级,前台成为中断级。这种前/后台系统有一个很大的缺点,就是任务级的响应时间不是固定的,因为它是循环中的一部分,所以取决于循环运行的时间,所以前/后台系统很容易跑飞。
代码的临界段也称临界区,指处理时不可分割的代码;所以进入临界区之前必须关中断,临界区代码执行完后,必须马上开中断。
任务,在UCOS-ii实时系统中,一个任务其实就是一个线程,该任务可以认为CPU完全属于它自己。UCOS-ii中的任务拥有自己的堆栈和CPU寄存器,并且赋予一定的优先级,在UCOS-ii中,它可能处于睡眠、就绪、运行、等待、中断服务状态之一。1)睡眠状态:它是一个什么样的状态呢,它其实是指一个任务在内存中就占用一部分ROM,它没有被操作系统分配任务控制块,它和其他状态下的任务没有任何直接联系,也就是说不能被内核调度,就好比 我们去吃饭,正在路上;2)就绪状态:它是指操作系统给它分配了任务控制块,已经在就绪列表中登记中,它此时不能运行是因为它的优先级不是最高的,就好比我们去吃饭时在那排队一样;3)运行状态:它 是指一个任务正在运行,应该好理解,就好比食堂工作人员在给我们打饭;4)等待状态:就是一个任务由于一个的条件没有满足,比如说在等待一个信号量的到来,而被至于等待状态,就像我们在打饭时,如果工作人员还没有来,那你没办法,你就得等拉;5)中断服务状态:就是在某个时刻突然因为一个中断到来,那么 这个任务就会马上被中断掉,从而处于中断服务状态,比如一个饿得受不了的人,如果抢你前面,本来该你打饭的,可是你看到他这个样子,不忍心,那么你就被中断了一会,中断结束后,中断掉的任务才会被继续运行,同样的你才能够打饭;呵呵,这个比喻好像损了点。
在操作系统中,内核提供的基本服务就是任务切换,它实际上可以说是寄存器内容的切换。自然任务切换是需要时间的,CPU寄存器越多,负荷也就越大。
|