首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么用户空间比内核慢?

为什么用户空间比内核慢?
EN

Unix & Linux用户
提问于 2014-12-20 16:20:22
回答 2查看 3.5K关注 0票数 4

我听说基于熔断器的文件系统速度太慢了,因为它们是在用户空间程序中实现的。比内核慢的用户空间是什么?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2014-12-20 21:56:33

无论是在内核中还是在用户区域,代码都以同样的速度执行,但是内核代码可以直接执行一些事情,而用户域代码必须跳过循环。特别是,内核代码可以直接映射应用程序内存,因此它可以直接复制应用程序内存和硬件复制的内部缓冲区之间的文件内容。用户代码必须通过管道或套接字进行额外的复制,或者进行更复杂的内存共享操作。

此外,每个文件操作都必须经过内核- the,只有这样,进程才能与任何东西交互,那就是通过系统调用。如果文件操作完全在内核内执行,那么只需要执行一个用户/内核转换和一个内核/用户转换,这是相当快的。如果文件操作是由另一个进程执行的,则必须在进程之间进行上下文切换,这需要在MMU中进行更昂贵的操作。

对于大多数硬件访问时间而言,速度性能仍然可以忽略不计,但当硬件不是瓶颈时可以观察到,特别是当主处理器正在执行其他操作时,可以异步执行许多硬件操作,而进程之间的上下文切换和数据副本使CPU处于繁忙状态。

票数 5
EN

Unix & Linux用户

发布于 2014-12-20 16:44:24

非常简化:

您的应用程序希望读取一个文件。

应用程序询问内核,内核访问文件系统(在内核空间)检查权限,处理对应用程序的文件描述符。

对于用户空间文件系统来说,内核到用户空间的切换要慢得多:

应用程序要求内核打开文件,内核调用用户空间文件系统,用户空间fs调用内核进行磁盘访问,用户空间fs向内核发送数据,内核将数据交给用户空间应用程序。

对于用户空间文件系统,您有更多的上下文开关。

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

https://unix.stackexchange.com/questions/175162

复制
相关文章

相似问题

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