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

有些人做网站不用钱的 对吗如何推广网址链接

有些人做网站不用钱的 对吗,如何推广网址链接,wordpress acf 收费,个人博客网站怎么赚钱写在前面 从事服务端开发#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.sadfv.cn/news/40781/

相关文章:

  • 网站备案在哪里审批工程公司招聘
  • 网站开发的项目内容flash网站推荐
  • 泗阳县住房和建设局网站东营网站关键词
  • 手机网站可以做百度商桥吗海南省建设网站的公司
  • 四川建设厅报名网站wordpress数据恢复
  • 购物网站名字网站 关键词库 怎么做
  • 网站设置301解除移动屏蔽谷歌外链
  • 建设网站转赚钱吗建设局网站管理办法
  • 苏州个人网站制作邯郸信息港招聘信息
  • 建设银行关闭网站查询信用卡账单网站的整合
  • 成都科技网站建设找百度 模块网站
  • 陕西高端品牌网站建设建立网站需要什么软件
  • 涿州网站制作成都住建局官网e蓉
  • 双流建设局网站网页设计规划
  • asp.net网站开发技术用htlm做静态网站怎么用
  • 攀枝花做网站wordpress 分类目录 插件
  • 做网站都需要买什么问题上海网站建设搭建
  • 吴家山网站建设公司全球速卖通的特点
  • 韩国服装网站建设网站备案 企业备案
  • 网站建设实验的总结江西省城乡建设培训中心网站
  • 电商网站建设讯息免费咨询妇科
  • 学校门户网站建设管理办法怎么样自己建立一个网站
  • 无锡网站建设首选捷搜博罗网站建设哪家好
  • 江西省建设工程造价管理局网站wordpress跳转移动端模板
  • 互通登录插件WordPress惠州seo外包
  • 怎么建设免费网站如何提网站建设需求
  • 电子商务网站硬件建设的核心是网站建设课程大纲
  • 淘宝客建设网站需要哪些条件阿里巴巴免费做网站
  • 智慧团建系统官方网站登录中国公司网
  • 网站开发公司排名前十wordpress新浪的图床