实现Direct IO的程序实现

(1)首先要在应用前加上宏:#define _USE_GNU 1 和#define _GNU_SOURCE

(2)在open一个设备文件的时候要加上O_DERECT选项。如:int writefd =open(dev,O_RDWR|O_DIRECT);

(3)把要存储数据或者是要写入数据的buf与页对齐。同时保证偏移地址是页大小的整数倍。

相应的程序如下:

#include<stdio.h>

#define _USE_GNU 1

#define _GNU_SOURCE

int main()

{

char *buf;

size_t buf_size = 1024;

off_t offset = 4096;

posix_memalign((void **)&buf,getpagesize(),buf_size);

int writefd =open("a.txt",O_RDWR|O_DIRECT);

if(writefd<0)

{

printf("can't  open the file!\n");

exit(1);

}

if(lseek(fd,offset,SEEK_SET)<0)

//if(lseek(fd,0,SEEK_SET)<0)

{

printf("lseekthe disk is error!\n");

exit(1);           }

if(buf_size!= read(fd,buf,buf_size))

{

perror("readdata from the disk is error!");

printf("thetem_size is %d\n",temp_size);

exit(1);

}

}

注意以下几点:(1)buf必须要用函数posix_memalign()来与页进行对齐。

(2)lseek的偏移地址必须是页面大小的整数倍。

Direct IO的程序实现相关推荐

  1. IO有Buffered IO 和 Direct IO

    IO有Buffered IO 和 Direct IO: buffered IO:在读写的时候回经过一个page Cache Direct IO:是绕过page Cache,直接对磁盘操作,所以性能会差 ...

  2. 安卓通过DIRECT IO和加密TF卡通信

    安卓通过DIRECT IO和加密TF卡通信 问题背景 问题分析 解决方式 测试结果 问题背景 项目中在开发加密T卡,加密T卡和上位机通信的方式是在T卡上虚拟出文件,然后上位机通过读写该文件和加密T卡进 ...

  3. buffer IO和direct IO

    最近在看很多框架,redis,kafka等底层都涉及到文件IO操作的效率问题,所以查了些资料,看到这篇文章讲的比较明白些,贴出来留存. 链接地址: https://www.ibm.com/develo ...

  4. centos io 查看程序_centos 查看每天应用程序的iowait

    A question I'm asked daily is "How can I find out what is generating iowait on my server?" ...

  5. 利用休息时间编写的关于新唐单片机较为简单的ADC+定时器+IO端口程序

    void Read_2556(unsigned char channel) {   unsigned int  i = 0;    channel<<=4; //通道 控制位为7-4位   ...

  6. 51单片机c语言io口程序,51单片机IO口直接驱动LED数码管方法

    1.实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地.在数码管上循环显示0-9数字,时间间隔0.2秒. 2.电路原 ...

  7. io密集型和cpu密集型java,如何设计CPU密集型与I/O密集型程序

    CPU密集型(CPU-Bound)是指系统指花费相对大部分时间在做CPU运算.逻辑判断等,CPU使用率很高,典型的如加密运算:I/O密集型(I/O-Bound)是指系统花费大部分时间在等待相对较慢的I ...

  8. IO密集型和CPU密集型程序-概念与实现

    欢迎关注笔者的微信公众号 概念 在计算机科学中,有两种不同类型的程序:IO 密集型和 CPU 密集型.这两种程序的主要差别在于它们在执行任务时瓶颈所在的地方. IO 密集型:这类程序主要通过读写磁盘文 ...

  9. ext ext.ajax_在Ajax应用程序中使用Ext.Direct

    ext ext.ajax Ajax的概念使Web应用程序可以从缓慢,无响应和违反直觉的方式发展为类似于桌面应用程序的行为,提供即时反馈,消除页面刷新的需求并促进更好的用户体验. Ajax的问题​​在于 ...

最新文章

  1. 详解Oracle安装与配置.
  2. Excel随机选取指定数据
  3. MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八
  4. 关于Qt的三种协议以及是否收费
  5. mybatis+dubbo+ springmvc+zookeeper分布式架构
  6. Typescript常见三种函数类型
  7. svn之迁移代码技巧
  8. 终于有人把SaaS讲明白了
  9. java移动接口发短信_天天都会写接口,但它的用途和好处有多少人能说得清楚?...
  10. linux shell中的case语句用法 以及 case default设置
  11. 搭建Web和FTP站点
  12. WLC5520无法通过无线客户端进行网管故障解决
  13. SqliteDeveloper使用方法及注册
  14. 基于感知器准则的线性分类器设计
  15. word中套用表格样式在哪里_word2010中表格自动套用格式在哪里?
  16. 随笔--初到青岛,爱意油然而生
  17. 企业智慧屏后 不止华为望向了智能办公市场
  18. 单片机中数制与数制的转换是怎样实现的
  19. 启动计算机 gho文件,u盘里只有gho文件怎么重装win7系统图解
  20. Ubuntu之ufw安装和使用

热门文章

  1. 共享主机与虚拟机文件方式二
  2. SpringBoot应用中JSP的角色及整合
  3. js 中的switch
  4. linux编译内核支持pam,linux编译内核make menuconfig报错解决办法
  5. python跟谁学_学 Python 都用来干嘛的?
  6. mvc ajax helpers,ASP.NET MVC 实践系列4-Ajax应用
  7. 形成性考核(计算机应用基础) 答案,2019年最新电大《计算机应用基础(Win7)》形成性考核册及答案.pdf...
  8. php调用好单库api视频教程,[8.1]-PhalApi视频教程 | PhalApi(π框架) - PHP轻量级开源接口框架 - 接口,从简单开始!...
  9. Excel快速选择区域
  10. pthread线程传递数据回主线程_操作系统4:线程(1)