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

广告投放数据分析报告哈尔滨seo优化服务商

广告投放数据分析报告,哈尔滨seo优化服务商,网站建设推广新业务,淘宝网站后台怎么做写在前面 从事服务端开发#xff0c;少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要#xff0c;nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。 本文会从网卡接收数据的流程讲起#xff0c;串联起CPU中断、操作系统进程调度… 写在前面   从事服务端开发少不了要接触网络编程。epoll作为linux下高性能网络服务器的必备技术至关重要nginx、redis、skynet和大部分游戏服务器都使用到这一多路复用技术。   本文会从网卡接收数据的流程讲起串联起CPU中断、操作系统进程调度等知识再一步步分析阻塞接收数据、select到epoll的进化过程最后探究epoll的实现细节。目录 一、从网卡接收数据说起二、如何知道接收了数据三、进程阻塞为什么不占用cpu资源四、内核接收网络数据全过程五、同时监视多个socket的简单方法六、epoll的设计思路七、epoll的原理和流程八、epoll的实现细节九、结论 一、从网卡接收数据说起   下图是一个典型的计算机结构图计算机由CPU、存储器内存、网络接口等部件组成。了解epoll本质的第一步要从硬件的角度看计算机怎样接收网络数据。      下图展示了网卡接收数据的过程。在①阶段网卡收到网线传来的数据经过②阶段的硬件电路的传输最终将数据写入到内存中的某个地址上③阶段。这个过程涉及到DMA传输、IO通路选择等硬件有关的知识但我们只需知道网卡会把接收到的数据写入内存。 二、如何知道接收了数据   了解epoll本质的第二步要从CPU的角度来看数据接收。要理解这个问题要先了解一个概念——中断。   计算机执行程序时会有优先级的需求。比如当计算机收到断电信号时电容可以保存少许电量供CPU运行很短的一小段时间它应立即去保存数据保存数据的程序具有较高的优先级。   一般而言由硬件产生的信号需要cpu立马做出回应不然数据可能就丢失所以它的优先级很高。cpu理应中断掉正在执行的程序去做出响应当cpu完成对硬件的响应后再重新执行用户程序。中断的过程如下图和函数调用差不多。只不过函数调用是事先定好位置而中断的位置由“信号”决定。   以键盘为例当用户按下键盘某个按键时键盘会给cpu的中断引脚发出一个高电平。cpu能够捕获这个信号然后执行键盘中断程序。下图展示了各种硬件通过中断与cpu交互。   现在可以回答本节提出的问题了当网卡把数据写入到内存后网卡向cpu发出一个中断信号操作系统便能得知有新数据到来再通过网卡中断程序去处理数据。 三、进程阻塞为什么不占用cpu资源   了解epoll本质的第三步要从操作系统进程调度的角度来看数据接收。阻塞是进程调度的关键一环指的是进程在等待某事件如接收到网络数据发生之前的等待状态recv、select和epoll都是阻塞方法。了解“进程阻塞为什么不占用cpu资源”也就能够了解这一步。   为简单起见我们从普通的recv接收开始分析先看看下面代码 //创建socket int s socket(AF_INET, SOCK_STREAM, 0); //绑定 bind(s, ...) //监听 listen(s, ...) //接受客户端连接 int c accept(s, ...) //接收客户端数据 recv(c, ...); //将数据打印出来 printf(...)     这是一段最基础的网络编程代码先新建socket对象依次调用bind、listen、accept最后调用recv接收数据。recv是个阻塞方法当程序运行到recv时它会一直等待直到接收到数据才往下执行。 工作队列   操作系统为了支持多任务实现了进程调度的功能会把进程分为“运行”和“等待”等几种状态。运行状态是进程获得cpu使用权正在执行代码的状态等待状态是阻塞状态比如上述程序运行到recv时程序会从运行状态变为等待状态接收到数据后又变回运行状态。操作系统会分时执行各个运行状态的进程由于速度很快看上去就像是同时执行多个任务。 下图中的计算机中运行着A、B、C三个进程其中进程A执行着上述基础网络程序一开始这3个进程都被操作系统的工作队列所引用处于运行状态会分时执行。 工作队列中有A、B和C三个进程 等待队列 当进程A执行到创建socket的语句时操作系统会创建一个由文件系统管理的socket对象如下图。这个socket对象包含了发送缓冲区、接收缓冲区、等待队列等成员。等待队列是个非常重要的结构它指向所有需要等待该socket事件的进程。 当程序执行到recv时操作系统会将进程A从工作队列移动到该socket的等待队列中如下图。由于工作队列只剩下了进程B和C依据进程调度cpu会轮流执行这两个进程的程序不会执行进程A的程序。所以进程A被阻塞不会往下执行代码也不会占用cpu资源。 ps操作系统添加等待队列只是添加了对这个“等待中”进程的引用以便在接收到数据时获取进程对象、将其唤醒而非直接将进程管理纳入自己之下。上图为了方便说明直接将进程挂到等待队列之下。 唤醒进程 当socket接收到数据后操作系统将该socket等待队列上的进程重新放回到工作队列该进程变成运行状态继续执行代码。也由于socket的接收缓冲区已经有了数据recv可以返回接收到的数据。   转载于:https://www.cnblogs.com/chihirotan/p/11521057.html
http://www.zqtcl.cn/news/677433/

相关文章:

  • 北京网站建设的公网站订票策划方案
  • 做搜狗网站快速排名福田瑞沃自卸车
  • 帮人做图挣外快的网站做网站刷流量挣钱吗
  • 网站改版被降权从0到建网站
  • dedese网站牛客网官网
  • 网站到期续费要多少钱如何做一个电商
  • 试述网站建设的步骤石家庄公司网站如何制作
  • 百度推广自己做网站吗韶关东莞网站建设
  • 濮阳建站建设室内设计效果图图片
  • 上海找做网站公司国外网站国内做好还是国外做
  • 一个vps建两个网站怎么弄数据库济南地产行业网站开发
  • 网站到期请续费站长网
  • 个人网站名字可以用哪些促销网站怎么做
  • 网站开发需要提供哪些东西镇江网络违法网站
  • 都江堰建设局官方网站wordpress分享此文章
  • 素材网站整站下载赣州网站建设信息
  • 网上做问卷报酬不错的网站是iis 如何新建网站
  • 济南建设监理协会网站雄安网站建设单位
  • 微网站模板怎么用公司网站无法打开
  • 查询网站备案进度做外贸的数据网站
  • 广州建网站哪儿济南兴田德润简介室内设计效果图手绘图
  • 网站页面设计要求做搜狗网站优化
  • 家纺代发网站建设百度怎么做开锁网站
  • 哈尔滨网站建设有哪些做互联网项目怎么推广
  • 网站首页代码怎么做温州设计集团有限公司官网
  • 如何更换网站图片自己做头像的网站漫画
  • 网站设计风格确认书网站标题 没有排名
  • iis内网站设置允许脚本执行免费行情100个软件
  • 网站如何做团购网站域名做链接怎么做
  • 绿色蔬菜网站模板怎么做网站网站的代理