文章目录
一.I/O介绍
I/O简单来说,就是输入输出。
网络I/O
对网络(socket)读取。
磁盘I/O
对磁盘读和取。
IO的两个阶段
数据从磁盘中加载到内核的内存中,再将数据复制到用户的进程当中。
二.IO模型
同步/异步
①同步:当调用者发出请求后,需要等待内核返回响应结果,才能继续执行下一个请求。如果没有返回,就会处于等待状态。
②异步:当调用者发出请求后,可以直接跳过响应,继续执行下一个请求。
阻塞/非阻塞
①阻塞:当IO操作彻底完成之后,才能返回用户的进程当中,如果没完成,就处于挂起状态。
②非阻塞:当IO操作没有完成,可以返回用户的进程当中,也可以执行其他操作。
同步阻塞(最简单的IO模型)
①用户线程在内核进行操作的时候被阻塞,做不了任何事情。
②用户线程通过系统调用read发起读操作,将接收的数据复制到用户进程中,完成read操作。
同步非阻塞
①用户线程发去请求,能直接得到响应。
例子:直接跟内核打交道。
IO多路复用
①发出的每个请求不用每个都跟内核打交道。<