- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
网关软件工程师基础知识试题
BSP部分:
1. 内核编程中常常需要用到自旋锁,请简述 spin_lock(),spin_lock_irq()和 spin_lock_irqsave
O 之间的区别,并说明它们的使用场合。
答案: 」 不关闭 中断,中断可以打断。主要用于中断上下文,防止多核 的
spin ock() : CPU
情况下,中断临界资源被其它 CPU 访问。
spinJockJrqO:关闭 CPU 屮断,屮断和进程都不可以打断。主要用于进程上下文,防.11:
1
进程被 卩断和其它进程访问临界资源。
spin_lock_irqsave():保存中断标志,关闭 CPU 中断,中断和进程都不可以打断,解锁 时恢复
中断标志。主要用于进程上下文,防止进程被中断和其它进程访问临界资源。
2. 相对于应用空间应用程序的开发,内核开发有很大的不同。请列出它们之间的差异 (至 少
5 点)。
答案:
(1) 不可以访问 libc ;
(2) 必须使用 GNU toolchain;
(3) 缺乏用户空间那样的内存保护机制;
(4) 内核只有很小的一个定长的堆;
(5) 内核需要支持中断,抢占和多核,盂要时刻注意同步和并发;
(6) 使用浮点数很容易出现异常,应尽最少用或者不用;
(7) 程序在不同的地址空间执行。
此题为开放题,其它答案合理亦可。
3. 简述屮断级联与屮断共享有何异同?并画出硬件连接示意图。
答案:
相同点 :都是在同一个中断控制器的引脚上接多个设备。
不同点:中断级联是在中断控制器的引脚上再接一个中断控制器,设备具有不同的中断
号;中断共享则是中断控制器的引脚上直接并联多个设备,设备具有相同的中断号。
0:设备
4. 写一个宏 SWAP(x, y),实现交换所有基本数据类型的值;写一个宏计算数组元素的个数。
答案:
(1) #define SWAP(x, y) do { \
—typeof(x) t = x;
x = y; y = x ; \
} while (0)
或者
#define SWAP(x, y) do { \
x A= y; \
y A=x; \
x A= y; \ } while (0)
(2) #define A AY_SIZE(a) (sizeof(a) / sizeof(a[0]))
5. volatile 关键字的作用。
答案:
(1) 修饰语句块时,防止指令顺序被改变;
(2) 修饰变屋吋,防止读写指令被优化。
6. 全局变量:
static const int a;
static int b;
static const int c = 5;
(1)
int main ()
{
printff^b = %d\n, b) ;
rctum 0 ;
}
执行结果是什么,为什么?
(2) void fund (void)
{
int *p = (int *) a:
*p = 8;
b = 1 ;
u
printf( a = %d b = %d\n, a, b);
}
void
本司主营文章撰写、培训教材、合同协议、发言稿、策划、汇报、各类文案。 ~ 海量资深编辑老师无缝对接,一对一服务。 ~ 保原创!可加急!免费改!
原创力文档


文档评论(0)