driven

五大I/O模型详解

陌路散爱 提交于 2019-12-15 20:19:25
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 同步与异步&阻塞与非阻塞 五大I/O模型详解 java I/O模型简述 前文 在 同步与异步&阻塞与非阻塞 中,简要的介绍一些基础概念,但这些概念最终是为IO所服务,是为文件所服务。按照Linux一句话来说,一切皆文件。 一、Unix IO模型 Unxi大师Richard Stevens在 UNIX® Network Programming 中讲述了五种I/O 模型 blocking IO nonblocking IO IO multiplexing signal driven IO asynchronous IO 而本文也是基于这五种I/O模型,以及交叉着同步与异步&阻塞与非阻塞的概念。但在探讨I/O模型之前,先要了解一下I/O模型发生的对象和步骤。 对于一个文件IO的操作(这里以read为例子),会涉及到两个对象: 一个是调用这个IO的进程process 另外一个就是系统内核kernel 当一个read操作发生时,会经历两个阶段 进程等待内核数据准备(Waiting for the data to be ready) 将数据从内核拷贝到进程中 (Copying the data from the kernel to the process) 二、五大I/O模型 1.blocking IO(阻塞IO) 1.1