文档下载 文档下载导航
设为首页 | 加入收藏
搜索 请输入内容:  
 导航当前位置: 文档下载 > 所有分类 > IT/计算机 > 计算机软件及应用 > linux服务器编程--EPOLL基础
侵权投诉

linux服务器编程--EPOLL基础

linux epoll

linux服务器编程--EPOLL

介绍epoll的文章大多都详细介绍了epoll模型和select/poll模型之间的比较,这里就不再详细列举,只总结一下我对这两个模型的看法:

1.要监视的文件句柄非常多,而且每次完成操作的句柄非常少,使用epoll模型效率比select/poll模型要高许多;2.取决于文静句柄的响应速度,在LAN环境中这几个模型的效率差不多;WAN环境中epoll的效率最高;

1.Linux2.6内核epoll介绍

先介绍2本书《The Linux Networking Architecture--Design and Implementation of Network Protocols in the Linux Kernel》,以2.4内核讲解Linux TCP/IP实现,相当不错.作为一个现实世界中的实现,很多时候你必须作很多权衡,这时候参考一个久经考验的系统更有实际意义。举个例子,linux内核中sk_buff结构为了追求速度和安全,牺牲了部分内存,所以在发送TCP包的时候,无论应用层数据多大,sk_buff最小也有272的字节.其实对于socket应用层程序来说,另外一本书《UNIX Network Programming Volume 1》意义更大一点.2003年的时候,这本书出了最新的第3版本,不过主要还是修订第2版本。其中第6章《I/O Multiplexing》是最重要的。Stevens给出了网络IO的基本模型。在这里最重要的莫过于select模型和Asynchronous I/O模型.从理论上说,AIO似乎是最高效的,你的IO操作可以立即返回,然后等待os告诉你IO操作完成。但是一直以来,如何实现就没有一个完美的方案。最著名的windows完成端口实现的AIO,实际上也是内部用线程池实现的罢了,最后的结果是IO有个线程池,你应用也需要一个线程池...... 很多文档其实已经指出了这带来的线程context-switch带来的代价。在linux 平台上,关于网络AIO一直是改动最多的地方,2.4的年代就有很多AIO内核patch,最著名的应该算是SGI那个。但是一直到2.6内核发布,网络模块的AIO一直没有进入稳定内核版本(大部分都是使用用户线程模拟方法,在使用了NPTL的linux上面其实和windows的完成端口基本上差不多了)。2.6内核所支持的AIO特指磁盘的AIO---支持io_submit(),io_getevents()以及对Direct IO的支持(就是绕过VFS系统buffer直接写硬盘,对于流服务器在内存平稳性上有相当帮助)。

所以,剩下的select模型基本上就是我们在linux上面的唯一选择,其实,如果加上no-block socket的配置,可以完成一个"伪"AIO的实现,只不过推动力在于你而不是os而已。不过传统的select/poll函数有着一些无法忍受的缺点,所以改进一直是2.4-2.5开发版本内核的任务,包括/dev/poll,realtime signal等等。最终,Davide Libenzi开发的epoll进入2.6内核成为正式的解决方案

第1页

你可能喜欢

  • socket编程
  • Linux编程
  • linux网络编程
  • linux系统编程
  • linux串口编程
  • linux shell编程
  • linux多线程编程

热门文档

相关文档

  • 【论文】Linux下基于epoll+线程池高并发服务器实现研究

    在介绍linux系统下基于TCP/IP协议的socket网络编程的客户端和服务器(client/server)基本模型、线程池和epoll机制的基础上,给出了基于epoll+线程池高并发服务器设计的...

  • 基于linux服务器客户机编程

    linux服务器编程--EPOLL... 暂无评价 8页 免费 第18章 一个简单Web服务..... 中医护理学基础重点 执业医师实践技能考试模拟试题104份文档 2014年驾照交规...

  • linux下epoll架构

    linux下epoll架构_IT/计算机_专业资料。linux c网络编程今日推荐 ... linux服务器编程--EPOLL... 暂无评价 8页 免费喜欢此文档的还喜欢...

  • EPOLL编程

    Linux 下 EPOll 编程实例 总结 WINDOWS 完成端口编程 摘要:开发网络程序从来都不... 淘宝客推广操作基础 67份文档 九妖笑话 2014年笑话大全之让你笑个够 儿童...

  • 第9章 网络编程epoll

    第9章 网络编程epoll_IT/计算机_专业资料。OSI...Linux_s linux_c简单通信示例 通信过程首先,服务器... 第6章结构化程序设计基础... 第7章 Linux磁盘...

  • 服务器中采用的epoll技术的完整例子

    服务器中采用的epoll技术的完整例子_IT/计算机_专业资料。很好的Linux编程资料技术的完整例子(附加一个客户端的例子) 服务器中采用的 epoll 技术的完整例子(附加...

  • linux epoll技术介绍

    linux epoll技术介绍_IT/计算机_专业资料。编程相关linux epoll 技术介绍 在 linux 的网络编程中, 很长的时间都在使用 select 来做事件触发。 linux 新的内核中...

  • Linux下HTTP服务器设计

    1 第二章 HTTP 服务器的相关理论基础 ......阐述了 Linux 套接字编程的方法、EPOLL 等 I/O 复用编程 模型。详细分析了 HTTP 协议内容以及客户端与服务器之间...

  • Linux下HTTP服务器设计 2

    1 第二章 HTTP 服务器的相关理论基础 ......阐述了 Linux 套接字编程的方法、EPOLL 等 I/O 复用编程 模型。详细分析了 HTTP 协议内容以及客户端与服务器之间...

  • Linux下EPoll通信模型简析

    Linux下EPoll通信模型简析_计算机软件及应用_IT/计算机_专业资料。Linux下EPoll...epoll_data_t data; /* User data variable */ }; 一般我们在编程时, ...

站点地图 | 文档上传 | 侵权投诉 | 手机版
本站所有资源均来自互联网,本站只负责收集和整理,均不承担任何法律责任,如有侵权等其它行为请联系我们.
文档下载 Copyright 2013 doc.guandang.net All Rights Reserved.  -  email