首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么linux用户空间和内核空间的代码运行速度会有差异?

为什么linux用户空间和内核空间的代码运行速度会有差异?
EN

Stack Overflow用户
提问于 2011-12-27 08:32:28
回答 1查看 686关注 0票数 1

当我在linux用户空间和内核空间运行一些简单的while循环代码并测量运行时间时,我可以得到差异。

测试代码是访问Arm Cortex SoC芯片中的一些硬件寄存器。

代码语言:javascript
运行
复制
for(k = 0; k < 100000; k++)
{   //I tested this code in user space and kernel space with IOCTL.
    for(i = 0; i < 1000; i++)  
    {  
        tv2 = *(volatile UInt32 *)(0xfe110080);  
        *(volatile UInt32 *)(0xfe628024) = i + tv2 ;  
    }
}

结果是

用户层: 52002.16 ms

内核层: 32650.53 ms

内核层比用户层快1.6倍。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-27 08:47:14

一般来说,用户层需要更多的时间,因为它很少进行额外的调用来完成任务。

例如,以读取文件为例。为了从用户层读取文件,我们调用read(file_name)。此读调用在内部调用内核读调用,它与磁盘设备驱动程序进行通信并获取数据。

因此,由于调用次数的减少,内核层的性能更好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8640176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档