第1题
一个定义为volatile 的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下
面是volatile 变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一 个 中断 服 务子 程 序中 会 访问 到 的非 自 动变 量 (Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
C 程序员和嵌入式系统程序员的最基本的问题。嵌入式系统程序员经常同硬件、中断、RTOS等等打交道,所用这些都要求volatile 变量。不懂得volatile 内容将会带来灾难。 (嗯,怀疑这否会是这样),我将稍微深究
一下,看一下这家伙是不是直正懂得volatile 完全的重要性。
1). 一个参数既可以是const 还可以是volatile 吗?解释为什么。
2). 一个指针可以是volatile 吗?解释为什么。
3). 下面的函数有什么错误: int square(volatile int *ptr)
{ return *ptr * *ptr;
}
第2题
A.单向量中断是单一中断源的中断,而多向量中断是多中断源的中断
B.单向量中断只有单一中断处理入口,而多向量中断有多个中断处理入口
C.单向量中断是单级中断,而多向量中断可以实现多级中断
D.单向量不能作为隐指令,而多向量可以形成隐指令
第5题
8. 关键字volatile 有什么含意并给出三个不
同的例子。
一个定义为volatile的变量是说这变量可能会
被意想不到地改变,这样,编译器就不会去假设这
个变量的值了。精确地说就是,优化器在用到这个
变量时必须每次都小心地重新读取这个变量的值,
而不是使用保存在寄存器里的备份。下面是volatile
变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自
动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
回答不出这个问题的人是不会被雇佣的。我认
为这是区分C 程序员和嵌入式系统程序员的最基
本的问题。嵌入式系统程序员经常同硬件、中断、
RTOS等等打交道,所用这些都要求volatile变量。
不懂得volatile内容将会带来灾难。
假设被面试者正确地回答了这是问题(嗯,怀
疑这否会是这样),我将稍微深究一下,看一下这
家伙是不是直正懂得volatile完全的重要性。
1). 一个参数既可以是const 还可以是volatile
吗?解释为什么。
第6题
第7题
一个定义为 volatile 的变量是说这变量可能会被意想不到地改变,这样,编译
器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须
每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面
是volatile变量的几个例子:
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)
3). 多线程应用中被几个任务共享的变量
第8题
A.每当发生缺页中断并进行处理后,将返回到被中断指令的下一条指令开始执行;而一般中断是返回到被中断指令开始重新执行 B.缺页中断在一条指令执行期间只会产生一次,而一般中断会产生多次 C.缺页中断在指令执行期间产生并进行处理,而一般中断是在一条指令执行完,下一条指令开始执行前进行处理的 D.缺页中断在一条指令执行完,下一条指令开始执行前进行处理,而一般中断是在一条指令执行期间进行处理的
第9题
A.单级中断只能实现单中断,而多级中断可以实现多重中断
B.单级中断的硬件结构是一维中断,而多级中断的硬件结构是二维中断
C.单级中断处理机只通过一根外部中断请求线接到它的外部设备系统;而多级中断,每一个I/O设备都有一根专用的外部中断请求线
第10题
A.输入输出中断是来自通道或各种外部设备的中断,用于反映通道或设备的工作情况
B.硬件故障中断是机器发生错误时产生的中断
C.时钟中断是硬件时钟或软件时钟到时而引起的中断
D.程序性中断是正在运行程序有意识安排而引起的中断
为了保护您的账号安全,请在“上学吧”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!