前言
上篇文章我们主要介绍了实时操作系统的基本概念,相关内容可翻看前片博客: 实时操作系统简介
接下来我们来分析一下实时操作系统的内核结构。
一:代码临界段
首先我们先来了解下代码临界段的概念,代码临界段,也称之为代码临界区,指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入,为了保证临界段的顺利执行,在进入临界段之前我们要关中断,在临界段代码执行完毕后我们在将中断打开。
微处理器一般都有关中断/开中断指令,μC/OS-Ⅱ中的这两个宏调用分别是:OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()。因为这两个宏的定义取决于所用的微处理器,故在文件 OS_CPU.H 中可以找到相应宏定义。每种微处理器都有自己的 OS_CPU.H 文件。
二:任务
μC/OS-Ⅱ可以管理多达 64 个任务,但目前版本的μC/OS-Ⅱ有两个任务已经被系统占用了。作者保留了优先级为 0、1、2、3、OS_LOWEST_PRIO-3、OS_LOWEST_PRI0-2,OS_LOWEST_PRI0-1 以及 OS_LOWEST_PRI0 这 8 个任务以被将来使用。OS_LOWEST_PRI0 是作为定义的常数在 OS_CFG.H 文件中用定义常数语句#define constant 定义的。因此用户可以有多达 56 个应用任务。必须给每个任务赋以不同的优先级,优先级可以从 0 到OS_LOWEST_PR10-2。优先级号越低,任务的优先级越高。μC/OS-Ⅱ总是运行进入就绪态的优先级最高的任务。目前版本的μC/OS-Ⅱ中,任务的优先级号就是任务编号(ID)。优先级号(或任务的 ID 号)也被一些内核服务函数调用,如改变优先级函数OSTaskChangePrio(),以及任务删除函OSTaskDel()。
为了使μC/OS-Ⅱ能管理用户任务,用户必须在建立一个任务的时候,将任务的起始地址与其它参数一起传给下面两个函数中的一个:OSTastCreat 或 OSTaskCreatExt()。OSTaskCreateExt()是 OSTaskCreate()的扩展,扩展了一些附加的功能。这个后面我们再做详细介绍
三:任务状态
ucos2是按照只有一个CPU来设计的,在任何时刻都只有一个任务在占用CPU,其他的任务只能处于其他的状态。ucos2设计了5中不同的任务状态,如下所示
-
睡眠状态:任务只是以代码的形式驻留在程序空间(ROM或RAM),还没有交给操作系统管理时的情况叫做睡眠状态。简单地说,任务在没有被配备任务控制块或被剥夺了任务控制块时的状态叫做任务的睡眠状态

最低0.47元/天 解锁文章
1628

被折叠的 条评论
为什么被折叠?



