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/fwrite、ifstream/ofstream、open/read/write/close(POSIX) - 文件的创建、删除、重命名、
stat获取文件属性 - 内存映射文件
m
