https://blog.csdn.net/stpeace/article/details/43719449
假设A(客户端)向B(服务端)发送数据:
https://blog.csdn.net/qq_31815507/article/details/115673210
用户程序进行IO读写,依赖于操作系统底层的IO读写,基本上会用到底层的read&write
两大系统调用。read系统调用,并不是直接从物理设备把数据读取到内存中,write系统调用,也不是把数据直接写入到物理设备。
上层应用无论是调用操作系统的read,还是调用操作系统的write,都会涉及缓冲区
。具体来说,调用操作系统的read,是把数据从内核缓冲区复制到进程缓冲区;而write系统调用,是把数据从进程缓冲区复制到内核缓冲区。
上图显示了块数据如何从外部源(例如硬盘)移动到正在运行的进程(例如RAM)内部的存储区的简化“逻辑”图。
所以,用户程序的IO读写程序,在大多数情况下,并没有进行实际的IO操作,而是在进程缓冲区和内核缓冲区之间直接进行数据的交换。
底层操作会对内核缓冲区进行监控,等待缓冲区达到一定数量的时候,再进行IO设备的中断处理,集中执行物理设备的实际IO操作,这种机制提升了系统的性能。至于什么时候中断(读中断、写中断),由操作系统的内核来决定,用户程序则不需要关心。
原文:https://www.cnblogs.com/BlueBlueSea/p/14805680.html