zoukankan      html  css  js  c++  java
  • 高性能服务器程序框架

    I/O模型:

    阻塞I/O:针对阻塞I/O执行的系统调用可能因为无法立即完成而被操作系统挂起,直到等待的事件发生为止。针对非阻塞I/O执行的系统调用总是立即返回,而不管事件是否已经发生,如果事件没有立即发生,这些系统调用返回-1,和出错的情况一样。显然只有在事件已经发生的情况下操作非阻塞I/O才能提高程序的效率,因此,非阻塞I/O通常要和其他I/O通知机制一起使用,比如I/O复用和SIGIO信号

    I/O复用:应用程序通过I/O复用函数向内核注册一组事件,内核通过I/O复用函数把其中就绪的事件通知给应用程序,常用的I/O复用函数是select、poll和epoll.I/O复用函数本身是阻塞的,它们能提高程序效率的原因在于它们具有同时监听多个I/O事件的能力。

    SIGIO信号:信号触发读写就绪事件,用户程序执行读写操作,程序没有阻塞阶段

    以上三种I/O模型都是同步I/O模型,I/O的读写操作,都是在I/O事件发生之后,由应用程序来完成的。异步I/O机制,内核执行读写操作并触发读写完成事件,程序没有阻塞阶段。

    两种高效的事件处理模式:

    reactor模式:主线程(I/O处理单元)只负责监听文件描述符上是否有事件发生,有的话就立即将该事件通知工作线程,除此之外,主线程不做任何其他实质性的工作,读写数据、接受新的连接以及处理客户请求均在工作线程中完成。

    proactor模式:所有I/O操作都交给主线程和内核来完成,工作线程仅仅负责业务逻辑

  • 相关阅读:
    重启进程
    linux如何查看端口被哪个进程占用?
    Web服务器磁盘满深入解析及解决
    基于Nginx实现访问控制、连接限制
    Tomcat线程模型分析及源码解读
    linux防火墙使用以及配置
    MySQL死锁及解决方案
    tcpdump 命令
    netperf 网络性能测试
    netstat 命令详解
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/5363673.html
Copyright © 2011-2022 走看看