IO网络模型
多路处理模型MPM
MPM是Apache2引入的一个概念,就是将结构模块化。把核心任务处理作为一个可插拔的模块,使其能针对不同的环境进行优化
在这个情况下,就诞生出了处理模式的概念
Prefork
实现了一个非线程型的、预派生的Web服务器
Worker
它也使用了多线程,每个进程又有多个线程
Event
是worker的变种,它把服务进程从连接中分离出来,在开启KeepAlive场合下相对worker模式能够承受的了更高的并发负载
IO调用过程
IO发生时涉及的对象和步骤。对于一个network IO,它涉及到两个系统对象,一个是调用IO process(or thread),另一个就是系统内核。
当一个read操作发生时,它会经历两个阶段
1. 等待数据准备(等待数据从网络完整的传输过来)
2. 将数据从内核空间拷贝到用户空间
阻塞I/O模型

当用户进程调用了recvfrom这个系统调用,kernel就开始了IO的第一个阶段:准备数据。 对于network io来说,很多时候数据在一开始还没到达(比如,还没有收到一个完整的UDP包),这个时候kernel就要等待足够的数据到来 而在用户进程这边,整个进程就会被阻塞。当kernel一直等到数据准备好了,它就会将数据从kernel中拷贝到用户内存,然后kernel返回结果,用户进程才解除block的状态,重新运行起来 因此,blocking IO的特点就是在IO执行的两个阶段都被阻塞了
非阻塞I/O模型

当用户进程发出read操作时,如果kernel中的数据还没有准备好,那么它并不会block用户进程,而是立刻返回一个error 从用户进程角度讲,它发起一个read操作后,并不需要等待,而是马上就得到一个结果 用户进程判断结果是一个error时,它就知道数据还没有准备好,于是它可以再次发送read操作 一旦kernel中的数据准备好了,并且又再次收到了用户进程的system call,那么它马上就将数据拷贝到用户空间,然后返回
IO多路复用模型

Select同步阻塞
1. 每次调用select,都需要把fd(文件句柄)集合从用户态拷贝到内核态,这个开销在fd多时会很大
2. 同时每次调用select都需要在内核遍历传递进来的所有fd,这个开销在fd很多时也很大
3. select支持的文件描述符数量太小了,默认是1024
异步I/O模型

Epoll
1. 支持一个进程打开大数目的socket描述符
2. IO效率不随FD数目增加而线性下降
3. 使用mmap加速内核与用户空间的消息传递
4. 边缘触发和水平触发
事件驱动模型

