C++笔记之IO相关概念详解

C++笔记之IO相关概念详解


code review!

文章目录

  • C++笔记之IO相关概念详解
    • 一、什么是IO
    • 二、IO包括哪些操作或场景
    • 三、IO与性能的关系
    • 四、哪些操作或场景不是IO
    • 五、哪些操作不是IO却也和性能强相关
    • 总结要点(面试话术)

一、什么是IO

IO(Input/Output,输入输出)是指程序与外部设备或外部系统之间进行数据交换的操作。其本质特征是:数据需要跨越"用户态程序内存"与"外部实体"之间的边界,通常需要经过操作系统内核,涉及硬件设备(如磁盘、网卡)或内核缓冲区的参与。

IO操作的核心特点:

  • 需要陷入内核态(系统调用,如read/write/send/recv
  • 速度远慢于CPU/内存操作(磁盘IO约毫秒级,网络IO受延迟影响更大,而CPU指令是纳秒级)
  • 通常是异步的、不可预测延迟(依赖外部设备状态、网络状况等)
  • 占用的是"等待"资源而非"计算"资源(IO等待期间CPU可以切换去做别的事)

二、IO包括哪些操作或场景

1. 文件IO

  • 文件的读写:fopen/fread/fwriteifstream/ofstreamopen/read/write/close(POSIX)
  • 文件的创建、删除、重命名、stat获取文件属性
  • 内存映射文件m