下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、ucos-ii 操作系统复习大纲填空题1 uC/OS-II 是一个简洁、易用的 基于优先级的嵌入式 【 抢占式 】 多任务 实时内核。2 任务是一个无返回的无穷循环。 uc/os-ii 总是运行进入就绪状态的【 最高优先级 】的任务 。3 因为 uc/os-ii 总是运行进入就绪状态的最高优先级的任务。 所以, 确定哪个任务优先级最高,下面该哪个任务运行,这个工作就是由 【 调度器 ( scheduler ) 】 来完成的。4 .【任务级】的调度是由函数 OSSched()完成的,而【中断级】的调度是 由 函 数 OSIntExt() 完 成 。 对于 OSSched() , 它 内 部 调
2、用 的 是【 OS_TASK_SW】()完 成 实 际 的 调 度 ; OSIntExt() 内 部 调 用 的 是【 OSCtxSw() 】实现调度。5 任务切换其实很简单,由如下2 步完成:( 1)将被挂起任务的处理器寄存器推入自己的【 任务堆栈 】 。( 2)然后将进入就绪状态的最高优先级的任务的寄存器值从堆栈中恢复到【寄存器 】中。6 任务的 5 种状态。【睡眠态(task dormat)】:任务驻留于程序空间(rom或ram)中,暂时没交 给 ucos-ii 处理。【就绪态( task ready )】:任务一旦建立,这个任务就进入了就绪态。【运行态( task running )】
3、:调用 OSStart ()可以启动多任务。 OSStart () 函数只能调用一次,一旦调用,系统将运行进入就绪态并且优先级最高的任务。【等待状态(task waiting ):正在运行的任务,通过延迟函数或pend (挂起)相关函数后,将进入等待状态。【中断状态( ISR running )】:正在运行的任务是可以被中断的,除非该任务将中断关闭或者ucos-ii 将中断关闭。7.【不可剥夺型】内核要求每个任务自我放弃CPU勺所有权。不可剥夺型调度法也称作合作型多任务,各个任务彼此合作共享一个CPU。8当系统响应时间很重要时,要使用【 可剥夺型 】内核。最高优先级的任务一旦就绪,总能得到CP
4、U的控制权。9使用可剥夺型内核时,应用程序不应直接使用不可重入型函数。调用不可重入型函数时,要满足互斥条件,这一点可以用【 互斥型信号量 】来实现。10 【 可重入型 】函数可以被一个以上的任务调用,而不必担心数据的破坏。11 可重入型函数任何时候都可以被中断, 一段时间以后又可以运行, 而相应数据不会丢失。可重入型函数或者只使用【局部变量】,即变量保存在CPUS存器中或堆栈中。如果使用全局变量,则要对全局变量予以【 保护 】。12每个任务都有其优先级。任务越重要,赋予的优先级应【越高 】。13 .科C/OS-n初始化是通过调用系统函数【 OSIint()】实现的,完成 c/osn所有的变 量
5、和数据结构的初始化。14 .多任务的启动是用户通过调用【 OSStart()实现的。然而,启动 科C/OS n之前,用户至少要建立一个应用【任务】 。15 . nC/OS-II的参数配置文件名为o16 删除任务 , 是说任务将返回并处于【休眠状态】,并不是说任务的代码被删除了,只是任务的代码不再被 仙/OS-II调用。17 . nC/OSR要求用户提供【定时中断】来实现延时与超时控制等功能。18定时中断也叫做【时钟节拍】,它应该每秒发生10 至 100 次。19. 时钟节拍的实际频率是由用户的应用程序决定的。 时钟节拍的频率越高, 系 统的负荷就【越重】。20. nC/OS 中的信号量由两部分
6、组成:一个是信号量的【计数值】,它是一个16 位的无符号整数( 0 到 65,535 之间) ;另一个是由等待该信号量的任务组成的【等待任务表】。用户要在中将OS_SEM_EN关量常数置成【1】,这样nC/O$ 才能支持信号量。OSTaskCtr 】。21. nC/OSI中表示当前已经创建的任务数全局变量名为:【OSRunning 】。21 . nC/OS中表示当前内核运行的标记全局变量名为:【22 .在使用OSTaskCreate创建任务时,若需要TaskData作伪参数传递给任务Task, 并从任务 Task 中获得传入的字符参数值,请在下面【 】填上合适的代 码。char TaskDat
7、a= A ;OSTaskCreate(Task, 【 (void *)& TaskData 】 , &TaskStk0TASK_STK_SIZE - 1, 1);void Task (void *pdata)char value =【 *(char *)pdata 】 ;for (;) OSSemPend(RandomSem, 0, &err);y = (int) (*(char *)pdata - 'A');OSSemPost(RandomSem);PC_DispChar(10, 25, value, DISP_FGND_WHITE + DISP_BG
8、ND_BLUE);OSTimeDly(1);23 .在nC/OS 在任务Taskl中使用邮箱函数OSMboxPost()发送字符;而在Task2中接收OSMboxPost()字符,请在下面【】填上合适的代码。void Task1 (void *data) char txmsg;INT8U err;txmsg = 'A'for (;) OSMboxPost(TxMbox, 【 (void *)&txmsg 】 ); /* Send message to Task2*/OSMboxPend(AckMbox, 0, &err);txmsg+;if (txmsg = &
9、#39;Z') txmsg = 'A' void Task5 (void *data) char *rxmsg;INT8U err;data = data;for (;) rxmsg =【 (char *) 】 OSMboxPend(TxMbox, 0, &err);PC_DispChar(70, 18, *rxmsg, DISP_FGND_YELLO+WDISP_BGND_BLUE);OSMboxPost(AckMbox, (void *)1);24 .在Taskl中使用消息队列OSQPen d)函数接收消息“ Hello World!”,而 在Task2中使
10、用消息队列OSQPos t()函数发送消息“ Hello World!”,请在下 面【 】填上合适的代码.void Task1 (void *pdata)char *msg;INT8U err;pdata = pdata;for (;) msg =【(char *) 】 OSQPend(MsgQueue, 0, &err);PC_DispStr(70, 13, msg, DISP_FGND_YELLOW + DISP_BGND_BLUE); OSTimeDlyHMSM(0, 0, 0, 100);void Task2 (void *pdata)char msg20;pdata = pd
11、ata;strcpy(&msg0, " Hello World!");for (;) OSQPost(MsgQueue, 【 (void *) 】 &msg0);OSTimeDlyHMSM(0, 0, 0, 500);名词解释1 代码的临界段代码的临界段也称为临界区,指处理时不可分割的代码。2资源任何为任务所占用的实体都可称为资源。资源可以是输入输出设备;资源也可以是一个变量,一个结构或一个数组等。3共享资源可以被一个以上任务使用的资源叫做共享资源。4任务一个任务,也称作一个线程,是一个简单的程序,该程序可以认为CPUI全只属该程序自己。典型地、每个任务都是
12、一个无限的循环。5 任务切换指Context Switch ,其含义是CPUS存器内容切换。当多任务内核决定运行 另外的任务时,它保存正在运行任务的当前状态(Context),即CPUS存器中的全部内容。6 内核多任务系统中,内核负责管理各个任务,或者说为每个任务分配CPU寸问,并且负责任务之间的通讯。内核提供的基本服务是任务切换。7调度(Scheduler )内核的主要职责之一,就是要决定该轮到哪个任务运行了。多数实时内核是基于优先级调度法的。8可剥夺型内核最高优先级的任务一旦就绪,总能得到 CPU的控制权。当一个运行着的任务 使一个比它优先级高的任务进入了就绪态,当前任务的CPUS用权就被
13、剥夺了,或者说被挂起了,那个高优先级的任务立刻得到了 CPU勺控制权。如果是中断服 务子程序使一个高优先级的任务进入就绪态, 中断完成时, 中断了的任务被挂起, 优先级高的那个任务开始运行。三简答题1 .举例说明NCOS可移植型数据类型的定义方式答:因为不同的微处理器有不同的字长,叱 C/OS的移植文件包括很多类型 定义以确保可移植性。C COS不使用C语言中的short,int,long 等数据类型 的定义,因为它们与处理器类型有关,隐含着不可移植性。仙 C/OSI代之以移 植性强的整数数据类型, 这样, 既直观又可移植( 该 数据类型不依赖于编译) , 举例如下 :typedef unsi
14、gned char BOOLEAN;typedef unsigned char INT8U;typedef signed char INT8S;typedef unsigned int INT16U;typedef signed int INT16S;typedef unsigned long INT32U;typedef signed long INT32S;2 . N COS如何定义全局变量答:众所周知,全局变量应该是得到内存分配且可以被其他模块通过C语言中 extern 关键字调用的变量。因此,必须在.C 和 .H 文件中定义。这种重复的定义很容易导致错误。N COS采用的方法只需用在头
15、文件中定义一次。uC/ 头文件中包括以下定义全局宏定义:#ifdef OS_GLOBALS#define OS_EXT#else#define OS_EXT extern#endifOS_EXT INT32U OSIdleCtr;同时,有中以下定义:#define OS_GLOBALS#include “”当编译器处理时,它使得头文件变成如下所示,因为OS_EX俄设置为空。INT32U OSIdleCtr;这样编译器就会将这些全局变量分配在内存中。当编译器处理其他 .C 文件时,头文件变成了如下的样子,因为OS_GLOBAL有定义,所以OSEXTM定义为 extern 。extern INT3
16、2U OSIdleCtr;在这种情况下,不产生内存分配,而任何 .C 文件都可以使用这些变量。这样的就只需在.H 文件中定义一次就可以了。3 . OS_ENTER_CRITICAL()口 OS_EXIT_CRITICAL()的含义及作用 答:OS_ENTER_CRITICAL()":中环;OS_EXIT_CRITICAL():开中断。关中断和开中断是为了保护临界段代码。用户的应用代码可以使用这两个宏来开中断和关中断。很明显,关中断会影响中断延迟,所以要特别小心。用户还可以用信号量来保护临界段代码。4 .基于PC的服务中如何测量PC_DisplayChar()的执行时间 答:测量 PC
17、_DisplayChar() 的执行时间的代码如下:INT16U time;描述利用 仙C/OS宏调用关中断和开中断处理共享数据的示意性代码程序。 答:OS_ENTER_CRITICAL();/* 在这里处理共享数据*/OS_EXIT_CRITICAL();8. 信号量的典型应用包括哪些答:信号量 (Semaphores) 是一种约定机制,在多任务内核中的典型应用包括:( 1) 控制共享资源的使用权 ( 满足互斥条件) ;( 2) 标志某事件的发生( 3) 使两个任务的行为同步9对信号量只能实施哪三种操作答:一般地说,对信号量只能实施三种操作:(1) 1) 初始化 (INITIALIZE) ,
18、也可称作建立(CREATE;)(2) 等信号(WAIT)也可称彳挂起(PEND);(3) 给信号(SIGNAL)或发信号(POST)。10 .给出nC/OS R中如何用信号量处理共享数据的示意代码 答:通过获得信号量处理共享数据的示意代码如下:OS_EVENT *SharedDataSem;void Function (void) INT8U err;OSSemPend(SharedDataSem, 0, &err);/* 共享数据的处理在此进行, ( 中断是开着的 )*/ OSSemPost(SharedDataSem);11 .给出初始化和启动 叱c/os n的示意代码。答:voi
19、d main (void) OSInit(); /*初始化 uC/OS-II */.通过调用 OSTaskCreate() 或 OSTaskCreateExt() 创建至少一个任务;.OSStart(); /* 开始多任务调度!OSStart() 永远不会返回 */12 描述建立任务OSTaskCreate() 的函数原型。答:建立任务 OSTaskCreate() 的函数原型为:INT8U OSTaskCreate (void (*task)(void *pd), void *pdata, OS_STK*ptos, INT8U prio)其中 ,task: 任务代码的指针;pdata: 当任
20、务开始执行时传递给任务的参数的指针 ;ptos: 分配给任务的堆栈的栈顶指针 ;prio: 分配给任务的优先级。13任务可以是一个无限的循环,也可以是在一次执行完毕后被删除掉。请给出示意代码结构。答:n c/osm描述的任务示意代码必须是以下两种结构之一:void YourTask (void *pdata)for (;) /* 用户代码 */调用c c/osu的服务例程之一:OSMboxPend();oSQPend();oSSemPend();oSTaskDel(oS_PRIo_SELF);oSTaskSuspend(oS_PRIo_SELF);oSTimeDly();oSTimeDlyHM
21、SM();/* 用户代码 */或void YourTask (void *pdata)/* 用户代码 */oSTaskDel(oS_PRIo_SELF);14. nC/OS II任务管理提供哪些服务答:C c/os- R任务管理提供的服务包括:( 1)建立任务:OSTaskcreate() 或 OSTaskcreateExt() ;( 2)删除任务:osTaskDel() ;( 3)请求删除任务:osTaskDelReq();( 4)改变任务的优先级:osTaskchangePrio() ;( 5)挂起任务:osTasksuspend();( 6)恢复任务:osTaskResume(;)( 7
22、)获得有关任务的信息: osTaskQuery()。15. C c/os n时间任务管理提供哪些服务答:C C/OS- II时间任务管理提供的服务包括:( 1) 任务延时函数: osTimeDly()( 2) 按时分秒延时函数: osTimeDlyHMsM()( 3) 让处在延时期的任务结束延时: OSTimeDlyResume()( 4) 设置系统时间:OSTimeGet()( 5) 获得系统时间:OSTimeSet()16. 世C/OS- II提供的数据共享和任务通讯的方法包括哪些答:c C/OS- II提供的数据共享和任务通讯的方法包括五种方法:(1)利用宏 OS_ENTER_CRITI
23、CA OS_EXIT_CRITICAL(来关闭中断和打开 中断。(2)禾I用函数 OSSchedLock()和OSSchekUnlock()对仙C/OS 中的任务调度 函数上锁和开锁。(3) 信号量。(4) 邮箱。(5) 消息队列。17. 对于事件控制块进行的一些通用包括哪些操作答: 对于事件控制块进行的一些通用操作包括:( 1) 初始化一个事件控制块: OSEventWaitListInit();( 2) 使一个任务进入就绪态: OSEventTaskRdy();( 3) 使一个任务进入等待该事件的状态: OSEventTaskWait() ;( 4) 因为等待超时而使一个任务进入就绪态:O
24、SEventTO()。18. c C/OS H信号量提供哪些服务答:c C/OS- R信号量提供的服务包括:( 1) 建立一个信号量:OSSemCreate();( 2) 等待一个信号量:OSSemPend(;)( 3) 送一个信号量: OSSemPost();( 4) 等待地请求一个信号量:OSSemAccept();( 5) 询一个信号量的当前状态:OSSemQuery(。)19. c c/os n邮箱提供哪些服务答:N C/OS- n邮箱提供的服务包括:( 1)建立一个邮箱:OSMboxCreate();( 2)等待一个邮箱中的消息:OSMboxPend(;)( 3)发送一个消息到邮箱中
25、:OSMboxPost();( 4)无等待地从邮箱中得到一个消息:OSMboxAccept();( 5)查询一个邮箱的状态: OSMboxQuery()20. nC/OS R消息队列提供哪些服务答:c C/OS- R消息队列提供的服务包括:( 1)建立一个消息队列: OSQCreate();( 2)等待一个消息队列中的消息:OSQPend(;)( 3)向消息队列发送一个消息(FIFO) : OSQPost();( 4)向消息队列发送一个消息(LIFO) : OSQPostFront() ;( 5)无等待地从一个消息队列中取得消息:OSQAccept();(6)清空一个消息队列:OSQFlush
26、();( 7)查询一个消息队列的状态:OSQQuery。21. c c/os n内存管理提供哪些服务答:c c/os- n内存管理提供的服务包括:(1) 建立一个内存分区:OSMemCreate()(2) 分配一个内存块:OSMemGet。(3) 释放一个内存块:OSMemPut()(4) 查询一个内存分区的状态: OSMemQuery()22.移植pC/OSlI时,要使pC/OSlI正常运行,处理器必须满足哪些基本要求 答:要使NC/OSII正常运行,处理器必须满足以下要求:(1)处理器的C编译器能产生可重入代码。(2)用C语言就可以打开和关闭中断。(3)处理器支持中断,并且能产生定时中断(
27、通常在10至100Hz之间)。(4)处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。(5)处理器有将堆栈指针和其它 CPUS存器读出和存储到堆栈或内存中的指 令。四.论述题1.论述N C/OS n控制下的任务状态转换图答:c C/OS II控制下的任务状态转换图如下图所示-=NH&4=W&二#01 <pirf fall。彳 r*n«r 晅-“I 3 IlfWlcta用f艮百口 I”OSTj由 hM :, i ;k .H二汕遍Mii'.弊I尸 TliMhI'Ihuit l l I /k SiTnrts在任一给定的时刻,任务的状态一定是在这
28、五种状态之一。(1)睡眠态(DORMANT指任务驻留在程序空间之中, 还没有交给nC/OSH 管理。一个任务可以通过调用 OSTaskDel()返回到睡眠态,或通过调用该 函数让另一个任务进入睡眠态。(2)就绪态(READY):当任务一旦建立,这个任务就进入就绪态准备运行。把 任务交给 N C/OS- n是通过调用下述两个函数之一:OSTaskCreate()或OSTaskCreateExt()。(3) 运行态 (RUN): 调用 OSStart() 可以启动多任务。 OSStart() 函数运行进入 就绪态的优先级最高的任务。(4) 等待状态 (WAITING): 正在运行的任务可以通过调用
29、两个函数之一将自身延迟一段时间,这两个函数是 OSTimeDly()或OSTimeDlyHMSM()这个 任务于是进入等待状态,等待这段时间过去,下一个优先级最高的、并进入了就绪态的任务立刻被赋予了 CPU的控制权。正在运行的任务期待 某一事件的发生时也要等待,手段是调用以下3个函数之 一: OSSemPend() OSMboxPend()或OSQPend()调用后任务进入了等待状 态( WAITING) 。(5) 中断状态 (ISR): 正在运行的任务是可以被中断的, 除非该任务将中断关了,或者nC/OSR将中断关了。被中断了的任务就进入了中断服务态 ( ISR) 。2 .论述叱C/OS I
30、I的核心数据结构任务控制块(OS_TCBs) 答:任务控制块(OS_TCBs足以c/os n的核心数据结构,当任务的CPUS用权被 剥夺时,N C/OS 11论它来保存该任务的状态。当任务重新得到CPU®用权时,任务控制块能确保任务从当时被中断的那一点丝毫不差地继续执行。OS_TCB金部驻留在RAM中。一旦任务建立了,任务控制块 OS_TCBS等被赋值。C C/OSI 任务控制块数据结构定义如下:typedef struct os_tcb OS_STK *OSTCBStkPtr;#if OS_TASK_CREATE_EXT_ENvoid *OSTCBExtPtr;OS_STK *OS
31、TCBStkBottom;INT32U OSTCBStkSize;INT16UOSTCBOpt;INT16UOSTCBId;#endifstruct os_tcb *OSTCBNext;struct os_tcb *OSTCBPrev;#if (OS_Q_EN && (OS_MAX_QS >= 2) | OS_MBOX_EN | OS_SEM_EN OS_EVENT *OSTCBEventPtr;#endif#if (OS_Q_EN && (OS_MAX_QS >= 2) | OS_MBOX_ENvoid *OSTCBMsg;#endifINT16U
32、OSTCBDly;INT8UOSTCBStat;INT8UOSTCBPrio;INT8UOSTCBX;INT8UOSTCBY;INT8UOSTCBBitX;INT8U OSTCBBitY;#if OS_TASK_DEL_ENBOOLEAN OSTCBDelReq;#endif OS_TCB;其中:OSTCBStkPtr是指向当前任务栈顶的指针。OSTCBExtPtr 指向用户定义的任务控制块扩展。OSTCBStkBottoml指向任务栈底的指针。OSTCBStkSize存有栈中可容纳的指针元数目而不是用字节 (Byte)表示的栈 容量总数。OSTCBIM于存储任务的识别码。OSTCBNext口 OSTCBPreVW于任务控制块 OS_TCBS勺双重链接。OSTCB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 施工质量检测与评估培训方案
- 钢结构环境适应性研究方案
- 人员招聘与选拔管理方案
- 2026年甘肃省兰州市事业单位招聘预计5月份考试考试备考题库及答案解析
- 2026广东汕尾市海丰县招聘中小学、幼儿园教师100人(编制)考试备考题库及答案解析
- 核电运行研究(上海)有限公司2026届春季校园招聘笔试参考题库及答案解析
- 2026国新控股(四川)有限公司相关岗位招聘笔试模拟试题及答案解析
- 地质勘察与分析
- 2026广西南宁经济技术开发区光明路学校春季学期编外教师招聘1人笔试备考题库及答案解析
- 2026上半年北京事业单位统考通州区招聘96人笔试参考题库及答案解析
- 中考语文二轮专题复习:《分析人物形象篇》课件
- 县村(社区)“两委”换届选举工作责任清单范文
- 临床静脉导管维护专家共识
- 2024-2025学年全国中学生天文知识竞赛考试题库(含答案)
- 新版RCPMIS信息报送
- DL∕T 1683-2017 1000MW等级超超临界机组运行导则
- DL-T-710-2018水轮机运行规程
- 境内汇款申请书模板
- 在线网课学习知道《秀场内外-走进服装表演艺术(武汉纺织大学)》单元测试考核答案
- (正式版)JBT 3300-2024 平衡重式叉车 整机试验方法
- 加利福尼亚批判性思维技能测试后测试卷班附有答案
评论
0/150
提交评论