-
存储设备维护手册 - EMC DataDomain 2500 内核结构
资源介绍
第3章 内核结构
本章给出μC/OS-Ⅱ的主要结构概貌。读者将学习以下一些内容;
l μC/OS-Ⅱ是怎样处理临界段代码的;
l 什么是任务,怎样把用户的任务交给μC/OS-Ⅱ;
l 任务是怎样调度的;
l 应用程序 CPU的利用率是多少,μC/OS-Ⅱ是怎样知道的;
l 怎样写中断服务子程序;
l 什么是时钟节拍,μC/OS-Ⅱ是怎样处理时钟节拍的;
l μC/OS-Ⅱ是怎样初始化的,以及
l 怎样启动多任务;
本章还描述以下函数,这些服务于应用程序:
l OS_ENTER_CRITICAL() 和 OS_EXIT_CRITICAL(),
l OSInit(),
l OSStart(),
l OSIntEnter() 和 OSIntExit(),
l OSSchedLock() 和 OSSchedUnlock(), 以及
l OSVersion().
3.0 临界段(Critical Sections)
和其它内核一样,μC/OS-Ⅱ为了处理临界段代码需要关中断,处理完毕后再开中断。
这使得μC/OS-Ⅱ能够避免同时有其它任务或中断服务进入临界段代码。关中断的时间是实
时内核开发商应提供的最重要的指标之一,因为这个指标影响用户系统对实时事件的响应
性。μC/OS-Ⅱ努力使关中断时间降至最短,但就使用μC/OS-Ⅱ而言,关中断的时间很大程
度上取决于微处理器的架构以及编译器所生成的代码质量。
微处理器一般都有关中断/开中断指令,用户使用的 C语言编译器必须有某种机制能够
在 C中直接实现关中断/开中断地操作。某些 C编译器允许在用户的 C源代码中插入汇编语
言的语句。这使得插入微处理器指令来关中断/开中断很容易实现。而有的编译器把从 C语
言中关中断/开中断放在语言的扩展部分。μC/OS-Ⅱ定义两个宏(macros)来关中断和开中
断,以便避开不同 C编译器厂商选择不同的方法来处理关中断和开中断。μC/OS-Ⅱ中的这
两个宏调用分别是:OS_ENTER_CRITICAL()和 OS_EXIT_CRITICAL()。因为这两个宏的定义取
决于所用的微处理器,故在文件 OS_CPU.H中可以找到相应宏定义。每种微处理器都有自己
的 OS_CPU.H文件。
3.1 任务
一个任务通常是一个无限的循环[L3.1(2)],如程序清单 3.1所示。一个任务看起来像
其它 C的函数一样,有函数返回类型,有形式参数变量,但是任务是绝不会返回的。故返回
参数必须定义成 void[L3.1(1)]。