嵌入式实时操作系统ucosii课后答案

  • 格式:doc
  • 大小:44.00 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章

1.什么是操作系统?它应具备什么功能?

操作系统是控制其他程序运行,管理系统资源并为用户提供操作界面的系统软件的集合。 功能:

1.计算机硬件的封装和扩充;

2.计算机资源的管理,包括处理器管理、存储器存储空间管理、外部输入输出(I/O)设备管理、文件管理、网络和通信管理、提供用户接口。

2.简述嵌入式操作系统与普通操作系统的区别。

嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,简称嵌入式系统。嵌入式系统应具有的特点是:高可靠性;在恶劣的环境或突然断电的情况下,系统仍然能够正常工作;许多嵌入式应用要求实时性,这就要求嵌入式操作系统具有实时处理能力;嵌入式系统和具体应用有机地结合在一起,它的升级换代也是具体产品同步进行;嵌入式系统中的软件代码要求高质量、高可靠性,一般都固化在只读存储器中或闪存中,也就是说软件要求固态化存储,而不是存储在磁盘等载体中。

3.什么是实时系统?对实时系统有什么要求?

如果一个系统能及时响应外部事件的请求,并能在规定的时间内完成对事件的处理,这种系统称为实时系统。

对实时系统的两个基本要求:

1.实时系统的计算必须产生正确的结果,称为逻辑或功能正确。

2.实时系统的计算必须在预定的时间内完成,称为时间正确。

4.什么是可剥夺内核?

当一个进程正在被处理器所运行时,其他就绪进程可以按照事先规定的规定的规则,强行剥夺正在运行进程的处理器使用权,而使自己获得处理器使用权并得以运行。

5.计算:RM 等三种算法;实时进程的可调度性。

一个事件发生周期为T =200ms ,一般需要运行50ms 才完毕。试按RM 算法确定该进程的优先级别prio 。 答:如果取k=1,根据T=200ms=0.2S ,则

T k prio

1=

结果:prio=5。 假如有三个同时发生的周期型进程:进程1,进程2,进程3,周期分别为P1=70ms ,P2=80ms ,P3=30ms ,它们完成任务的时间分别为:C1=20ms ,C2=15ms ,C3=10ms 。试判断该进程是否为可调度的。

答:

807.0301080157020=++=ρ777

.0)12(3)12(3=-=-n n

不满足公式

(RM 算法)

要求,所以三个进程是不可调度的。

满足公式

(截止期优先算法或最小裕度算法)

要求,所以三个进程是可调度的。

第二章

1.一个应用程序为什么一定要使用空闲任务?

在多任务系统运行时,系统经常会在某个时间内无用户任务运行而处于空闲状态,为了使CPU 在此时有事可作,uC/OS —II 提供了空闲任务OSTaskIdle 。空闲任务是不能被软件删除的。

2.统计任务是必须使用的吗?简述它的功能。

每秒计算一次CPU 在单位时间内被使用的时间,并把计算结果以百分比的形式存放在变量OSCPUsage 中,以便应用程序通过访问它来了解CPU 的利用率。用户应用程序可根据实际需要来选择是否使用统计任务。

3.什么是任务的优先权?UC/OS-II 是用什么来描述任务的优先权的。

uC/OS-II 是按可剥夺型内核来设计的,为此,每一个任务都必须具有唯一的优先级别,用来表示该任务在抢夺处理器时所具有的优先权力,共有64个优先级别,用数字“0”-“63”表示,数字“0”所表示的优先级最高,通常将空闲任务和统计任务设为最低优先级别。

对于任务数较少的应用,为节省内存,可通过OS_CFG.H 中的OS_LOWEST_PRIO 赋值来确定系统的最大(<=64)用户数。

4.在uC/OS-II 中任务有哪5种状态?分别简述5个状态的特征。

睡眠状态:任务只是以代码的形式驻留在内存,还没有交给操作系统管理。

就绪状态:任务配备了任务控制块且在任务就绪表中登记,具备了任务运行的充分条件。

运行状态:处于就绪状态的任务获得了CPU 的使用权,任何时候只有一个任务处于运行。

等待状态:正在运行的任务,把CPU 的使用权让给其他任务。

中断服务状态:正在运行的任务一旦响应中断申请,就会中止运行而去执行中断服务程序。

5.任务控制块记录了任务的那些信息?

*OSTCBStkPtr

指向任务堆栈栈顶的指针; *OSTCBExtPtr

指向任务控制快扩展的指针; *OSTCBStkBottom 指向任务堆栈栈底的指针; OSTCBStkSize

任务堆栈的长度; OSTCBOpt

创建任务时的选择项; OSTCBId 任务 ID ;

*OSTCBNext

指向后一个任务控制快的指针; *OSTCBPrev 指向后一个任务控制快的指针;

*OSTCBEventPtr 指向事件控制快的指针;

)12(1-≤=∑=n n

i i i n P C ρ11≤=∑

=n

i i i P C ρ

*OSTCBMsg 传递给任务消息的指针;

OSTCBDelReq 请求删除任务时用到的标志;

OSTCBStat 任务的当前状态标志;

OSTCBDly 任务等待的时限(节拍数);

OSTCBPrio 任务的优先级别(0 == highest, 63 == lowest);

OSTCBX 用于快速访问就绪表的数据;

OSTCBY 用于快速访问就绪表的数据;

OSTCBBitX 用于快速访问就绪表的数据;

OSTCBBitY 用于快速访问就绪表的数据;

6.什么是空任务控制块链表?什么是任务控制块链表?

空任务块链表,其中所有任务控制块还没有分配给任务。空任务块链表是在应用程序调用函数OSInit()对UC/OS-II系统初始化时建立的。链表的元素一共有OS_MAX_TASKS+OS_N_SYS_TASKS个元素。

任务控制块链表,其中所有任务块已经分配给任务。任务控制块链表在应用程序调用函数OSTaskCreate()创建任务时建立的。

7.数组OSTCBTbl[]有什么用途?

专门用来以任务的优先级别为顺序在各个数组元素里存放指向各个任务控制块的指针,这样系统在访问一个任务的任务控制块时,就不必遍历任务控制块链表,从而加快对任务控制块的访问速度。

8.正在运行任务的任务控制块指针存放在哪个指针变量中?

OSTCBCur。

9.变量OSRdyGrp有什么用?

uC/OS-II定义了一个类型为INT8U的变量OSRdyGrp,使该变量的每一位都对应OSRdyTbl[ ]的一个任务组.如果某任务组中有任务就绪,则在变量OSRdyGrp里把该任务组所对应的位置为1,否则置为0 ,从而快速对任务就绪表OSRdyTbl[ ]查找。

10.计算:由任务就绪表OSRdyGrp和OSRdyTbl[]的内容通过查找OSUnMapTal[]表和公式

y = OSUnMapTal[OSRdyGrp];

x = OSUnMapTal[OSRdyTbl[y]];

prio = (y<<3) + x;

找出具有最高优先级别的就绪任务。

设OSRdyGrp的值为01101000B,即0x68,则查表y=OSUnMapTal[0x68]=3,它相应于OSRdyGrp第3位bit3,另设OSRdyTbl[3]=11100100B,即0xE4,则查表x=OSUnMapTal[0xE4]=2

最后:

Prio=(y<<3)+x=(3<<3)+2=26

即:

00000011<<3=00011000

00011000+0000010=00011010B=26

第三章

1.简述UC/OS-II的中断响应过程。

中断响应过程:系统接收到中断请求后,如果这是CPU处于中断允许状态,系统会中止正在运行的当