栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

POSIX AIO和Linux上的libaio之间的区别?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

POSIX AIO和Linux上的libaio之间的区别?

在linux上,这两个AIO实现根本不同。

POSIX AIO是一种用户级别的实现,可以在多个线程中执行常规的阻塞I / O,因此给人一种I / O异步的错觉。这样做的主要原因是:

  1. 它适用于任何文件系统
  2. 它可以(基本上)在任何操作系统上工作(请记住,gnu的libc是可移植的)
  3. 它适用于启用了缓冲的文件(即未设置O_DIRECT标志)

主要缺点是队列深度(即实际上可以执行的未完成操作的数量)受您选择拥有的线程数量的限制,这也意味着一个磁盘上的慢速操作可能会阻止去往一个磁盘的操作。不同的磁盘。它还影响内核和磁盘调度程序看到哪些I
/ O(或多少)。

内核AIO(即io_submit()等)是内核对异步I /
O操作的支持,其中io请求实际上在内核中排队,按您拥有的任何磁盘调度程序排序,大概其中一些转发(以某种最佳的顺序(作为希望)对实际磁盘进行异步操作(使用TCQ或NCQ)。这种方法的主要限制是,并非所有文件系统都可以在异步I
/ O上很好地工作或根本无法工作(并且可能会退回到阻塞语义),因此必须使用O_DIRECT打开文件,这对O_DIRECT带来了很多其他限制。 I /
O请求。如果您无法使用O_DIRECT打开文件,它可能仍然可以“工作”,就像返回正确的数据一样,但是它可能不是异步完成的,而是会退回到阻塞语义上。

还请记住,在某些情况下,io_submit()实际上可以在磁盘上进行阻止。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394284.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号