当前位置: 首页 > Linux

Linux网络IO模型

时间:2023-04-06 02:46:37 Linux

Linux网络IO模型阻塞IO模型1.当应用程序发起网络IO请求时,会调用操作系统的recvfrom函数2.等待系统内核准备数据报(获取网络数据:网卡将数据复制到内核)3。数据报准备好后,将数据从内核拷贝到用户空间,即应用空间非阻塞IO模型,这种非阻塞模型一般很少使用,因为重复调用会消耗CPUIO复用模型。linux下使用的IO多路复用模型,最流行的是JDK中的NIO。特点:对于某个应用进程,或者在某个网络通信中,仍然是阻塞的,但是可以同时服务于多个网络通信。多个select函数,即多个socket请求,会挂在内核中。操作系统会轮询检查数据报是否就绪,然后返回可读条件为就绪。然后,应用程序将启动recefrom函数以复制内核中的数据。选择和epoll;对于一个socket来说,调用两次,返回两次,并不比阻塞IO优越;关键是能够同时处理多个套接字。Signal-drivenIO---(相对较少使用)异步IO模型当发出异步过程调用时,系统直接返回,调用者无法立即得到结果。真正处理这个调用的组件通过状态、通知和完成后的回调将输入输出操作通知给调用者。五种IO模型对比:除了异步IO模型,前四种IO模型的第二阶段都是一样的,都阻塞在recefrom调用中。参考书籍:《UNIX网络编程》推荐阅读本书。读了一会儿,觉得很好。学习应用层背后的东西会有很大的帮助