?
这部分的东西在网络编程经常能看到,不过在所有IO处理中都是类似的。
IO请求的两个阶段:
?????? 等待资源阶段:IO请求一般需要请求特殊的资源(如磁盘、RAM、文件),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。
?????? 使用资源阶段:真正进行数据接收和发生。
?????? 举例说就是排队和服务。
?在等待数据阶段,IO分为阻塞IO和非阻塞IO。
?????? 阻塞IO:资源不可用时,IO请求一直阻塞,直到反馈结果(有数据或超时)。
?????? 非阻塞IO:资源不可用时,IO请求离开返回,返回数据标识资源不可用
?????? 同步IO:应用阻塞在发送或接收数据的状态,直到数据成功传输或返回失败。
?????? 异步IO:应用发送或接收数据后立刻返回,数据写入OS缓存,由OS完成数据发送或接收,并返回成功或失败的信息给应用。
?
?
按照Unix的5个IO模型划分
?
从性能上看,异步IO的性能无疑是最好的。
?
各种IO的特点
?
?