μC/OS-II认识

1.μC/OS-II 是一种简单、高效、源代码公开的实时嵌入式操作系统,被应用到各种嵌入式系统中。uC/OS-II 最多支持 256 个任务,其内核为占先式,并支持信号量、邮箱、消息队列等多种进程间通讯机制;同时用户可以根据需求对内核中的功能模块裁剪。鉴于uC/OS-II良好的扩展性和可移植性,因此将其移植到嵌入式处理器上, 对于提高产品的质量,减少开发周期和降低成本方面有着重要的意义。


      uC/OS-II实际上是一个实时操作系统内核,只包含了任务调度,任务管理,时间管理,内存管理和任务间的通信与同步等基本功能,没有提供输入/输出管理,文件系统及网络之类的额外服务。但由于uC/OS-II的可移植性开源性,用户可以自己添加所需的服务。uC/OS-II属于可剥夺型内核,既它总是执行处于就绪条件下优先级最高的任务。为了简化系统的设计,uC/OS-II规定所有任务的优先级必须不同,任务的优先级同时唯一的标识了任务。即使两个任务的重要性是相同的,也必须有优先级上的差异。这也意味着高优先级的任务在处理完必须进入等待或挂起状态,否则低优先级的任务永远也不可能执行。


   2. μC/OS-II中任务通信


应用程序中的各个任务,必须通过彼此之间的有效合作,才能完成一项大规模的工作。因为这些任务在运行时,经常需要互相无冲突地访问同一个共同资源,或者需要互相支持和依赖,甚至有时还要互相加以必要的制约,才能保证任务的顺利运行。因此,操作系统必须具有对任务的运行进行协调的能力,从而使任务之间可以无冲突,流畅地同步运行,而不导致灾难性的后果。


3. μC/OS-II中的任务


μC/OS-II的任务就是一个线程,就是一个用来解决用户问题的C语言函数和与之相关的一些数据结构而构成的一个实体。μC/OS-II的任务有两种:用户任务和系统任务。由应用程序设计者编写的任务,叫做用户任务;由系统提供的任务叫做系统任务。用户任务是为了解决应用问题而编写的;系统任务是为了应用程序来提供某种服务的。从程序代码上看,用户任务似乎就是一个C语言函数,但是这个函数不是一般的C语言函数,它就是一个任务。它不是被主函数或其他函数调用,主函数main( )只负责创建和启动他们,而由操作系统负责开调度他们。


4.任务的同步与通信


 


(1)  信号量              


   信号量是一类事件,使用信号量的最初目的,是为了共享资源设立一个表示该共享资源被占用情况的标志。这样,就可使任务在访问共享资源之前,先对这个标志进行查询,在了解资源被占用的情况之后,再来决定自己的行为。


(2)  消息邮箱                                     


在多任务操作系统中,常常需要在任务与任务之间通过传递一个数据(这种数据叫做“消息”)的方式来进行通信。为了达到这个目的,可以在内存中创建一个存储空间作为该数据的缓冲区。如果把这个缓冲区叫做消息缓冲区,那么在任务间传递数据(消息)的一个最简单的方法就是传递消息缓冲区的指针。因此,用来传递消息缓冲区指针的数据结构就叫做消息邮箱。


(3)  消息队列


上面谈到的消息邮箱不仅可用来传递一个消息,而且也可以定义一个指针数组。让数组的每个元素都存放一个消息缓冲区指针,那么任务就可通过传递这个指针数组的方法来传递多个消息了。这种可以传递多个消息的数据结构叫做消息队列。


5.μC/OS-II的中断与时钟


   中断是计算机系统处理异步事件的重要机制。当异步事件发生时,事件通常是通过硬件向CPU发生中断请求的,在一般情况下,CPU响应这个请求后会立即运行中断服务程序来处理该事件。


    为了处理任务延时,任务调度等一些与时间有关的事件,任何一个计算机系统都应该有一个系统时钟。与其他计算机系统一样,μC/OS-II的时钟是通过硬件定时器产生定时中断来实现的。

你可能感兴趣的:(μC/OS-II认识)