201203

1      选择题:

1.1      答题说明

本题提供15个选择题,请考生把选择的答案编号填写到试题提供的工程源文件EXAM_Questions.c(请参见第2题编程题的2.2 试题使用与答卷提交)的如下全局数组中(主要目的是为了能自动化阅卷),该文件的全局数组定义如下:

/* 如下全局数组初值记录选择题答案,请考生把选择的答案替换下面的初值0 */

int gaAnswerSelected[15] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

 

【选择题答卷示例】

如果考生答题时15个选择题分别选择“①”、“②③”、“①④”、“②③④”、“①②”,“①②③”、“②③”、“③④”、“③”、“①④”、“②③”、“①②③”、“③④”、“①”、“②”、“①④”:则请把EXAM_Questions.c文件中的gaSingleSelected[10]数组初值改为如下(注意顺序一定不能错,否则会导致自动化判阅判分与您的实际不符合,实际判分以考生填写内容为准):

/* 如下全局数组初值记录选择题答案,请考生把选择的答案替换下面的初值0 */

int gaAnswerSelected[15]={1,23,14,234,12,123,23,34,3,14,23,123,34,1,2,14};

 

1.2      选择题(共15题,每题2分,少选、多选、错选均不得分)

1.2.1   25根地址线可寻址范围是()

①:4MB  

②:8MB  

③:16MB

④:32MB

1.2.2    操作系统中每个任务分别使用自己的堆栈空间,创建任务时需要预估堆栈空间的大小,影响任务堆栈空间大小的直接因素():

①:内存总空间的大小;

②:函数调用的最大深度;

③:CPU占有率的大小;

④:相关局部变量所占空间的总量;

1.2.3    下面堆(Heap)与栈(stack)的叙述不正确的是()

①:Stack的空间由操作系统自动分配/释放,Heap上的空间由手动分配/释放。

②:C中的malloc函数分配的内存空间即在堆上。

③:局部非静态变量和函数的入参都在栈中分配。

④:程序中定义变量尽可能从堆中分配,因为堆的效率比栈高。

1.2.4    以下哪个地址可能是PPC处理器上的cache line32字节)的起始地址?()

①:0x111198

②:0x111190

③:0x1111a0

④:0x1111b0

1.2.5    下面有关malloccalloc区别描述正确的是()

①:malloc不能初始化所分配的内存空间,而calloc能;

②:calloc不能初始化所分配的内存空间,而malloc能;

③:malloc申请的是Cache-Safe的内存,而calloc申请的不是;

④:calloc申请的是Cache-Safe的内存,而malloc申请的不是;

1.2.6    以下哪个不是对嵌入式实时操作系统(RTOS)时间性能的评价指标?()

①:上下文切换时间                

②:最大中断延迟时间      

③:任务调度时间                

④:任务执行时间

1.2.7    对于同步机制,下列说法不正确的是()

①:不要长时间的锁住一份资源

②:系统设计之初就考虑同步策略,而不能等出了问题再考虑加锁

③:同步的唯一目的是对于临界资源进行保护

④:对于一些需要访问临界资源资源的函数,可以设计成线程安全的函数

1.2.8    要想函数有着较好的性能,则以下说法中不正确的是()

①:函数处理中将可能导致处理中止的判断放在前面

②:频繁调用函数的内部处理最小化

③:所有的小函数都使用内联函数

④:对多次重复的运算,应将结果缓存为变量使用

1.2.9    0x12345678 BigEndian系统中内存的排列顺序是()

①:12 34 56 78

②:34 12 78 56

③:78 56 34 12

④:56 78 12 34

1.2.10    公共资源包括全局变量、双口RAM、共享内存等。几种常见的互斥实现方案有()

①:开关中断;

②:锁任务

③:动态调整优先级

④:信号量;

1.2.11    如下变量可以用于可重入函数的有()

①:任务变量

②:受保护的全局变量

③:全局变量

④:局部变量

⑤:静态局部变量

1.2.12    以下哪些方法可以保证cache一致性()

①:CPU写内存后软件执行cacheFlush, CPU读内存前软件执行cacheInvalidate

②:CPU读内存后软件执行cacheFlush, CPU写内存前软件执行cacheInvalidate

③:设置cache属性为COPYBACK

④:打开硬件cache snoop功能

1.2.13    下列有关MMU(memory management unit)的主要功能描述正确的是()

①:完成逻辑地址到物理地址的映射转换

②:提供不同级别的地址访问保护功能

③:CACHE空间大小设置

④:CACHE属性设置

1.2.14    下列描述正确的选项有()

①:当编译选项“-fpack-struct”和“-mstrict-align”其中之一存在时,编译后会将32位操作的语句转换成8位操作的语句。

