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

深圳做装修网站费用多少帮客户做传销网站

深圳做装修网站费用多少,帮客户做传销网站,网页设计职业,上海企业网站备案一、用户空间和内核空间 以Linux系统为例#xff0c;ubuntu和CentOS是Linux的两种比较常见的发行版#xff0c;任何Linux发行版#xff0c;其系统内核都是Linux。我们在发行版上操作应用#xff0c;如Redis、Mysql等其实是无法直接执行访问计算机硬件(如cpu#xff0c;内存…一、用户空间和内核空间 以Linux系统为例ubuntu和CentOS是Linux的两种比较常见的发行版任何Linux发行版其系统内核都是Linux。我们在发行版上操作应用如Redis、Mysql等其实是无法直接执行访问计算机硬件(如cpu内存网卡等)的操作的所以需要借助发行版去访问内核再通过内核去访问计算机硬件。 那么问题来了我们想要用户的应用来访问计算机就必须要对外暴露一些接口从而实现对内核的操控但是内核本身上来说也是一个应用所以他本身也需要一些内存cpu等设备资源用户应用本身也在消耗这些资源如果不加任何限制用户随意地去操作系统资源就有可能导致一些冲突甚至有可能导致系统出现无法运行的问题所以把用户和内核隔离开是十分有必要的。因此用户空间和内核空间应运而生。   在Linux系统中权限分成两个等级0和3用户空间只能执行受限的命令(Ring3)而且不能直接调用系统资源而内核可以执行特权命令(Ring0)调用一切系统资源。所以一般情况下用户的操作是运行在用户空间而内核运行的数据是在内核空间的而某些情况下一个应用程序需要去调用一些特权资源其就要去调用一些内核空间的操作所以此时他需要在用户态和内核态之间进行切换。 注 Linux系统为了提高IO效率在用户空间和内核空间都加入缓冲区。 写数据时要把用户缓冲区的数据拷贝到内核缓冲区然后写入设备 读数据时要从设备读取数据到内核缓冲区然后拷贝到用户缓冲区。 上图是用户应用读取数据时的流程图其中用户在两个阶段需要等待 驱动程序从硬件上读取数据内核会将读取到的数据写入到内核缓冲区将内核缓冲区的数据拷贝到用户缓冲区中 这也是不同网络模型主要优化的两个方面在理解了上述流程后我们正式进入到网络模型的介绍中 二、网络模型 1. 阻塞IO(Blocking IO) 用户读取数据时会先发起一个recvform命令尝试从内核上加载数据如果内核没有数据那么用户就会阻塞等待此时内核会去从硬件上读取数据内核读取数据之后再把数据拷贝到用户空间并且返回OK整个过程都是阻塞等待的这就是阻塞IO。 总结 顾名思义阻塞IO就是两个阶段都必须阻塞等待。 阶段一 用户进程尝试读取数据比如网卡数据此时数据尚未到达内核需要等待数据此时用户进程也处于阻塞状态 阶段二 数据到达并拷贝到内核缓冲区代表已就绪将内核数据拷贝到用户缓冲区拷贝过程中用户进程依然阻塞等待拷贝完成用户进程解除阻塞处理数据 2. 非阻塞IO(Nonblocking IO) 用户读取数据时会先发起一个recvform命令尝试从内核上加载数据如果内核没有数据会返回给用户一个异常之后用户会再次发起请求直至数据就绪之后把数据拷贝到用户空间并且返回OK在拷贝数据到用户空间时是阻塞等待的这就是非阻塞IO。 总结 非阻塞IO的recvfrom操作会立即返回结果而不是阻塞用户进程。 阶段一 用户进程尝试读取数据比如网卡数据此时数据尚未到达内核需要等待数据返回异常给用户进程用户进程拿到error后再次尝试读取循环往复直到数据就绪 阶段二 将内核数据拷贝到用户缓冲区拷贝过程中用户进程依然阻塞等待拷贝完成用户进程解除阻塞处理数据 可以看到在非阻塞IO模型中用户进程在第一个阶段是非阻塞只有第二个阶段是阻塞状态。不过虽然是非阻塞但其采用的是再次请求因此性能并没有得到提高。而且忙等机制会导致CPU空转CPU使用率暴增。 3. IO多路复用(IO Multiplexing) 无论是阻塞IO还是非阻塞IO用户应用在一阶段都需要调用recvfrom来获取数据差别在于无数据时的处理方案我们前面已经分析过这两种方案性能都不好。   而在单线程情况下只能依次处理IO事件如果正在处理的IO事件恰好未就绪(数据不可读或不可写)线程就会被阻塞这会导致所有IO事件都必须等待(即使已经有就绪的事件)性能自然会很差。我们知道Redis的网络模型就是IO多路复用那么IO多路复用有何优化呢   在IO多路复用网络模型中用户去读取数据时不再去直接调用recvfrom了而是调用select函数select函数会将需要监听的数据交给内核由内核去检查这些数据是否就绪了如果说这个数据就绪了就会通知应用程序数据就绪然后来读取数据再从内核空间把数据拷贝给用户空间完成数据处理如果所有的数据都没就绪此时再进行等待。 总结   文件描述符(File Descriptor)简称FD是一个从0开始的无符号整数用来关联Linux中的一个文件。在Linux中一切皆文件例如常规文件、视频、硬件设备等当然也包括网络套接字(Socket)。   IO多路复用利用单个线程来同时监听多个FD并在某个FD可读、可写时得到通知从而避免无效的等待充分利用CPU资源。 阶段一 用户进程调用select指定要监听的FD集合核监听FD对应的多个Socket任意一个或多个Socket数据就绪则返回readable此过程中用户进程阻塞 阶段二 用户进程找到就绪的Socket依次调用recvfrom读取数据内核将数据拷贝到用户空间用户进程处理数据 此外在监听FD的方式、通知的方式有多种实现常见的有 selectpollepoll 其中select和poll相当于是当被监听的数据准备好之后他会把你监听的FD整个数据都发给你你需要到整个FD中去找哪些是就绪的需要通过遍历的方式所以性能也并不是那么好。而epoll相当于数据准备好了之后会把准备好的数据直接发给你省去了遍历的动作因此性能最好。 4. 信号驱动IO(Signal Driven IO) 信号驱动IO是与内核建立SIGIO的信号关联并设置回调当内核有FD就绪时会发出SIGIO信号通知用户期间用户应用可以执行其它业务无需阻塞等待。 总结   当有大量IO操作时信号较多SIGIO处理函数不能及时处理可能导致信号队列溢出而且内核空间与用户空间的频繁信号交互性能也较低。 阶段一 用户进程调用sigaction注册信号处理函数内核返回成功开始监听FD用户进程不阻塞等待可以执行其它业务当内核数据就绪后回调用户进程的SIGIO处理函数 阶段二 收到SIGIO回调信号调用recvfrom读取数据内核将数据拷贝到用户空间用户进程处理数据 5. 异步IO(Asynchronous IO) 异步IO不仅仅是用户态在试图读取数据后不阻塞而且当内核的数据准备完成后也不会阻塞。 总结   异步IO会由内核将所有数据处理完成后包含将数据写入到用户空间中才算完成所以性能极高不会有任何阻塞全部都由内核完成。可以看到异步IO模型中用户进程在两个阶段都是非阻塞状态。不过其在高并发的情况下也存在一些问题比如用户应用发送了过多的IO请求因为IO操作比较费时那么在内核空间可能会积累很多IO任务从而导致系统因为内存占用过多而崩溃。所以异步IO需要采用合适的限流措施。 三、对比
http://www.hkea.cn/news/14311270/

