我听说基于熔断器的文件系统速度太慢了,因为它们是在用户空间程序中实现的。比内核慢的用户空间是什么?
发布于 2014-12-20 21:56:33
无论是在内核中还是在用户区域,代码都以同样的速度执行,但是内核代码可以直接执行一些事情,而用户域代码必须跳过循环。特别是,内核代码可以直接映射应用程序内存,因此它可以直接复制应用程序内存和硬件复制的内部缓冲区之间的文件内容。用户代码必须通过管道或套接字进行额外的复制,或者进行更复杂的内存共享操作。
此外,每个文件操作都必须经过内核- the,只有这样,进程才能与任何东西交互,那就是通过系统调用。如果文件操作完全在内核内执行,那么只需要执行一个用户/内核转换和一个内核/用户转换,这是相当快的。如果文件操作是由另一个进程执行的,则必须在进程之间进行上下文切换,这需要在MMU中进行更昂贵的操作。
对于大多数硬件访问时间而言,速度性能仍然可以忽略不计,但当硬件不是瓶颈时可以观察到,特别是当主处理器正在执行其他操作时,可以异步执行许多硬件操作,而进程之间的上下文切换和数据副本使CPU处于繁忙状态。
发布于 2014-12-20 16:44:24
非常简化:
您的应用程序希望读取一个文件。
应用程序询问内核,内核访问文件系统(在内核空间)检查权限,处理对应用程序的文件描述符。
对于用户空间文件系统来说,内核到用户空间的切换要慢得多:
应用程序要求内核打开文件,内核调用用户空间文件系统,用户空间fs调用内核进行磁盘访问,用户空间fs向内核发送数据,内核将数据交给用户空间应用程序。
对于用户空间文件系统,您有更多的上下文开关。
https://unix.stackexchange.com/questions/175162
复制相似问题