本文知识点:
计算机IO类型有那些
Linux6种文件IO模型分别是那些
Linux5种网络IO模型分别是那些
前言
I/O输入/输出(Input/Output),计算机中常见的设备。从设备的角度出发有键盘、鼠标、显示器、打印机、网络。网络对于计算机而言可以充当输入也可以充当输出。从软件角度出发I/O是计算机中处理数据的通道,文件I/O系统、网络I/O等都是系统软件的一部分。
文件IO
在Linux系统中使用VFS屏蔽系统底层的文件系统差异。VFS全名Virtual Filesystem,作用是为用户应用程序提供open、read、write等函数来操作I/O,为用户提供了一个统一的、抽象的、虚拟的文件系统,提供统一的对外API,使用户程序调用时无需感知底层的文件系统,只是在真正执行读写操作时才调用之前注册的文件系统相对应的函数。VFS相当于一个门面,对底层不相同的文件系统进行包装后适配提供统一的接口供I/O应用程序使用。
VFS提供了6种I/O:
- Bufferd I/O : 缓存I/O又叫作标准I/O,是大多数文件系统的默认IO操作,经过PageCache
- Direct I/O : 直接I/O,By Pass PageCache。offset、length需要对齐到block_size。
- Sync I/O:同步I/O,即发起I/O请求后被阻塞直到完成。缓存I/O和直接I/O都属于同步I/O。
- Async I/O :异步I/O,即发起I/O请求后不会被阻塞,内核完成后回调。
- Write Back : Bufferd