相关文章:

  • 网站开发方向导航网站织梦模板
  • 桥梁建设 网站网站开发系统绿色版
  • 长虹电视网站建设中网络购物网站大全
  • 重庆网红打卡景点大连百度搜索排名优化
  • 汕头网站制作电话凡科免费个人做网站有弊吗
  • 网站开发过程可分为企业网站建设 属于什么费用
  • 免费造网站wordpress插件汉化教程
  • 网站建设付款方式品牌营销推广方案怎么做
  • 网站推广的平台网站获取信息
  • 培训网站 建江山企业自适应网站建设首选
  • 网站建设找酷风了解网站建设
  • 网站怎么办网站被k怎么恢复
  • 鞍山网站页设计制作建设与管理局网站
  • 玉溪网站建设现状wordpress评论后不显示
  • 怎么做一淘宝客网站吗wordpress集成文库插件
  • 上海营销型网站制作湖北专业网站制作公司
  • 管城郑州网站建设wordpress 页面和菜单
  • 怎么创建网站自己创建wordpress官网插件
  • 建设好网站能赚到钱吗?成都建网站要多少钱
  • 珠海网站哪家好wordpress如何qq登录界面
  • 西宁市网站设计企业软件开发合同范本免费下载
  • 凡科建站怎么删除网站建设the7 wordpress哪个好
  • 做外贸推广的网站如何做互联网创业
  • 网站备案通过wordpress前台显示英文
  • 个人网站名称大全举报网站建设
  • 做平面设计在什么网站能挣钱服务器怎么建网站
  • 网站建设制作网站合肥婚恋网站建设
  • 防水补漏在哪个网站做宣传好做办公室的网站
  • 杭州网站建设杭州京津冀协同发展规划纲要
  • 做我女朋友程序网站酷家乐装修设计官网