全球领先的IT技术网站 |首页 |Tags |网站地图

您现在正在浏览:首页 » 综合频道 » 系统 » Linux » httpd服务归纳:浅谈I/O模型

RSS订阅

httpd服务归纳:浅谈I/O模型

暂无Tags标签
摘要:

 httpd服务归纳:浅谈I/O模型

 

1. 四种理论的I/O模型

1 调用者(服务进程):

阻塞: 进程发起I/O调用,如果调用为完成,进程被挂起休眠,不能再执行其他功能

非阻塞:进程发起I/O调用,被调用的函数完成之前,依然可以执行其他功能

2 被调用函数或过程(系统调用I/O读写操作)

同步: 函数或功能被进程调用时,不立即返回值,直到此调用完成

异步: 函数或功能被进程调用时,不能立即完成则返回未完成状态,完成后通知调用进程

3)四中理论模型

同步阻塞

同步非阻塞(几乎没人使用)

异步阻塞

异步非阻塞: 真正的异步I/O

2. 五种网络服务中的I/O模型

1 同步阻塞模型

工作进程调用I/O请求库函数后,工作进程被阻塞等待I/O完成第一阶段,数据从硬盘加载到内核空间,此时工作进程在库函数返回数据之前继续被阻塞参与完成第二阶段数据从内核空间复制到用户进程空间的过程,最后拿到数据。

2I/O复用(同步阻塞模型)select(), poll()

工作进程调用一个管理I/O的特殊库函数,此库函数可以接受并管理多个I/O请求,工作进程则可以同时等待多个I/O请求,虽然是阻塞,但是阻塞在多个进程上,可以提高效率。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。

3) 同步非阻塞(盲等待模型)

工作进程调用I/O库函数,工作进程不需要I/O完成依旧可以处理其他事物,但是需要反复查看I/O是否完成。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。

4 事件触发模型(同步非阻塞) epoll(), kqueue()

工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段依然需要工作进程参与库函数把内核空间数据复制到用户空间,第二阶段依旧阻塞。

5 全异步:AlO 调用

全异步1 工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段不需要工作进程参与库函数把内核空间数据复制到用户空间,库函数完成复制后自行返回数据给工作进程

全异步2 工作进程调用I/O库函数,工作进程不需要等待I/O完成,内核空间I/O完成后会通过事件通知进程。第二阶段不需要库函数从内核空间复制数据,而是通过内存映射来实现(mmap)。

实现以上功能,libevent

 

0 »

综合专题

Linux那些发行版的事儿
Linux那些发行版的事儿

Peter MacDonald说,作为一个操作系统,至少需要在内核基础上绑定TCP/IP和X窗口这样的基本功能,于是有了Softlanding Linux System。美国大学生Patrick Volkerding说,SLS维护的不好,于是有了Slackware。美国大学生Ian Murdock说,SLS维护的不好,而且我们需要一个秉承Linux和GNU的开放精神的发行版,于是有了Debian。

web缓存服务
web缓存服务

超文本传输协议(HTTP)是互联网基本协议之一,主要用于分布式、协作式、超媒体的信息系统。通过HTTP,客户端向服务器端发送资源请求, 服务器端返回所请求资源如图像、样式表和JavaScript。早期的Web开发者已经认识到,Web流量会增长得越来越快。为了满足永无止境的Web需求,Web缓存正成为优化特定时间内数据传送量的至...

Linux虚拟化技术
Linux虚拟化技术

虚拟化技术的应用十分广泛, 当前虚拟化技术主要关注于服务器的虚拟化, 或在单个主机上寄存多个独立的操作系统。本专题主要介绍Linux上操作系统级的虚拟化技术,以及相关虚拟化技术的应用。随着处理器应用虚拟化技术(VT)的问世,虚拟化越来越受到业界的关注。相对于传统的软件虚拟化解决方案,虚拟化技术基于硬件的完全虚...

最新资讯

相关热门文章

  • 本文暂无Tags标签