IO
一、IO分类有哪些?
- 磁盘IO
- 网络IO
- 数据库IO
- 内存映射IO
- directIO
二、IO有哪些类?
- 字节流:inputstream、outputstream
- 字符流:bufferedwrite、bufferedread
三、IO中的select、poll与epoll了解吗?
- select:将fd_set拷贝进内核,线程不断的去轮询描述符集合fd_set,看IO是否准备就绪,就绪则开始传输,最大持有描述符数量为1024
- poll:采用pollfd结构优化select,将原本读事件、写事件和异常事件各需要一个fd_set结合到一个,每次轮询只需遍历一次
- epoll:最大持有描述符数量没有上限,保证只拷贝到内核一次,内核将发生事务的描述符通知线程,不需要遍历了
四、BIO、NIO、AIO了解吗?
- BIO:同步阻塞模式,服务器通过一个 Acceptor 线程负责监听客户端请求和为每个客户端创建一个新的线程进行链路处理
- NIO:非阻塞同步模式,由Buffer(缓冲区)、Channel(管道)以及Selector(选择器)组成,selector去询问Channel中的状态情况
- AIO:非阻塞异步模式,与NIO的不同就是用准备好通知的方式替换selector