目前大部分的UI编程都是事件驱动模型,如很多UI平台都会提供onClick()事件,这个事件就代表鼠标按下事件
1. 有一个事件(消息)队列
2. 鼠标按下时,往这个队列中增加一个点击事件(消息)
3. 有个循环,不断从队列取出事件,根据不同的事件,调用不同的函数,如onClick()、onKeyDown()等
4. 事件(消息)一般都各自保存各自的处理函数指针,这样,每个消息都有独立的处理函数
更多详细参考 http://www.cnblogs.com/alex3714/articles/5876749.html
IO网络模型的更多相关文章
- 图文解说:Nginx+tomcat配置集群负载均衡
图文解说:Nginx+tomcat配置集群负载均衡 博客分类: appserver nginxTomcatUbuntuLinux网络应用 作者:niumd Blog:http://ari.iteye ...
- Nginx+tomcat配置集群负载均衡
开发的应用采用F5负载均衡交换机,F5将请求转发给5台hp unix服务器,每台服务器有多个webserver实例,对外提供web服务和socket等接口服务.之初,曾有个小小的疑问为何不采用开源的a ...
- Netty与网络编程
Netty什么? Netty项目是一个提供异步事件驱动网络应用框架和快速开发可维护的高性能高扩展性服务端和客户端协议工具集的成果.换句话说,Netty是一个NIO客户端服务端框架,它使得快速而简单的开 ...
- 8.Nginx基本概述
io网络模型介绍 1.介绍Nginx Nginx是一个高性能的HTTP和反向代理web服务器 2.常见的Web服务器 httpd Nginx Tengine OpenResty 3.介绍Nginx应用 ...
- nginx基本概述
上级回顾: 1.NFS 2.Sersync 3.SSH 1.ssh使用两种登录服务器的方式,哪两种? 密码 用户名 + 密码 秘钥 用户名 + 秘钥(私钥) 公钥加密 私钥解密 2.大家常说的 塞ke ...
- 浅析Reactor设计模式
简介:Reactor 设计模式是一种事件驱动的设计模式,将一个或者多个客户端请求分发到不同的处理器上,来提升事件处理的效率.主要的应用场景就是java NIO当中用户处理网络请求.使用的是异步非阻塞I ...
- VS2015编译GEOS
下载链接:http://trac.osgeo.org/geos/ 1. 打开cmake,加载geos源码和定位geos的工程存放位置: 2.点击configure,会报错,首先设置CMAKE_INST ...
- windows网络模型之重叠IO的使用
大部分内容转载自https://blog.csdn.net/piggyxp/article/details/114883 目录: 1. 重叠模型的优点 2. 重叠模型的基本原理 3. 关于重叠模型的基 ...
- windows网络模型之重叠IO(完成例程)的使用
#include <WINSOCK2.H> #include <stdio.h> #define PORT 5150 #define MSGSIZE 1024 #pragma ...
随机推荐
- NIO内存映射
磁盘的IO因为速度较慢,可能成为系统运行的瓶颈.所以磁盘的IO在操作系统级实现了提前读,延迟写的机制来提升IO的性能. 提前读就是一次读取需求的数据的同时多读接下来的一段数据至OS缓冲区中,延迟写就是 ...
- 洛谷 [P3973] 线性代数
最大权闭合子图,神题 这不是线性代数,这是网络流. 我们看见这是一堆矩阵的运算,而且最后变成了一个数,那么我们就想到,把这个矩阵乘法的过程用具体的数字推出来 我们发现,a是一个01矩阵,然后其实就可以 ...
- CF 716E. Digit Tree [点分治]
题意:一棵树,边上有一个个位数字,走一条路径会得到一个数字,求有多少路径得到的数字可以整除\(P\) 路径统计一般就是点分治了 \[ a*10^{deep} + b \ \equiv \pmod P\ ...
- Windows下快速建立cocos2d-x项目
准备工作 1.根据当前系统版本,下载对应版本的Python 32位下载地址:http://www.python.org/ftp/python/2.7.5/python-2.7. ...
- Windows Server 2016-Active Directory域服务概述
活动目录(AD)是一种目录服务是微软用于开发Windows域网络.它被包含在大多数Windows Server 操作系统中作为一组进程和服务.最初,Active Directory只负责集中式域管理. ...
- LNMP环境下搭建wordpress
WordPress 下载WordPress安装包,可以直接wget获取也可以ftp上传,解压到/usr/share/nginx/html/blog-wp,访问index.php即进行安装: wor ...
- 拥抱.NET Core系列:MemoryCache 初识
Cache是一个绝大多数项目会用到的一个技术,说起到缓存可能就联想到 Set.Add.Get.Remove.Clear 这几个方法.那么在.NET Core中微软给我们带来了什么样的缓存体验呢?今天我 ...
- Halcon一日一练:图像拼接技术2:步骤与例程
上一篇主要介绍了图像拼接的一些原理和方法,这一篇将主要介绍步骤和例程: 接上一篇: 基于特征的接拼方法,分为四个步骤 1.特征检测:从图像中检测出显著且独特的图像特征,诸如:闭合区域,直线段,边缘,轮 ...
- wired-wireless_priority
有线网卡和无线网卡同时上网,优先级切换的设置方法 默认有线网卡优先权高 Q:如果你想改为无线高,How do? A: ①进入网络属性的有线网卡的连接属性,选择TCP/IP属性,点"高级... ...
- C/C++语言简介之优缺点
一.优点1.简洁紧凑.灵活方便 C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写.把高级语言的基本结构和语句与低级语言的实用性结合起来.C 语言可以像汇编语言一样对位.字节和地址 ...