Direct IO的程序实现
实现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的程序实现相关推荐
- IO有Buffered IO 和 Direct IO
IO有Buffered IO 和 Direct IO: buffered IO:在读写的时候回经过一个page Cache Direct IO:是绕过page Cache,直接对磁盘操作,所以性能会差 ...
- 安卓通过DIRECT IO和加密TF卡通信
安卓通过DIRECT IO和加密TF卡通信 问题背景 问题分析 解决方式 测试结果 问题背景 项目中在开发加密T卡,加密T卡和上位机通信的方式是在T卡上虚拟出文件,然后上位机通过读写该文件和加密T卡进 ...
- buffer IO和direct IO
最近在看很多框架,redis,kafka等底层都涉及到文件IO操作的效率问题,所以查了些资料,看到这篇文章讲的比较明白些,贴出来留存. 链接地址: https://www.ibm.com/develo ...
- centos io 查看程序_centos 查看每天应用程序的iowait
A question I'm asked daily is "How can I find out what is generating iowait on my server?" ...
- 利用休息时间编写的关于新唐单片机较为简单的ADC+定时器+IO端口程序
void Read_2556(unsigned char channel) { unsigned int i = 0; channel<<=4; //通道 控制位为7-4位 ...
- 51单片机c语言io口程序,51单片机IO口直接驱动LED数码管方法
1.实验任务 如图13所示,利用AT89S51单片机的P0端口的P0.0-P0.7连接到一个共阴数码管的a-h的笔段上,数码管的公共端接地.在数码管上循环显示0-9数字,时间间隔0.2秒. 2.电路原 ...
- io密集型和cpu密集型java,如何设计CPU密集型与I/O密集型程序
CPU密集型(CPU-Bound)是指系统指花费相对大部分时间在做CPU运算.逻辑判断等,CPU使用率很高,典型的如加密运算:I/O密集型(I/O-Bound)是指系统花费大部分时间在等待相对较慢的I ...
- IO密集型和CPU密集型程序-概念与实现
欢迎关注笔者的微信公众号 概念 在计算机科学中,有两种不同类型的程序:IO 密集型和 CPU 密集型.这两种程序的主要差别在于它们在执行任务时瓶颈所在的地方. IO 密集型:这类程序主要通过读写磁盘文 ...
- ext ext.ajax_在Ajax应用程序中使用Ext.Direct
ext ext.ajax Ajax的概念使Web应用程序可以从缓慢,无响应和违反直觉的方式发展为类似于桌面应用程序的行为,提供即时反馈,消除页面刷新的需求并促进更好的用户体验. Ajax的问题在于 ...
最新文章
- 详解Oracle安装与配置.
- Excel随机选取指定数据
- MyBatis MapperScannerConfigurer配置——MyBatis学习笔记之八
- 关于Qt的三种协议以及是否收费
- mybatis+dubbo+ springmvc+zookeeper分布式架构
- Typescript常见三种函数类型
- svn之迁移代码技巧
- 终于有人把SaaS讲明白了
- java移动接口发短信_天天都会写接口,但它的用途和好处有多少人能说得清楚?...
- linux shell中的case语句用法 以及 case default设置
- 搭建Web和FTP站点
- WLC5520无法通过无线客户端进行网管故障解决
- SqliteDeveloper使用方法及注册
- 基于感知器准则的线性分类器设计
- word中套用表格样式在哪里_word2010中表格自动套用格式在哪里?
- 随笔--初到青岛,爱意油然而生
- 企业智慧屏后 不止华为望向了智能办公市场
- 单片机中数制与数制的转换是怎样实现的
- 启动计算机 gho文件,u盘里只有gho文件怎么重装win7系统图解
- Ubuntu之ufw安装和使用
热门文章
- 共享主机与虚拟机文件方式二
- SpringBoot应用中JSP的角色及整合
- js 中的switch
- linux编译内核支持pam,linux编译内核make menuconfig报错解决办法
- python跟谁学_学 Python 都用来干嘛的?
- mvc ajax helpers,ASP.NET MVC 实践系列4-Ajax应用
- 形成性考核(计算机应用基础) 答案,2019年最新电大《计算机应用基础(Win7)》形成性考核册及答案.pdf...
- php调用好单库api视频教程,[8.1]-PhalApi视频教程 | PhalApi(π框架) - PHP轻量级开源接口框架 - 接口,从简单开始!...
- Excel快速选择区域
- pthread线程传递数据回主线程_操作系统4:线程(1)