一 Linux IO基础原理
应用程序的IO读写,依赖于底层操作系统的IO读写,它是通过操作系统的两大系统调用Read/Write实现的。在Linux操作系统中设置了唯一的一个内核缓冲区,并为每个上层应用程序设置一个用户缓冲区,当应用程序进行数据读取时,内核将数据从内核缓冲区复制到用户缓冲区,当应用程序进行数据写入时,内核将数据从用户缓冲区复制到内核缓冲区,设置缓冲区的目的是减少性能消耗,因为直接对外部设备进行IO 读写会造成操作系统中断,操作系统频繁访问外部设备会,会造成不必要的性能开销。
Linux IO读取操作流程,分为两个阶段,第一个阶段:等待数据准备好,它是等待数据从网络中到达网卡,操作系统将数据从网卡复制到内核缓冲区;第二个阶段:内核复制数据,内核将数据从内核缓冲区拷贝到用户缓冲区,供应用程序使用。
Linux IO写入操作流程,分为连个阶段,第一个阶段:内核复制数据,内核将数据从应用程序的用户缓冲区拷贝到内核的内核缓冲区;第二个阶段:操作系统将内核缓冲区的数据复制到网卡,网卡基于底层通信协议将数据发送到目标客户端。