②:加上-funaligned-pointers的编译开关时,可以使系统自动对非对齐访问方式进行处理,保证非对齐方式访问的正确性。

③:加上-mstrict-align选项,可以解决当使用压缩结构时,可能会出现结构不能直接赋值的问题。

④:-O2优先的目的:编译器试图进行代码优化,减少代码长度,加快执行效率。

1.2.15 当函数A调用函数B时,操作系统会将一定的信息压栈,然后进入被调用函数B中。这些信息包括():

①:压栈的信息最前面四个字节是指向原来栈顶的指针,也就是上一级栈顶指针;

②:函数A的入口参数,

③:函数B的入口参数,

④:函数A的局部变量;

⑤:函数B的局部变量;

2      编程题:字节序转换功能

2.1      试题考核目的

考核目的:本试题主要考核基本的字节序转换技能,主要的目的是使考生理解在日常代码编写过程中如何对字节序进行转换处理,使数据可以满足不同系统的需要。

2.2      试题使用与答卷提交

使用说明试题中已经明确说明了每个特性的验收标准(试题工程中提供了基本的自动化测试代码,与考生代码直接编译链接后即可自动运行测试),考生需要根据验收标准自行考虑完备的测试思路,考虑各种出错的可能情况。

调试环境:本试题采用Visual Studio 2005集成调测环境,并提供了已经建好的工程,具体使用方法参见“2.4试题提供的可直接使用的VC工程”。

答卷提交:请使用试题包中的ByteOrder.cpp和ByteOrder.h编写调试源代码(所有新增源代码均应在这两个文件中,不能增加或者删减源文件),完成后把ByteOrder.cppByteOrder.hEXAM_Questions.c(选择题答卷文件)三个文件用WinRar打包成一个文件后提交,命名格式为“考试级别数字+姓名拼音的首字母+8位工号”的格式,如:

张三的工号为00187658,考一级,则打包文件的名称为:1z00187658.rar

王五的工号为00176588,考一级,则打包文件的名称为:1w00176588.rar

2.3      试题说明

试题简介:请考生实现:根据配置字符串格式对数据进行字节序小端(Little Endian)到大端(Big Endian)的转换的功能,配置字符串格式定义如下:“B”——BYTE(8bits),“H”——HALFWORD(16bits),“W”——WORD(32bits),“D”——DOUBLEWORD(64bits),“(”“)”——循环/重复标记,并支持空格及逗号。举例说明:

1.  例如:配置字符格式 “B,H,B”,给定的数据需要按照“字节、半字、字节”进行小端(Little Endian)到大端(Big Endian)的字节序的转换;

2.  再例如:配置字符格式 “B,H,(B)”,给定的数据长度为6,转换函数需要按照“字节、半字、字节、字节、字节”进行小端到大端的转换,即(B)循环/重复标记表示需要按照“字节”长度进行转换,直到按照指定的数据长度处理完成为止。(只需要支持单格式循环,即括号内只一种格式,例如“(B)”、“(H)”、“(W)”、“(D)”,不要求多格式循环,即类似“(B,H)”、“(W,D)”的形式

要求考生实现的具体功能

请考生实现“字节序转换函数”:该函数完成根据配置字符格式进行数据的字节序转换,配置字符格式说明见1.2

/*****************************************************************

函数原型:U32 SWAP_LittleEndianToBigEndian(U8 *pucFormat, U8 *pucData, U32 ulDataLen)

函数功能:根据配置字符格式进行数据的字节序转换

输入说明:U8 *pucFormat 配置字符格式描述字符串指针

U8 *pucData 待处理数据指针

U32 ulDataLen待处理数据长度

输出说明:U8 *pucData 转换后数据保存指针

返回值:0表示转换成功,非零表示转换失败;

*****************************************************************/

U32 SWAP_LittleEndianToBigEndian(U8 *pucFormat, U8 *pucData, U32 ulDataLen)

【验收标准】

²  按照给定配置字符格式进行数据的字节序转换;

²  给定配置字符格式与数据长度不匹配时返回转换失败,具体说明如下:

(1)   数据长度必须不小于配置字符格式要求的最小字符长度;

(2)   如果配置字符中存在循环/重复标记,必须保证数据长度可以正好满足转换要求,如:输入格式为"B,H,(H)",则输入数据可以为“ABCDEDF”,但不可以为“ABCDED”,即出现最后一次循环转换时数据“D”不能正好完成转换;

²  完成对待处理数据的字节序转换,转换成功后,返回转换成功。

 

2.4      试题提供的可直接使用的VC工程

2.4.1        VC试题工程及其使用方法

双击“\ByteOrder\ByteOrder.sln”程序可以直接打开工程环境,源代码框架(“\ByteOrder\source”)已经提前加到工程中了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值