socket IO读写原理

时间:2021-05-24 22:34:57   收藏:0   阅读:28

1.send和recv函数只复制数据

https://blog.csdn.net/stpeace/article/details/43719449

技术分享图片

 

 

 假设A(客户端)向B(服务端)发送数据:

2.IO读写原理

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

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!