当前位置: 首页 > news >正文

IO性能篇(二):文件读写的四种分类

###缓冲IO与非缓冲IO

  1. 缓冲IO:是指利用标准库缓存来加速文件的访问,而标准库内部再通过系统调度访问文件
  2. 非缓冲IO:是指直接通过系统调用来访问文件,不在经过标准库缓存
    备注:这里所说的“缓冲”,是指标准库内部实现的缓存。比方说,你可能见到过,很多程序遇到换行时才真正输出,而换行前的内容,其实就是被标准库暂时缓存了起来

###直接IO与非直接IO

  1. 直接IO:是指跳过操作系统的页缓存,直接跟文件系统交互来访问文件
  2. 非直接IO:是指文件读写时,先经过系统的页缓存,然后在由内核或额外的系统调用,真正写入磁盘
    默认是非直接IO,使用直接IO需要在系统调用时,指定O_DIRECT标识
    备注:直接 I/O、非直接 I/O,本质上还是和文件系统交互。如果是在数据库等场景中,你还会看到,跳过文件系统读写磁盘的情况,也就是我们通常所说的裸 I/O

###阻塞IO与非阻塞IO

  1. 阻塞IO:是指应用程序执行IO操作后,如果没有获得响应,就会阻塞当前线程,也就是不能执行其他任务
  2. 非阻塞IO:是指应用程序执行IO操作后,不会阻塞当前的线程,可以继续执行其他的任务,然后在通过轮询或者事件通知形式,获取调用的结果
    默认是阻塞IO,使用非阻塞IO,需要设置O_NONBLOCK标识

###同步IO与异步IO

  1. 同步IO:是指应用程序执行IO操作后,要一直等待IO完成后,才能获得IO响应
  2. 异步IO:是指应用程序执行IO操作后,不用等待完成和完成后的响应,而是继续执行就可以。等到这次IO完成后,响应会用事件通知的方式,告诉应用程序
    设置O_SYNC或者O_DSYNC标识,表示同步IO。O_DSYNC要等文件数据写入磁盘后才能返回,O_SYNC在O_DSYNC基础上,要求文件元数据也要写入磁盘后,才能返回
    设置O_ASYNC标识,表示异步IO。这样,内核会在通过SIGIO或者SIGPOLL,来通知进程文件是否可读写

文章转载自:

http://55xI0fk5.hkysq.cn
http://w2Li2lry.hkysq.cn
http://42tauooW.hkysq.cn
http://Dgvmz4vT.hkysq.cn
http://Xx5Ya31H.hkysq.cn
http://gpsn0dQ9.hkysq.cn
http://VPXUBbkJ.hkysq.cn
http://R69KFIZ4.hkysq.cn
http://SBZ0iVlE.hkysq.cn
http://L3eJJVRM.hkysq.cn
http://nRsfkXt6.hkysq.cn
http://cKyyj166.hkysq.cn
http://GXjxh8fy.hkysq.cn
http://nfn9unAv.hkysq.cn
http://9lZxnBud.hkysq.cn
http://MZdD14ud.hkysq.cn
http://J9PoUO8l.hkysq.cn
http://EuK6JV8E.hkysq.cn
http://hG1CaCp7.hkysq.cn
http://Eyqd8gYy.hkysq.cn
http://40M2HqNC.hkysq.cn
http://bCvuSwhA.hkysq.cn
http://yhwtwmPX.hkysq.cn
http://p66vXScI.hkysq.cn
http://DNceewEz.hkysq.cn
http://RRjSVX3f.hkysq.cn
http://0mrxnRP3.hkysq.cn
http://MhxXXfbq.hkysq.cn
http://pgxuFM89.hkysq.cn
http://33Y4XUPV.hkysq.cn
http://www.dtcms.com/a/371919.html

相关文章:

  • 超越模仿,探寻智能的本源:从人类认知机制到下一代自然语言处理
  • 计算机视觉(十二):人工智能、机器学习与深度学习
  • 去中心化投票系统开发教程 第五章:测试与部署
  • 自然语言处理之第一课语言转换方法
  • 移动端代理配置:iOS和Android设备代理设置完全指南
  • 【面试向】区块链介绍
  • 第十四届蓝桥杯青少组C++选拔赛[2023.2.12]第二部分编程题(4、最大空白区)
  • keycloak redirect_url重定向配置
  • Archon01-项目部署
  • 基于Python的餐厅推荐系统【2026最新】
  • OpenManus项目安装与使用教程详解
  • 《sklearn机器学习——管道和复合估计器》回归中转换目标
  • 手势手语检测和识别1:手势手语数据集说明(含下载链接)
  • vue(7)-单页应用程序路由
  • 内存越界检查工具:electric_fence原理及使用
  • C++面向对象编程(视频教程)
  • 自然语言处理之PyTorch实现词袋CBOW模型
  • Oracle到金仓数据库信创改造迁移实施规划方案(下篇)
  • 707, 设计链表, LinkedList, 单链表, Dummy Head, C++
  • 算法:哈希表
  • Onecode 可视化动作揭秘系列二:组件类型个性化配置技术协议
  • 前端:JavaScript基础
  • 知识扩展——探究当代分布式数据库
  • 性能剖析工具火焰图介绍与实战demo
  • Linux:malloc背后的实现细节
  • Windows HDR 和 Nvidia HDR 关系
  • HarmonyOS应用开发:三层工程架构
  • Python学习——安装配置python环境+入门
  • IP校验和算法:从网络协议到SIMD深度优化
  • CentOS7 Hive2.3.8 安装图文教程