操纵系统题库.docx
- 文档编号:23505703
- 上传时间:2023-05-17
- 格式:DOCX
- 页数:11
- 大小:2.96MB
操纵系统题库.docx
《操纵系统题库.docx》由会员分享,可在线阅读,更多相关《操纵系统题库.docx(11页珍藏版)》请在冰豆网上搜索。
操纵系统题库
第1章嵌入式实时操作系统的基本概念
1、什么是嵌入式系统?
(了解)
人们把嵌入到对象体系中,为实现对象体系智能化控制的计算机系统,称作嵌入式计算机系统,简称为嵌入式系统。
2、什么是嵌入式操作系统?
运行在嵌入式硬件平台上,对整个系统及其所操作的部件、装置等资源进行统一协调、指挥和控制的系统软件就叫做嵌入式操作系统。
3、实时操作系统需要满足的条件有哪些?
实时操作系统应满足以下三个条件:
(1)实时操作系统必须是多任务系统。
(2)任务的切换时间应与系统中的任务数无关。
(3)中断延迟的时间可预知并尽可能短。
4、一个用C语言编写的任务的结构(P11例1-1,重点掌握):
voidmytask(void*pdata)
{
for(;;)
{
用户编写的代码;
}
}
第2章预备知识
1、取址运算符与取值运算符
“取址”运算符“&”,“取值”运算符“*”。
2、函数指针
函数名就是该函数的指针(重点掌握)。
第3章uC/OS-II中的任务
1、任务的组成
2、任务有哪两种
用户任务、系统任务
3、任务的5种状态(重点)(作简单描述即可)
(1)睡眠状态:
任务在没有被配备任务控制块或被剥夺了任务控制块时的状态叫做任务的睡眠状态;
(2)就绪状态:
如果系统为任务配备了任务控制块且在任务就绪表中进行了就绪
登记,则任务就具备了运行的充分条件,这时任务的状态叫做就绪状态;
(3)运行状态:
处于就绪状态的任务如果经调度器判断获得了CPU的使用权,则任务就进入运行状态。
任何时刻只能有一个任务处于运行状态,就绪的任务只有当所有优先级高于本任务的任务都转为等待状态,才能进入运行状态;
(4)等待状态:
正在运行的任务,需要等待一段时间或需要等待一个事件发生再运行时,该任务就会把CPU的使用权让给其他任务而使任务进入等待状态;
(5)中断服务状态:
一个正在运行的任务一旦响应中断申请就会中止运行而去执行中断服务程序,这时任务的状态叫做中断服务状态。
4、P61例3-1一个用C语言编写的任务
5、空闲任务(该任务必须用)
为了使CPU在没有用户任务可执行时有事可做,uC/OS-II提供了一个叫做空闲任务OSTaskIdle()的系统任务。
6、统计任务(该任务可用可不用)
统计任务OSTaskStart()。
7、任务的优先权与优先级
最多可以在uC/OS-II中创建64个任务,所以任务的优先级别最多有64级,每个级别都用一个整数数字来表示,即0、1、2、…、63;数字越小优先级别越高。
8、任务堆栈
所谓堆栈,就是在存储器中按数据“后进先出(LIFO)”的原则组织的连续存储空间。
9、任务堆栈的创建
#defineTask_STK_SIZE512//定义堆栈的长度为(1024字节)
OS_STK[Task_STK_SIZE];//定义一个数组来作为任务堆栈
10、堆栈的增长方向
堆栈的增长方向有两种:
向下的(如[MyTaskStKN-1])、向上的。
11、任务控制块结构(给出结构体,说明其成员及作用)
12、P70了解空任务链表和任务控制块链表
13、P73任务就绪表结构
14、任务调度
调度器的主要工作:
(1)在任务就绪表中查找具有最高优先级别的就绪任务;
(2)实现任务的切换。
实现函数
(1)任务级的调度器由函数OSSched()来实现;
(2)中断级的调度器由函数OSIntExt()来实现。
15、用函数OSTaskCreate()创建任务
16、挂起任务(了解)
挂起任务函数OSTaskSuspend()
17、恢复任务(了解)
恢复任务函数OSTaskResume()
18、任务的删除
(过程重要)先申请再删除自己。
19、uC/OS-II的初始化
初始化函数OSInit()
20、uC/OS-II的启动
启动函数OSStart()
课后题
1、什么是可剥夺型内核?
2、一个应用程序为什么一定要使用空闲任务?
3、统计任务是必须使用的吗?
4、什么叫做任务的优先权?
uC/OS-II是用什么来描述任务的优先权的?
5、在uC/OS-II中任务有哪5种状态?
6、任务控制块记录了任务的哪些信息?
7、什么是空任务控制块链表?
什么是任务控制块链表?
8、数组OSTCBTbl[]有什么用途?
9、正在运行任务的任务控制块指针存放在哪个指针变量中?
10、变量OSRayGrp有什么用?
11、编写一个有3个任务的应用程序,每个任务均会在显示器上显示一个字符,并让3个任务具有不同的等待时间,观察应用程序运行中任务被调度的情况。
第4章uC/OS-II的中断和时钟
1、uC/OS-II中断响应过程(可了解P110图4-1)
中断->若有高优先级则运行高级别的任务->回到原处
2、临界段的基本概念
不希望被中断的代码段叫做临界段,处在关中断和开中断之间的代码段就是临界段。
3、关中断与开中断
OS_ENTER_CRITICAL()和OS_EXIT_CRITICAL()这两个宏封装了与系统硬件相关的关中断和开中断指令。
4、uC/OS-II的时钟(P115掌握时钟节拍)
最小的时钟单位就是两次中断之间相间隔的时间,这个最小时钟单位叫做时钟节拍(TimeTick)。
5、钩子函数
钩子函数OSTimeTickHook()
6、任务的延时(重要)
OSTimeDly()或OSTimeDlyHMSM()
课后题
1、全局变量OSIntNesting的作用是什么?
(记录中断嵌套的次数,P110图4-1下面)
2、uC/OS-II的中断服务程序何时返回被中断的任务?
何时不返回被中断的任务?
3、说明延时函数OSTimeDly()与OSTimeDlyHMSM()的区别。
第5章任务的同步与通信(重点)
1、事件
信号量、邮箱(消息邮箱)和消息队列。
2、信号量
互斥型信号量、计数型信号量。
3、消息邮箱
在多任务操作系统中,常常需要在任务与任务之间通过传递一个数据(这种数据叫做“消息”)的方式来进行通信。
为了达到这个目的,可以在内存中创建一个存储空间作为该数据的缓冲区。
如果把这个缓冲区叫做消息缓冲区,那么在任务间传递数据(消息)的一个最简单的方法就是传递消息缓冲区的指针。
因此,用来传递消息缓冲区指针的数据结构就叫做消息邮箱。
4、消息队列
让数组的每个元素都存放一个消息缓冲区指针,那么任务就可通过传递这个指针数组指针的方法来传递多个消息了。
这种可以传递多个消息的数据结构就叫做消息队列。
5、P145-P146等待任务控制链表(知识点多,需具体掌握)
等待任务表OSEventTbl[]与变量OSEventGrp[]
6、任务优先级的反转现象(其解释及如何防范此现象,可参考P161图5-15)(必考)
解释:
在可剥夺型内核中,当任务以独占方式使用共享资源时,会出现低优先级任务先于高优先级任务而被运行的现象,这就是所谓的任务优先级反转;
防范:
用互斥型信号量,一旦运行提高优先级。
7、P167互斥型信号量
高8位用来存放为了避免出现优先级反转现象而要提升的优先级别prio。
课后题
1、叙述信号量的工作过程。
2、什么叫优先级反转现象?
这种现象会在什么情况下发生?
有什么危害?
3、互斥型信号量是如何防止优先级反转现象出现的?
4、什么叫消息邮箱?
5、使用消息邮箱实现任务之间的通信有什么好处?
6、什么是消息队列?
7、想一想,在应用程序中消息队列都可以做些什么工作?
第6章信号量集
1、基本概念
在程序中一个任务的操作能否实施,常常需要由多个信号量的逻辑运算结果作为前提条件。
为了处理此类问题,uC/OS-II提供了可以处理多个信号量的信号量集。
2、信号量集的功能分成哪两部分
标志组和等待任务链表
3、信号量集的标志组的主要组成部分
一个叫做信号列表的二进制书OSFlagFlags。
OSFlagFlags其实就是一个位图,其长度可在系统配置文件OS_CFG.H中来定制,系统默认定义为16位。
4、等待任务必须完成的两个操作
(1)在多个信号量的输入中挑选等待任务感兴趣的输入;
(2)把挑选出来的输入按照等待任务所希望的逻辑来运算,以得出输出。
5、示例代码
6、查询信号量集的状态
调用函数OSFlagQuery()可以查询一个信号量集的状态;
作用:
使任务可根据信号的不同状态实现不同的功能。
第7章动态内存管理
1、可动态分配内存的划分
内存块、内存分区
2、内存块
uC/OS-II以若干个数据单元组成一个内存块,内存块的大小可由用户定制。
在uC/OS-II中,内存块是系统向应用程序提供动态内存的最小单位。
3、内存分区
使用内存块来进行动态内存的管理显得过于零碎,因此uC/OS-II将多个内存块组成一个内存分区,从而把内存分区作为管理的基本单位。
4、内存控制块OS_MEM的定义
课后题
1、什么叫内存分区?
什么叫内存块?
内存分区与内存块之间有什么关系?
2、在同一个内存分区中内存块是按什么方式组织起来的?
通过指针
3、什么叫内存控制块?
内存控制块中都记录了一些什么信息?
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 操纵 系统 题库