当前位置: 首页 > news >正文

网站制作ppt杭州网站的特点

网站制作ppt,杭州网站的特点,如何解压wordpress,个人网站做多久有效果本文我们主要来了解一下Unix/Linux下5种网络IO模型#xff1a;blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO的基本原理#xff0c;更好的理解在高级语言中的异步编程#xff0c;一起来看看吧#xff0c;希望对大家学习linux有所帮助。…本文我们主要来了解一下Unix/Linux下5种网络IO模型blocking IO, nonblocking IO, IO multiplexing, signal driven IO, asynchronous IO的基本原理更好的理解在高级语言中的异步编程一起来看看吧希望对大家学习linux有所帮助。写在前面为了更好的理解下面提到的Linux下5种网络IO的概念我们还是有必要先理清几个概念。1.程序空间与内核空间在Linux中对于一次读取IO的操作数据并不会直接拷贝到程序的程序缓冲区。它首先会被拷贝到操作系统内核的缓冲区中然后才会从操作系统内核的缓冲区拷贝到应用程序的缓冲区。p.s: 最后一句话非常重要重复一遍。1. Waiting for the data to be ready(等待数据到达内核缓冲区)2.Copying the data from the kernel to the process(从内核缓冲区拷贝数据到程序缓冲区)2.阻塞与非阻塞阻塞就是说我们某一个请求不能立即得到返回应答否则就可以理解为非阻塞。3.同步IO与异步IO这里先直接引用Stevens(POSIX)在Unix网络编程中的定义A synchronous I/O operation causes the requesting process to be blocked until that I/O operation completes. An asynchronous I/O operation does not cause the requesting process to be blocked.对于同步与异步我们可以用一个简单的生活场景来描述。当我们排队在实体店买东西可以视作同步而网购则可以视作异步。实体店排队这种同步情形显然是非常的浪费时间等待的这段时间我们被阻塞住了不能干其他的事情而网购只要我们提交一下订单之后其他什么都不用管了商品到了快递员给我们发送一个信号(打电话)我们直接到门口去拿等待的这段时间我们可以用来撸代码。p.s: 等你阅读完文章的后面部分回过头来看异步其实就是将等待的这段时间去处理IO操作把CPU(我们的大脑)让出来做其他更有价值的事情(撸代码)而不是像同步那样去傻傻地排队。更加详细准确的定义可以在阅读完本文后面部分后参考维基百科。4.文件描述符在Linux下面一切皆文件 文件描述符(file descriptor)是内核为文件所创建的索引 所有I/O操作都通过调用文件描述符(索引)来执行包括下面我们要提到的socket。Linux刚启动的时候会自动设置0是标准输入1是标准输出2是标准错误。5种网络IO模型1.blocking IO(阻塞IO)如图所示进程调用一个recvfrom请求但是它不能立刻收到回复直到数据返回然后将数据从内核空间复制到程序空间。这里我们再次回顾开篇提到的两个过程1.Waiting for the data to be ready(等待数据到达内核缓冲区)2.Copying the data from the kernel to the process(从内核缓冲区拷贝数据到程序缓冲区)注意到没有在上面这两个过程中进程都处于blocked(阻塞)状态在等待数据返回的过程中不能空闲出来干其他的事情。2.nonblocking IO(非阻塞IO)当我们设置一个socket为nonblocking(非阻塞)相当于告诉内核当我们请求的IO操作不能立即得到返回结果不要把进程设置为sleep状态而是返回一个错误信息(下图中的EWOULDBLOCK)。我们来分析一下图片中的整个流程。前三次我们调用recvfrom请求但是并没有数据返回所以内核只能返回一个错误信息(EWOULDBLOCK)。但是当我们第四次调用recvfrom数据已经准备好了然后将它从内核空间复制到程序空间。在非阻塞状态下我们的过程一(wait for data)并不是完全的阻塞的但是过程二(copy data from kernel to user)依然处于一个阻塞状态。3.IO multiplexing(IO复用)IO复用的好处是我们可以通过(select/poll/epoll)一个时刻处理多个文件描述符这里以select为例来分析一下。IO复用实际上也是完全阻塞的请仔细看图(图中我们有两个return前面我们都只有一个return)Stevens在书中提到这里并没有阻塞在recfrom阶段而是阻塞在select阶段其实这样说并不是非常的严谨因为recform其实也是一个阻塞过程(图中也描述了)recvfrom过程中进程除了等待copy data from kernel to user以外并不能空闲出来干其他事情。两个过程的都是阻塞的看起来IO复用和阻塞IO相比似乎并没有什么优势而且还需要两个return但是这里注意在IO复用中我们可以同时监听多个文件描述符。4.signal driven IO(信号驱动IO)我们也可以使用信号驱动IO要求内核通知我们当文件描述符准备就绪以后发送相应的信号。我们根据图片来分析一下。 阶段1: 我们首先设置socket为一个信号驱动IO并且通过sigaction system call安装一个signal handler注意这个过程是瞬时的所以这个阶段是非阻塞的。 阶段2 : 当数据已经准备好了以后一个SIGIO信号传送给我们的进程告诉我们数据准备好了然后进程开始等待数据从内核空间复制到程序空间(copy data from kernel to user)这个过程是阻塞的因为我们的进程只能等待数据复制完毕。5.asynchronous IO(异步IO)我们来看一下异步的概念异步就是说对于上面两个步骤(wait for data 和copy of the data from the kernel to our buffer)当它们完成的时候会自动通知进程在这段时间里面进程什么都不用操心就像网购一样下了单什么也不用管了等着快递员通知我们(即我们通常所说的callback)。 相比前面的信号驱动IO异步IO两个阶段都是非阻塞的。6.小结阻塞式IO(默认)非阻塞式IO(nonblock)IO复用(select/poll/epoll)signal driven IO(信号驱动IO)都是属于同步型IO因为在第二个阶段: 从内核空间拷贝数据到程序空间的时候不能干别的事。只有异步I/O模型(AIO)才是符合我们上面对于异步型IO操作的含义在1.wait for data2.copy data from kernel to user这两个等待/接收数据的时间段内进程可以干其他的事情只要等着被通知就可以了。打开App阅读手记
http://www.zqtcl.cn/news/593429/

