1、嵌入式系统设计师-28 及答案解析(总分:30.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题 1 至问题 3。 说明 在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间同步与互斥的有效方法。下面是信号量应用实例。 下图所示代码是在 C/OS-II 操作系统上运行的一个应用的主函数。该函数创建了任务 Task1 和 Task2,其中 Task1 实现从键盘读入一个字符的功能,Task2 将该字符输出到屏幕,它们使用信号量和一个公共
2、变量 buffer 来传递该字符。 主函数、Task1 和 Task2 中所调用的函数原型说明如下: a创建一个信号量:OS EVENT*#OSSemCreate(INT16Uvalue); b创建一个任务:INT8U OSTaskCreate(void(*#task)(void*#pd),void*#pdata,OS_STK *#ptos,INT8U prio); c开始执行多任务:void OSStart(void); d从键盘读入一个字符:char scanc(); e输出一个字符至屏幕:void printc(char ch); f发出一个信号量:INT8U OSSemPost(OS
3、EVENT*#pevent); g等待一个信号量:void OSSemPend(OS_EVENT*#pevent,INT16U timeout,INT8U *#err) (分数:15.00)(1).问题 1 请简述什么是临界资源?什么是临界区?访问临界资源应遵循哪些原则?(分数:5.00)_(2).问题 2 设 S 为信号量,P、V 操作的形式化定义如下图(a)和(b)所示,请完成该形式化定义,将应填入 _(n)_ 处的内容写在答题纸的对应栏中。 (分数:5.00)_(3).问题 3 请根据本题要求完善任务 Task1 和任务 Task2 的程序代码,填补图中的空缺。 (分数:5.00)_二、
4、试题二(总题数:1,分数:15.00)下面是关于嵌入式软件测试方面的叙述,回答问题 1 和问题 2,将解答填入答题纸的对应栏内。 说明 甲公司是一个专业的软件测评中心,承担了某机载软件测试任务。王工是该测试任务的负责人。用户指出,被测件是控制飞机飞行的关键软件,其安全性要求很高,必须按有关规定开展测评工作。(分数:15.00)(1).问题 1 王工与被测方讨论被测件的测试计划时,在测试环境方面产生了分歧。王工认为:由于当前被测件的实验平台要用于系统联试,没有时间提供给测评工作,测评工作司?在仿真环境下进行,没有必要非得在目标机环境下测试;而被测方认为:软件测评工作仅仅用仿真环境是不够的,不能真
5、实反映软件特性,可根据需要安排在实验平台上进行。 请对双方的意见进行分析,回答问题: 王工和被测方的意见 _ 。 A都对 B王工正确而被测方不完全正确 C都不完全正确 D被测方正确而王工不完全正确 你对有关测试环境的建议如下(请将建议填入答题纸的对应栏内): 1 _ 2 _ 3 _(分数:7.50)_(2).问题 2 仔细阅读以下有关修正的条件判定覆盖(MC/DC)和条件判定覆盖(C/DC)的叙述,回答问题。 由于被测件是关键级软件,按有关规定,被测件的测试必须达到 MC/DC。MC/DC 要求测试集满足 _ 条件;C/DC 要求测试集满足 _ 条件。下图所示的例子中给出了两个判定条件的例子,
6、则满足 MC/DC要求的测试集是 _ ,满足 C/DC 要求的测试集是 _ 。 (分数:7.50)_嵌入式系统设计师-28 答案解析(总分:30.00,做题时间:90 分钟)一、试题一(总题数:1,分数:15.00)阅读以下关于利用信号量机制解决进程同步与互斥方面的应用实例,回答问题 1 至问题 3。 说明 在多道程序系统中,进程是并发执行的。这些进程间存在着不同的相互制约关系,主要表现为同步和互斥两个方面。信号量机制是解决进程间同步与互斥的有效方法。下面是信号量应用实例。 下图所示代码是在 C/OS-II 操作系统上运行的一个应用的主函数。该函数创建了任务 Task1 和 Task2,其中
7、Task1 实现从键盘读入一个字符的功能,Task2 将该字符输出到屏幕,它们使用信号量和一个公共变量 buffer 来传递该字符。 主函数、Task1 和 Task2 中所调用的函数原型说明如下: a创建一个信号量:OS EVENT*#OSSemCreate(INT16Uvalue); b创建一个任务:INT8U OSTaskCreate(void(*#task)(void*#pd),void*#pdata,OS_STK *#ptos,INT8U prio); c开始执行多任务:void OSStart(void); d从键盘读入一个字符:char scanc(); e输出一个字符至屏幕:v
8、oid printc(char ch); f发出一个信号量:INT8U OSSemPost(OS EVENT*#pevent); g等待一个信号量:void OSSemPend(OS_EVENT*#pevent,INT16U timeout,INT8U *#err) (分数:15.00)(1).问题 1 请简述什么是临界资源?什么是临界区?访问临界资源应遵循哪些原则?(分数:5.00)_正确答案:()解析:问题 1 临界资源:一次只能给一个进程访问的资源。 临界区:进程中访问临界资源的那段代码。 访问临界资源时应遵循如下原则: (1)空闲让进(或有空即进)。 (2)忙则等待(或无空则等)。 (
9、3)有限等待。 (4)让权等待。 解析 本题考查进程同步与互斥的基本概念和应用。 问题 1 在多道程序系统中,进程是并发执行的,这些进程之间存在着不同的相互制约关系。进程之间的这种制约关系来源于并发进程的合作以及对资源的共享。 进程在运行过程中,一般会与其他进程共享资源,而有些资源的使用具有排他性。系统中的多个进程可以共享系统的各种资源,然而其中许多资源一次只能为一个进程所使用,通常把一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属于临界资源,如打印机、绘图机等。除物理设备外,还有许多变量、数据等都可由若干进程所共享,它们也属于临界资源。 进程中访问临界资源的那段代码称为临界区,也称
10、为临界段。 访问临界资源应遵循如下原则: (1)空闲让进(或有空即进)。当没有进程处于临界区时,可以允许一个请求进出临界区的进程立即进入自己的临界区: (2)忙则等待(或无空则等)。当已有进程进入其临界区时,其他试图进入临界区的进程必须等待: (3)有限等待。对要求访问临界资源的进程,应保证能在有限时间内进入自己的临界区; (4)让权等待。当进程不能进入自己的临界区时,应释放处理机。(2).问题 2 设 S 为信号量,P、V 操作的形式化定义如下图(a)和(b)所示,请完成该形式化定义,将应填入 _(n)_ 处的内容写在答题纸的对应栏中。 (分数:5.00)_正确答案:()解析:问题 2 (1
11、)S- (2)SO (3)S+ (4)S=0 解析 问题 2 信号量是荷兰著名的计算机科学家 Dijkstra 于 1965 年提出的一个同步机制,其基本思想是在多个相互合作的进程之间使用简单的信号宋同步。 在操作系统中,信号量是表示资源的实体,除信号量的初值外,信号量的值仅能由 P 操作(又称 Wait 操作)和 V 操作(又称 Signal 操作)改变。 设 S 为一个信号量,P(S)执行时主要完成的功能为:先执行 S=S-1,若 S0,则进程继续运行;若SO,则阻塞该进程,并将它插入该信号量的等待队列中。 V(S)执行时主要完成的功能为:先执行 S=S+1,若 SO,则进程继续执行;若
12、S0,则从该信号量等待队列中移出第一个进程,使其变为就绪状态并插入就绪队列,然后再返回原进程继续执行。 P、V 操作的形式化描述如下: P(S) S -; IF(so ) 阻塞该进程; 将该进程插入信号量 s 的等待队列; V(S) S+; IF(S= 0) 从信号量 s 的等待队列中取出队首进程; 将其插入就绪队列; (3).问题 3 请根据本题要求完善任务 Task1 和任务 Task2 的程序代码,填补图中的空缺。 (分数:5.00)_正确答案:()解析:问题 3 (1)OSSemPend(emptySem,O,&err) (2)Buffer=readc (3)ret=OSSemPost
13、(fullSem) (4)OSSemPend(fullSem,O,&err) (5)ret=OSSemPost(emptySem) (6)Printc(wntec) 解析 问题 3 本问题是信号量应用实例。 C/OS-II 操作系统提供了操作信号量的若干系统调用,任务 Task1 为了实现从键盘读入一个字符并写到buffer 的功能,就必须在读完字符后调用 OSSemPend()和 OSSemPost()对写 buffer 缓冲的动作加锁和解锁。 Task2 为了完成将该字符输出到屏幕,也必须在读 buffer 缓冲的动作时加锁和解锁。这样就避免任务Task1 和 Task2 同时操作 buf
14、fer 缓冲的资源冲突。 因此,任务 Task1 的代码如下: void Task1(void*#pdata) INT8U readc; INT8U err; INT8U ret; while(1) readc=scanc(); OSSemPend(emptySem,0,&err); Buffer=readc; ret=OSSemPost(fullSem); 任务 Task2 的代码如下: void Task2(void*#pdata) INT8U writec; INT8U err; INT8U ret; while(1) OSSemPend(fullSem,0,&err); writec=
15、buffer; ret=OSSemPost(emptySem); Printc(writec); 二、试题二(总题数:1,分数:15.00)下面是关于嵌入式软件测试方面的叙述,回答问题 1 和问题 2,将解答填入答题纸的对应栏内。 说明 甲公司是一个专业的软件测评中心,承担了某机载软件测试任务。王工是该测试任务的负责人。用户指出,被测件是控制飞机飞行的关键软件,其安全性要求很高,必须按有关规定开展测评工作。(分数:15.00)(1).问题 1 王工与被测方讨论被测件的测试计划时,在测试环境方面产生了分歧。王工认为:由于当前被测件的实验平台要用于系统联试,没有时间提供给测评工作,测评工作司?在仿
16、真环境下进行,没有必要非得在目标机环境下测试;而被测方认为:软件测评工作仅仅用仿真环境是不够的,不能真实反映软件特性,可根据需要安排在实验平台上进行。 请对双方的意见进行分析,回答问题: 王工和被测方的意见 _ 。 A都对 B王工正确而被测方不完全正确 C都不完全正确 D被测方正确而王工不完全正确 你对有关测试环境的建议如下(请将建议填入答题纸的对应栏内): 1 _ 2 _ 3 _(分数:7.50)_正确答案:()解析:问题 1 C 要在目标机环境下进行软件测试 采用在目标机环境下和在仿真环境下相结合的方法 妥善安排目标机环境的使用,使甲方的开发与乙方的测试两不误 解析 本题考查嵌入式软件测试
17、方面的基本知识和实际分析问题,解决问题的能力。 问题 1 在软件测试,尤其是嵌入式软件测试中,用仿真环境虽然可以完成部分测试工作,如单元测试,但是这些测试工作只能认为是编写测试用例的工作,为了确保软件与硬件的配套性,必须将测试用例在实际目标机上运行,因此,A、B、D 三种说法都不正确, C 是正确的选项。由于嵌入式系统的特殊性,本题主要考查考生对嵌入式软件测试工作的要求理解程度。 在了解嵌入式系统特性的基础上,应能给出以下建议: 第一条“要在目标机环境下进行软件测试”,这是嵌入式系统必须遵循原则; 第二条“采用在目标机环境下和在仿真环境下相结合的方法”,这是一种并行工作的有效方式; 第三条“妥
18、善安排目标机环境的使用,使甲方的开发与乙方的测试两不误”,类似于第二条,只是提醒项目开发方在必要的时刻应安排目标机环境给测试方使用。(2).问题 2 仔细阅读以下有关修正的条件判定覆盖(MC/DC)和条件判定覆盖(C/DC)的叙述,回答问题。 由于被测件是关键级软件,按有关规定,被测件的测试必须达到 MC/DC。MC/DC 要求测试集满足 _ 条件;C/DC 要求测试集满足 _ 条件。下图所示的例子中给出了两个判定条件的例子,则满足 MC/DC要求的测试集是 _ ,满足 C/DC 要求的测试集是 _ 。 (分数:7.50)_正确答案:()解析:问题 2 首先应满足 C/DC 的测试条件;判定中
19、每个条件的取值都必须独立地影响判定的结果,即在其他条件取值不变的前提下,仅改变这个条件的值,而使判定结果改变。 判定中每个条件的真值与假值都至少取一次;同时判定的真值与假值也要求至少取一次。 FF,TF,FT TT,FF 解析 问题 2 根据宇航系统的软件安全性考虑要求,宇航系统将根据设备对飞行器安全性影响危害程度将软件分为 5 级(AE),其中 A 级软件是关键软件,在软件测试中必须达到 100%修正的条件判定覆盖(MC/DC)和条件判定覆盖(C/DC)。这里主要考查考生是否理解这两种测试要求的具体含义。 MC/DC 要求测试集条件是:首先应满足 C/DC 的测试条件;判定中每个条件的取值都必须独立地影响判定的结果,即在其他条件取值不变的前提下,仅改变这个条件的值,而使判定结果改变。因此,对所列的A、B 两个条件变量,PF,TF,FT集合就满足了 MC/DC 要求。 C/DC 要求测试集条件是:判定中每个条件的真值与假值都至少取一次;同时判定的真值与假值也要求至少取一次。因此,对所列的 A、B 两个条件变量,TT,FP集合就满足了 C/DC 要求。