I/O Models
概念 Input/Output 在硬件层面,I/O是字节在硬盘、网卡、键盘等设备到内存之间流动的过程。 在应用软件的角度上,Input是应用软件通过直接或间接地调用操作系统(kernel)提供的IO接口访问应用进程外部数据的过程。这个过程通常包括两个阶段:第一阶段是在向内核提交需求(调用kernel接口);第二阶段是内核将这部分数据从内核缓冲区复制到应用缓冲区域即成功获得数据(完成任务)。Output是应用调用内核IO接口向应用进程外输出数据的过程。同样地通常涉及两个阶段:第一阶段是直接或间接调用内核IO接口请求输出数据;第二阶段内核将数据从应用缓冲区复制到目的地。从第一阶段进入第二阶段需要满足一定条件。对于Input,条件通常包括应用需要的数据在内核缓冲区准备好并可以复制到应用缓冲区中。对于Output,条件包括目标文件有足够空间存放数据。 对于应用程序来说,向网络(Network)输出输入数据与读写文件本质上都是I/O:前者是将数据写到网卡,最终发到目的主机,而后者是将数据写到硬盘。在Linux操作系统中,所有外设都被映射成文件,即对外设的操作都被映射成对文件的操作。TCP协议中,...