相关文章:

  • 美丽寮步网站建设价钱杭州网站设计询问蓝韵网络
  • 毕节网站建设公司网站职业技术培训学校
  • 果洛wap网站建设比较好17岁在线观看免费高清完整版
  • 一级a做爰片在线看免播放器网站一个网站突然打不开
  • 聊城网站开发培训wordpress实时预览载入中
  • 网站设计文章国际转运网站建设
  • 南充市建设厅官方网站购物网站设计说明
  • 防疫网站网页设计wordpress不同侧边栏
  • 网站的建设多少钱长春市招标建设信息网
  • 网站加速代码百度浏览器app
  • 关于配色的网站企业宣传册文案范文
  • 免费推广网站教程湖南中核建设工程公司官方网站
  • 莱阳网站建设公司彩票类网站是如何做代理的
  • 食品公司网站建设广州做网站制作公司
  • 网站上传服务器教程搜索网站存在的关键字
  • 天河建设网站多少钱网络公司网站样本
  • 做的精美的门户网站推荐附近编程培训机构
  • 台州黄岩做网站太原网站建设王道下拉惠
  • 深圳设计网站公司互联网服务平台投诉中心
  • 做seo网站优化哪家强济南网站建设公司排名
  • tp5网站文档归档怎么做手机虚拟机哪个好用
  • 网站建设公司的业务范围万网做网站多少钱
  • 做网站要用写接口6wordpress 汽车租赁
  • 网站开发方向paypal账号注册
  • 如何选择做pc端网站重庆平台网站建设企业
  • 一个人做网站好累电子商城采购流程
  • 网站制作维护价格信息网站建设方案
  • 如何选择建网站公司能看人与动物做的网站
  • 温州网站建设方案外包不能访问子目录的网站
  • 建设拼多多一样网站需要多少钱wordpress企业站主题免费