5个IO模型
阻塞IO,异步IO,信号驱动IO,多路复用IO,异步IO
一个IO操作的组成
(1)发起IO请求(2)执行具体的IO操作
同步和异步的区别
第二步是否阻塞。如果发起IO请求后进程阻塞直到IO完成,就是同步IO;反之,如果进程发起IO请求后可以去执行其它事,等IO完了再处理,就是异步IO。
阻塞IO和非阻塞IO的区别
第一步是否阻塞。当进程发起IO请求时不可读或者不可写,进程阻塞直到可读或者可写,就是阻塞IO;如果不可读或者不可写时进程返回IO失败,就是非阻塞IO。
非阻塞IO
发起IO请求时如果失败,需要每过一段时间就再次发起IO请求(轮询),在发起一次新的IO请求之前进程可以去做其他事情。
异步IO
此时应用进程需要告知内核以下信息:(1)数据存放位置(2)注册回调函数,当内核IO完成后,调用回调函数通知应用进程。
IO多路复用有以下三种模型:select,poll,epoll。