以下关于系统调用和常规调用的说法中,错误的是()

A.系统调用一般比常规函数调用的执行开销大B.系统调用需要切换堆栈C.系统调用可以引起特权级的变化D.常规函数调用和系统调用都在内核态执行... A.系统调用一般比常规函数调用的执行开销大
B.系统调用需要切换堆栈
C.系统调用可以引起特权级的变化
D.常规函数调用和系统调用都在内核态执行
展开
考试资料网
2023-05-20 · 百度认证:赞题库官方账号
考试资料网
向TA提问
展开全部
【答案】:D
系统调用相对常规函数调用执行开销要大,因为这会涉及到用户态栈和内核态栈的切换开销,特权级变化带来的开销,以及操作系统对用户态程序传来的参数安全性检查等开销。如果发出请求的请求方和应答请求的应答方都在内核态执行,则不用考虑安全问题了,效率还是需要的,直接用常规函数调用就够了。 以ucr S为例,我们可以看到系统调用的开销在执行“it 0x80”和“irt”带来的用户态栈和内核态栈的切换开销,两种特权级切换带来的执行状态(关注 kr/trap/trap.h中的trapfram数据结构)的保存与恢复等(可参看 kr/trap/traptry.S的__alltraps和__traprt的实现)。而函数调用使用的是"call"和“rt”指令,只有一个栈,不涉及特权级转变带来的各种开销。如要了解call, rt, it和irt指令的具体功能和实现,可查看“英特尔 64 和 iA-32 架构软件开发人员手册卷 2a's,指令集参考(A-M)”和“英特尔64 和 iA-32 架构软件开发人员手册卷 2B’ s,指令集参考(-Z)”一书中对这些指令的叙述。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式