epoll 基本知识与使用】的更多相关文章

缘起 面试的时候经常被问的一个很蛋疼的问题,经常被问,但是知识很零散,难记忆,看完就忘 select 作用 可以监视文件描述符是否可以读写,要求监视的文件描述符是非阻塞的 诞生背景 产生与上个世纪80年代的UNIX系统,到1993年写入POSIX1.b规范(一个操作系统的编程接口的规范,你要是写个操作系统想被兼容得遵守这个规范).由于那个年代还没有多线程(2年后线程相关的内容才写入POSIX1.c规范),还没有什么C10K问题,所以在设计select的时候体现了那个年代的特点. 接口 int s…
其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及select模型和poll模型,那为何还要再引入Epoll这个东东呢?那还是有得说说的- 1. 常用模型的缺点 如果不摆出来其他模型的缺点,怎么能对比出Epoll的优点呢. 1.1 PPC/TPC模型 这两种模型思想类似,就是让每一个到来的连接一边自己做事去,别再来烦我.只是PPC是为它开了一个进程…
IO multiplexing IO multiplexing这个词可能有点陌生,但是如果我说select,epoll,大概就都能明白了.有些地方也称这种IO方式为event driven IO.我们都知道,select/epoll的好处就在于单个process就可以同时处理多个网络连接的IO.它的基本原理就是select/epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程.它的流程如图: 当用户进程调用了select,那么整个进程…
环境:centos6.4 min #安装编译库及依赖模块 yum -y install gcc gcc-c++ autoconf automake make yum -y install zlib zlib-devel openssl openssl--devel pcre pcre-devel #上传需要的软件 #安装JDK与Tomcat 查看当系统JDK版本 java –version #修改权限 chmod 777  jdk-6u41-linux-i586-rpm.bin ./jdk-6u…
<深入理解Android 卷III>即将公布.作者是张大伟.此书填补了深入理解Android Framework卷中的一个主要空白,即Android Framework中和UI相关的部分.在一个特别讲究颜值的时代.本书分析了Android 4.2中WindowManagerService.ViewRoot.Input系统.StatusBar.Wallpaper等重要"颜值绘制/处理"模块 注意,此处连载的节选是出版社未排版的内容. 第2章 深入理解Java Binder和M…
在上节socket编程中,我们介绍了一些TCP/IP方面的必备知识,以及如何通过Python实现一个简单的socket服务端和客户端,并用它来解决“粘包”的问题.本章介绍网络编程中的几个概念:多线程.多进程以及网络编程IO模型 概述 默认应用程序:是单进程.单线程的. 进程是资源分配的最小单位.与程序相比,程序只是一组指令的有序集合,它本身没有任何运行的含义,只是一个静态实体.进程是程序在某个数据集上的执行,是一个动态实体.它因创建而产生,因调度而运行,因等待资源或事件而被处于等待状态,因完成任…
poll/select/epoll 对比 http://www.cnblogs.com/apprentice89/p/3234677.html    ---有待继续学习 http://blog.chinaunix.net/uid-20384806-id-1954307.html   ---有待继续学习 select和poll即使只有一个描述符就绪,也要遍历整个集合.如果集合中活跃的描述符很少,遍历过程的开销就会变得很大,而如果集合中大部分的描述符都是活跃的,遍历过程的开销又可以忽略. epoll…
问:epoll 或者 kqueue 的原理是什么?为什么 epoll 和 kqueue 可以用基于事件的方式,单线程的实现并发?我没看过 linux 内核,对这方面一直有疑问…… 必须从很多基础的概念开始构建这个答案,并且可能引申到很多别的问题. 首先我们来定义流的概念,一个流可以是文件,socket,pipe 等等可以进行I/O操作的内核对象.不管是文件,还是套接字,还是管道,我们都可以把他们看作流. 之后我们来讨论I/O的操作,通过read,我们可以从流中读入数据:通过write,我们可以往…
Android系统--输入系统(一)必备的Linux知识_inotify和epoll 引入 1. 笔记本电脑插入外接键盘,两个键盘都可以使用 a. 键盘即插即用--如何检测键盘的接入和拔出 hotplug机制:内核发现键盘接入或拨出之后启动hotplug进程,进程发出信号告诉输入系统,输入系统处理 inotify机制:输入系统使用inotify检测/dev/input的节点变化 b. 可用使用多键盘--如何知道哪个键盘被按下 epoll机制:可以检测多个事件 c. 如何使用inotify和epo…
为了形成一个完整清晰的认识,将概念和关系梳理出来,把坑填平. I/O多路复用 I/O多路复用主要解决传统I/O单线程阻塞的问题.它通过单线程管理多个FD,当监听的FD有状态变化的时候的,调用回调函数,通知用户已经准备完毕.用户收到通知,就可以进行IO操作了.这种机制大大的提高了系统的吞吐量.I/O多路复用的目的是为了更充分的利用CPU资源. EPOLL(SELECT/POLL) Linux下I/O多路复用的接口实现.EPOLL是POLL和SELECT的升级版.NIO底层就是封装了EPOLL接口.…