橘本橘橘猫 2023-01-28 18:39 采纳率: 25%
浏览 75
已结题

eMMC&Android&C&Linux

问题:
Open读取文件,有设置O_DIRECT,但是实际Read的时候,仍然使用了PageCache,而不是直接操作磁盘,这是为何?

背景:
1: 题主用的是安卓手机,采用eMMC内存,我想对手机的eMMC内存进行压力测试(一直读写数据)
2:eMMC内存有两种模式:Normal模式和Command Queue模式,
3:题主对Normal模式的eMMC内存可以实现直接访问磁盘,对Command Queue模式的eMMC内存,无法直接从磁盘读取数据(采用了PageCache)
4:明明有设置O_DIRECT,Normal模式有直接读取磁盘的信息,而Command Queue模式却不会直接访问磁盘,先访问PageCache

代码
fileReadHandle = open(filePath, O_RDONLY | O_DIRECT | O_NOCTTY, S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);//获取文件句柄
readLength = read(fileReadHandle,jbArray,length);//Read操作,长度为1024 * 1024 = 1MB

我想要的结果:
如何让我的Read操作直接去访问磁盘设备?为何我的O_DIRECT会失效?

  • 写回答

7条回答 默认 最新

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

      • 系统已结题 2月8日
      • 已采纳回答 1月31日
      • 创建了问题 1月28日

      悬赏问题

      • ¥60 已有标注好的图像数据集,如何构建深度卷积网络训练分类
      • ¥20 matlab图像错误
      • ¥30 如何写通过uni.uploadFile上传图片到ASP后端接收的代码
      • ¥15 selenium模糊定位
      • ¥15 硬件断点的问题,真的被整无语了
      • ¥30 想入门网络编程求建议
      • ¥15 在Vs图形库编程中引入的tools.h文件为什么不能被解析,SEL检查已经关闭(语言-c++)
      • ¥30 sentaurus三维器件仿真不收敛
      • ¥15 VB.NET的日语软键盘问题
      • ¥100 PC端 QQ联系人好友生成到电脑桌面